Isi kandungan
Dalam beberapa artikel baru-baru ini, kami telah melihat cara yang berbeza untuk mengalih keluar aksara daripada rentetan dalam Excel. Hari ini, kami akan menyiasat satu lagi kes penggunaan - cara memadamkan semua sebelum atau selepas aksara tertentu.
Padamkan teks sebelum, selepas atau antara 2 aksara dengan Cari & Ganti
Untuk manipulasi data dalam berbilang sel, Cari dan Ganti ialah alat yang betul. Untuk mengalih keluar sebahagian daripada rentetan sebelum atau mengikut aksara tertentu, berikut ialah langkah yang perlu dilakukan:
- Pilih semua sel yang anda mahu padamkan teks.
- Tekan Ctrl + H untuk membuka dialog Cari dan Ganti .
- Dalam kotak Cari apa , masukkan salah satu daripada gabungan berikut:
- Untuk menghapuskan teks sebelum aksara yang diberikan , taip aksara yang didahului dengan asterisk (*char).
- Untuk mengalih keluar teks selepas aksara tertentu , taip aksara diikuti dengan asterisk (char *).
- Untuk memadamkan subrentetan antara dua aksara , taip asterisk yang dikelilingi oleh 2 aksara (char*char).
- Tinggalkan Ganti dengan kotak kosong.
- Klik Ganti semua .
Sebagai contoh, untuk mengalih keluar semuanya selepas koma termasuk koma itu sendiri, letakkan koma dan tanda asterisk (,*) dalam kotak Cari apa dan anda akan mendapat hasil berikut:
Untuk memadamkan subrentetan sebelum koma , taip asterisk, koma,semuanya selepas koma pertama dalam A2, formula dalam B2 ialah:
=RemoveText(A3, ", ", 1, TRUE)
Untuk memadamkan semua sebelum koma pertama dalam A2, formula dalam C2 ialah:
=RemoveText(A3, ", ", 1, FALSE)
Memandangkan fungsi tersuai kami menerima rentetan untuk pembatas , kami meletakkan koma dan ruang (", ") dalam hujah ke-2 untuk mengelakkan masalah memotong ruang hadapan selepas itu.
Fungsi tersuai kami berfungsi dengan baik, bukan? Tetapi jika anda fikir ia adalah penyelesaian yang komprehensif, anda belum melihat contoh seterusnya lagi :)
Padamkan semua sebelum, selepas atau antara aksara
Untuk mendapatkan lebih banyak pilihan untuk mengalih keluar aksara individu atau teks daripada berbilang sel, mengikut padanan atau kedudukan, tambahkan Suite Ultimate kami pada kotak alat Excel anda.
Di sini, kami akan melihat dengan lebih dekat ciri Alih Keluar Mengikut Kedudukan yang terdapat pada Data Ablebits tab > Teks kumpulan > Alih keluar .
Di bawah, kami akan membincangkan kedua-duanya senario yang paling biasa.
Alih keluar semua sebelum atau selepas teks tertentu
Andaikan semua rentetan sumber anda mengandungi beberapa perkataan atau teks biasa dan anda ingin memadamkan semuanya sebelum atau selepas teks itu. Untuk melakukannya, pilih data sumber anda, jalankan alat Alih Keluar Mengikut Kedudukan dan konfigurasikannya seperti yang ditunjukkan di bawah:
- Pilih Semua aksara sebelum teks atau Semua aksara selepas teks pilihan dan taip teks utama (atau aksara) dalam kotak di sebelahkepadanya.
- Bergantung pada sama ada huruf besar dan huruf kecil harus dianggap sebagai aksara yang berbeza atau sama, tandai atau nyahtanda kotak Huruf kecil .
- Tekan Alih keluar .
Dalam contoh ini, kami mengalih keluar semua aksara sebelum perkataan "ralat" dalam sel A2:A8:
Dan dapatkan dengan tepat hasil yang kami cari:
Alih keluar teks antara dua aksara
Dalam situasi apabila maklumat yang tidak berkaitan adalah antara 2 aksara tertentu, begini caranya anda boleh memadamkannya dengan cepat:
- Pilih Alih keluar semua subrentetan dan taip dua aksara dalam kotak di bawah.
- Jika aksara "antara" harus dialih keluar juga , tandai kotak Termasuk pembatas .
- Klik Alih keluar .
Sebagai sebagai contoh, kami memadamkan segala-galanya di antara dua aksara tilde (~), dan mendapatkan rentetan yang dibersihkan dengan sempurna sebagai hasilnya:
Untuk mencuba ciri berguna lain yang disertakan dengan pelbagai fungsi ini alat, saya menggalakkan anda memuat turun e versi penilaian pada akhir siaran ini. Terima kasih kerana membaca dan berharap dapat berjumpa anda di blog kami minggu hadapan!
Muat turun yang tersedia
Alih keluar aksara pertama atau terakhir - contoh (fail .xlsm)
Suite Ultimate - versi percubaan (fail .exe)
dan ruang (*, ) dalam kotak Cari apa.Sila ambil perhatian bahawa kami menggantikan bukan sahaja koma tetapi koma dan ruang untuk mengelakkan petunjuk ruang dalam keputusan. Jika data anda dipisahkan dengan koma tanpa ruang, kemudian gunakan asterisk diikuti dengan koma (*,).
Untuk memadamkan teks antara dua koma , gunakan asterisk yang dikelilingi dengan koma (,*,).
Petua. Jika anda lebih suka nama dan nombor telefon dipisahkan dengan koma, kemudian taip koma (,) dalam medan Ganti dengan .
Alih keluar sebahagian teks menggunakan Flash Fill
Dalam versi moden Excel (2013 dan kemudian), terdapat satu lagi cara mudah untuk menghapuskan teks yang mendahului atau mengikuti aksara tertentu - ciri Isian Flash. Begini cara ia berfungsi:
- Dalam sel bersebelahan sel pertama dengan data anda, taipkan hasil yang dijangkakan dan tekan Enter .
- Mula menaip nilai yang sesuai dalam sel seterusnya. Sebaik sahaja Excel merasakan corak dalam nilai yang anda masukkan, ia akan memaparkan pratonton untuk sel yang tinggal mengikut corak yang sama.
- Tekan kekunci Enter untuk menerima cadangan.
Selesai!
Alih keluar teks menggunakan formula
Dalam Microsoft Excel, banyak manipulasi data yang dilakukan dengan menggunakan ciri terbina juga boleh dicapai dengan formula. Tidak seperti kaedah sebelumnya, formula tidak membuat sebarang perubahan pada data asal dan memberi anda lebih kawalan ke atashasilnya.
Cara mengalih keluar semua selepas aksara tertentu
Untuk memadamkan teks selepas aksara tertentu, formula generik ialah:
LEFT( sel , SEARCH (" char ", sel ) -1)Di sini, kami menggunakan fungsi SEARCH untuk mendapatkan kedudukan watak dan menghantarnya ke fungsi LEFT, jadi ia mengekstrak bilangan aksara yang sepadan dari permulaan rentetan. Satu aksara ditolak daripada nombor yang dikembalikan oleh SEARCH untuk mengecualikan pembatas daripada keputusan.
Sebagai contoh, untuk mengalih keluar sebahagian daripada rentetan selepas koma, anda masukkan formula di bawah dalam B2 dan seretnya ke bawah melalui B7 :
=LEFT(A2, SEARCH(",", A2) -1)
Cara mengalih keluar semua sebelum aksara tertentu
Untuk memadam sebahagian daripada rentetan teks sebelum aksara tertentu, formula generik ialah:
RIGHT( sel , LEN( sel ) - SEARCH(" char ", sel ))Di sini, kita sekali lagi mengira kedudukan watak sasaran dengan bantuan SEARCH, tolak daripada jumlah panjang rentetan yang dikembalikan oleh LEN, dan hantarkan perbezaan kepada fungsi RIGHT, jadi ia menarik banyak aksara dari penghujung rentetan.
Sebagai contoh, untuk mengalih keluar teks sebelum koma, formulanya ialah:
=RIGHT(A2, LEN(A2) - SEARCH(",", A2))
Dalam kes kami, koma diikuti oleh aksara ruang. Untuk mengelakkan ruang utama dalam hasil, kami membalut formula teras dalam fungsi TRIM:
=TRIM(RIGHT(A2, LEN(A2) - SEARCH(",", A2)))
Nota:
- Kedua-duanyadaripada contoh di atas menganggap bahawa hanya terdapat satu contoh pembatas dalam rentetan asal. Jika terdapat berbilang kejadian, teks akan dialih keluar sebelum/selepas contoh pertama .
- Fungsi CARIAN adalah tidak sensitif huruf besar-kecil , bermakna ia tidak membezakan antara huruf kecil dan huruf besar. Jika aksara khusus anda ialah huruf dan anda ingin membezakan huruf besar, kemudian gunakan fungsi sensitif huruf besar dan bukannya CARI.
Cara memadamkan teks selepas kejadian ke-N daripada aksara
Dalam situasi apabila rentetan sumber mengandungi berbilang tika pembatas, anda mungkin perlu mengalih keluar teks selepas kejadian tertentu. Untuk ini, gunakan formula berikut:
LEFT( sel , FIND("#", SUBSTITUTE( sel , " char ", "#" , n )) -1)Di mana n ialah kejadian aksara selepas itu untuk mengalih keluar teks.
Logik dalaman formula ini memerlukan penggunaan beberapa aksara yang tidak terdapat di mana-mana dalam data sumber, simbol cincang (#) dalam kes kami. Jika aksara ini berlaku dalam set data anda, kemudian gunakan sesuatu yang lain dan bukannya "#".
Sebagai contoh, untuk mengalih keluar segala-galanya selepas koma ke-2 dalam A2 (dan koma itu sendiri), formulanya ialah:
=LEFT(A2, FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)
Cara formula ini berfungsi:
Bahagian utama formula ialah fungsi FIND yang mengira kedudukan ke-npembatas (koma dalam kes kami). Begini caranya:
Kami menggantikan koma ke-2 dalam A2 dengan simbol cincang (atau mana-mana aksara lain yang tidak wujud dalam data anda) dengan bantuan GANTI:
SUBSTITUTE(A2, ",", "#", 2)
Rentetan yang terhasil pergi ke argumen ke-2 FIND, jadi ia mencari kedudukan "#" dalam rentetan itu:
FIND("#", "Emma, Design# (102) 123-4568")
FIND memberitahu kami bahawa "#" ialah aksara ke-13 dalam rentetan. Untuk mengetahui bilangan aksara yang mendahuluinya, hanya tolak 1, dan anda akan mendapat 12 sebagai hasilnya:
FIND("#", SUBSTITUTE(A2, ",", "#", 2)) - 1
Nombor ini pergi terus ke argumen num_chars of LEFT memintanya untuk menarik 12 aksara pertama daripada A2:
=LEFT(A2, 12)
Itu sahaja!
Cara untuk memadamkan teks sebelum kemunculan ke-N bagi aksara
Formula generik untuk mengalih keluar subrentetan sebelum aksara tertentu ialah:
RIGHT(SUBSTITUTE( sel , " char ", "#", n ), LEN( sel ) - FIND("#", GANTI( sel , " char ", "#", n )) -1)Sebagai contoh, untuk menanggalkan teks sebelum koma ke-2 dalam A2, formulanya ialah:
=RIGHT(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)
Untuk menghapuskan ruang utama, kami sekali lagi menggunakan TRIM berfungsi sebagai pembungkus:
=TRIM(RIGHT(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))))
Cara formula ini berfungsi:
Ringkasnya, kami mengetahui berapa banyak aksara selepas pembatas ke-n dan ekstrak subrentetan panjang yang sepadan dari kanan. Di bawah ialah pecahan formula:
Pertama, kami menggantikan koma ke-2 dalam A2 dengan cincangsimbol:
SUBSTITUTE(A2, ",", "#", 2)
Rentetan yang terhasil pergi ke argumen teks RIGHT:
RIGHT("Emma, Design# (102) 123-4568", …
Seterusnya, kita perlu tentukan berapa banyak aksara untuk diekstrak dari hujung rentetan. Untuk ini, kita dapati kedudukan simbol cincang dalam rentetan di atas (iaitu 13):
FIND("#", SUBSTITUTE(A2, ",", "#", 2))
Dan tolaknya daripada jumlah panjang rentetan (yang bersamaan dengan 28):
LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))
Perbezaan (15) pergi ke argumen kedua RIGHT yang mengarahkannya untuk menarik 15 aksara terakhir daripada rentetan dalam argumen pertama:
RIGHT("Emma, Design# (102) 123-4568", 15)
Keluaran ialah subrentetan " (102) 123-4568", yang sangat hampir dengan hasil yang diingini, kecuali ruang utama. Jadi, kami menggunakan fungsi TRIM untuk menyingkirkannya.
Cara mengalih keluar teks selepas kejadian terakhir aksara
Sekiranya nilai anda dipisahkan dengan bilangan pembatas yang berubah-ubah, anda mungkin mahu mengalih keluar segala-galanya selepas contoh terakhir pembatas itu. Ini boleh dilakukan dengan formula berikut:
LEFT( sel , FIND("#", SUBSTITUTE( sel , " char ", "# ", LEN( sel ) - LEN(SUBSTITUT( sel , " char ", "")))) -1)Andaikan lajur A mengandungi pelbagai maklumat tentang pekerja, tetapi nilai selepas koma terakhir sentiasa nombor telefon. Matlamat anda adalah untuk mengalih keluar nombor telefon dan menyimpan semua butiran lain.
Untuk mencapai matlamat, anda boleh mengalih keluar teks selepas koma terakhir dalam A2 dengan iniformula:
=LEFT(A2, FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","")))) -1)
Salin formula ke bawah lajur dan anda akan mendapat hasil ini:
Bagaimana ini formula berfungsi:
Inti formula ialah kita menentukan kedudukan pembatas terakhir (koma) dalam rentetan dan tarik subrentetan dari kiri ke pembatas. Mendapatkan kedudukan pembatas ialah bahagian yang paling sukar, dan berikut ialah cara kami mengendalikannya:
Mula-mula, kami mengetahui berapa banyak koma yang terdapat dalam rentetan asal. Untuk ini, kami menggantikan setiap koma dengan tiada ("") dan menyampaikan rentetan yang terhasil kepada fungsi LEN:
LEN(SUBSTITUTE(A2, ",",""))
Untuk A2, hasilnya ialah 35, iaitu bilangan aksara dalam A2 tanpa koma.
Tolak nombor di atas daripada jumlah panjang rentetan (38 aksara):
LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))
… dan anda akan mendapat 3, iaitu jumlah nombor koma dalam A2 (dan juga nombor ordinal koma terakhir).
Seterusnya, anda menggunakan gabungan fungsi FIND dan SUBSTITUTE yang sudah biasa untuk mendapatkan kedudukan koma terakhir dalam rentetan. Nombor contoh (koma ke-3 dalam kes kami) dibekalkan oleh formula PENGGANTIAN LEN yang disebut di atas:
FIND("#", SUBSTITUTE(A2, ",", "#", 3))
Nampaknya koma ke-3 ialah aksara ke-23 dalam A2, bermakna kita perlukan untuk mengekstrak 22 aksara sebelum itu. Jadi, kami meletakkan formula di atas tolak 1 dalam argumen num_chars LEFT:
LEFT(A2, 23-1)
Cara untuk mengalih keluar teks sebelum kejadian terakhir aksara
Untuk memadamsegala-galanya sebelum contoh terakhir aksara tertentu, formula generik ialah:
RIGHT( sel , LEN( sel ) - FIND("#", SUBSTITUTE( sel , " char ", "#", LEN( sel ) - LEN(SUBSTITUTE( sel , " char ", "")))))Dalam jadual sampel kami, untuk menghapuskan teks sebelum koma terakhir, formula mengambil bentuk ini:
=RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","")))))
Sebagai sentuhan akhir, kami sarangkannya ke dalam fungsi TRIM untuk menghapuskan ruang utama:
=TRIM(RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))))))
Cara formula ini berfungsi:
Ringkasnya, kita mendapat kedudukan koma terakhir seperti yang dijelaskan dalam contoh sebelumnya dan menolaknya daripada jumlah panjang rentetan:
LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))))
Hasilnya, kita mendapat bilangan aksara selepas koma terakhir dan hantarkannya ke fungsi RIGHT, jadi ia membawa banyak aksara dari hujung rentetan.
Fungsi tersuai untuk mengalih keluar teks pada kedua-dua sisi aksara
Sebagaimana anda telah melihat dalam contoh di atas, anda boleh menyelesaikan hampir semua kes penggunaan dengan menggunakan f asli Excel unctions dalam kombinasi yang berbeza. Masalahnya ialah anda perlu mengingati beberapa formula rumit. Hmm, bagaimana jika kita menulis fungsi kita sendiri untuk merangkumi semua senario? Kedengaran seperti idea yang bagus. Jadi, tambahkan kod VBA berikut pada buku kerja anda (langkah terperinci untuk memasukkan VBA dalam Excel ada di sini):
Function RemoveText(str As String , delimiter As String , occurrence As Integer , is_after AsBoolean ) Dim delimiter_num, start_num, delimiter_len Sebagai Integer Dim str_result Sebagai String delimiter_num = 0 start_num = 1 str_result = "" delimiter_len = Len(delimiter) Untuk i = 1 To occurrence delimiter_num = InStr(start_num, Comparetr, If < delimiter_num Kemudian start_num = pembatas_num + delimiter_len Tamat Jika Seterusnya i Jika 0 < delimiter_num Then If True = is_after Then str_result = Mid(str, 1, start_num - delimiter_len - 1) Else str_result = Mid(str, start_num) Tamat Jika Tamat Jika RemoveText = str_result Fungsi TamatFungsi kami dinamakan RemoveText dan ia mempunyai sintaks berikut:
RemoveText(string, delimiter, occurrence, is_after)Di mana:
String - ialah rentetan teks asal. Boleh diwakili oleh rujukan sel.
Pembatas - aksara sebelum/selepas itu untuk mengalih keluar teks.
Kejadian - contoh bagi pembatas.
Is_after - nilai Boolean yang menunjukkan di sebelah mana pembatas untuk mengalih keluar teks. Boleh menjadi aksara tunggal atau jujukan aksara.
- BENAR - padamkan semua selepas pembatas (termasuk pembatas itu sendiri).
- PALSU - padamkan semua sebelum pembatas (termasuk pembatas itu sendiri).
Setelah kod fungsi dimasukkan dalam buku kerja anda, anda boleh mengalih keluar subrentetan daripada sel menggunakan formula padat dan elegan.
Sebagai contoh, untuk memadam