Ekstrak Excel substring dari string

22

Saya mencari cara untuk mengekstraksi substring panjang variabel dari string.

Sel saya akan terlihat seperti:

ABC - DEF
ABCDE - DEF
ABCD - ABC

Saya ingin membagi string pada -karakter, sehingga sel akan menjadi:

ABC
ABCDE
ABCD

Ini harus dilakukan dengan formula dan bukan VBScript.

Saya menggunakan Excel 2010

EDIT

Saya menemukan bahwa dataset tidak selalu mengandung -karakter, artinya tidak boleh ada perubahan.

Pieter van Niekerk
sumber

Jawaban:

26

Masalah ini dapat dipecah menjadi dua langkah:

  1. Temukan indeks dalam string karakter split yang Anda inginkan (dalam hal ini, "-"atau " - ").
  2. Dapatkan substring awalan dari awal teks asli ke indeks split.

The FINDdan SEARCHperintah masing-masing akan mengembalikan indeks diberikan needledalam haystack( FINDcase-sensitive, SEARCHadalah kasus-sensitif dan memungkinkan wildcard). Mengingat itu, kami memiliki:

FIND(search_text, source_cell, start_index)

atau dalam hal ini:

FIND(" - ", A1, 1)

Setelah kita memiliki indeks, kita perlu awalan source_celluntuk melakukan "split". MIDtidak hanya itu:

MID(source_cell, start_index, num_characters)

Menyatukan keduanya, kami memiliki:

=MID(A1,1,FIND(" - ",A1,1))

dengan A1 memiliki teks ABC - DEFmemberi ABC.

Andrew Coleson
sumber
7

Memperluas jawaban Andrew berdasarkan hasil edit Anda: untuk menemukan string karakter untuk dipecah, kami menggunakan FINDfungsi tersebut. Jika FINDgagal menemukan string yang diberikan, itu mengembalikan #VALUE?kesalahan. Jadi kita perlu memeriksa nilai ini dan menggunakan nilai pengganti sebagai gantinya.

Untuk memeriksa semua nilai kesalahan termasuk #VALUE, kami menggunakan ISERRORfungsi, dengan demikian:

=ISERROR(FIND(" - ", A1, 1))

itu akan benar jika FINDfungsi tidak dapat menemukan string "-" di sel A1. Jadi kami menggunakannya untuk memutuskan nilai mana yang akan digunakan:

=IF(ISERROR(FIND(" - ", A1, 1)), A1, MID(A1, 1, FIND(" - ", A1, 1)))

Yang mengatakan bahwa jika perintah find mengembalikan kesalahan, gunakan sel A1 yang tidak dimodifikasi. Jika tidak, lakukan MIDfungsi yang sudah disediakan Andrew.

Anak nakal
sumber
2

Terima kasih @AndrewColeson atas jawaban Anda.

Jadi hanya untuk menambahkan itu, jika Anda ingin semuanya di sisi kanan -, gunakan kode ini:

= MID (A1, LEN (B1) + 3, LEN (A1))

Yang mana:

A1 = ABC - DEF
B1 = =MID(A1,1,FIND(" - ",A1,1))
    B1 = ABC
Therefore A1 = DEF

Kode ini bagus untuk jika Anda memiliki jumlah karakter yang tidak ditentukan setelah -.

Contohnya:

Jika Anda memiliki:

ABC - DEFG
AB - CDEFGH
...
Kevdog777
sumber
ini juga membantu =MID(a1,FIND("-",a1)+1,LEN(a1))tanpa referensi "ekstra seluler"
Mikey
1

Berikut adalah cara yang sangat sederhana untuk mengekstrak karakter ke-5 dari kiri dari string teks di Excel:

Misalkan string karakter ABCDEFGHIJdisimpan dalam sel A1 dalam Excel Spreadsheet, lalu rumus berikut

=RIGHT(LEFT(A1,5),1)

menghasilkan karakter ke-5 dari kiri dalam string, yaitu E.

Ken Brown
sumber
(Apakah tidak ada MIDfungsi di Excel? Saya yakin itu ada dalam warisan Visual Basic, dan itu akan menjadi sesuatu seperti =MID(A1, 5, 1))
Valmiky Arquissandas
0

Rumus berikut ini akan menghapus substring dari [TEXTCOLUMN_1]

mis: jika Anda ingin mengonversi -./thumb/hello.jpguntuk thumb/hello.jpgkemudian gunakan rumus berikut

=SUBSTITUTE([TEXTCOLUMN_1],LEFT([TEXTCOLUMN_1],[NUM_OF_CHARACTERS]),)

[TEXTCOLUMN_1]= nama kolom yang ingin Anda ubah [NUM_OF_CHARACTERS]= jumlah karakter dari sisi kiri yang ingin Anda hapus

Jika Anda ingin menghapus dari sisi kanan maka gunakan berikut ini

=SUBSTITUTE([TEXTCOLUMN_1],RIGHT([TEXTCOLUMN_1],[NUM_OF_CHARACTERS]),)
Alam Zaib
sumber