Daftar Isi
Dalam tutorial ini, kita akan melihat beberapa cara untuk menemukan dan mengganti beberapa kata, string, atau karakter individual, sehingga Anda dapat memilih salah satu yang paling sesuai dengan kebutuhan Anda.
Bagaimana biasanya orang mencari di Excel? Kebanyakan, dengan menggunakan fitur Find & Replace, yang berfungsi dengan baik untuk nilai tunggal. Tetapi bagaimana jika Anda memiliki puluhan atau bahkan ratusan item untuk diganti? Tentunya, tidak ada yang mau melakukan semua penggantian itu secara manual satu per satu, dan kemudian melakukannya lagi ketika data berubah. Untungnya, ada beberapa metode yang lebih efektif untuk melakukan penggantian massal di Excel, dankami akan menyelidiki masing-masing secara mendetail.
Temukan dan ganti beberapa nilai dengan SUBSTITUTE bersarang
Cara termudah untuk menemukan dan mengganti beberapa entri di Excel adalah dengan menggunakan fungsi SUBSTITUTE.
Logika rumus ini sangat sederhana: Anda menulis beberapa fungsi individual untuk mengganti nilai lama dengan nilai baru. Dan kemudian, Anda menyarangkan fungsi-fungsi tersebut satu sama lain, sehingga setiap SUBSTITUTE berikutnya menggunakan output dari SUBSTITUTE sebelumnya untuk mencari nilai berikutnya.
PENGGANTI(PENGGANTI(PENGGANTI( teks , old_text1 , new_text1 ), old_text2 , new_text2 ), old_text3 , new_text3 )Dalam daftar lokasi di A2:A10, misalkan Anda ingin mengganti nama negara yang disingkat (seperti FR , INGGRIS dan AMERIKA SERIKAT ) dengan nama lengkap.
Untuk menyelesaikannya, masukkan nilai lama di D2: D4 dan nilai baru di E2: E4 seperti yang ditunjukkan pada gambar di bawah ini. Lalu, masukkan rumus di bawah ini di B2 dan tekan Enter:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2:A10, D2, E2), D3, E3), D4, E4)
...dan Anda akan melakukan semua penggantian sekaligus:
Harap diperhatikan, pendekatan di atas hanya berfungsi dalam Excel 365 yang mendukung array dinamis.
Di versi Excel 2019 pra-dinamis, Excel 2016 dan sebelumnya, rumus perlu ditulis untuk sel paling atas (B2), lalu disalin ke sel di bawahnya:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, $D$2, $E$2), $D$3, $E$3), $D$4, $E$4)
Harap perhatikan bahwa, dalam kasus ini, kita mengunci nilai pengganti dengan referensi sel absolut, sehingga mereka tidak akan bergeser saat menyalin rumusnya ke bawah.
Catatan. Fungsi SUBSTITUTE adalah peka huruf besar-kecil , yang berarti Anda harus mengetikkan nilai lama ( old_text ) dalam kasus huruf yang sama seperti yang muncul dalam data asli.
Semudah mungkin, metode ini memiliki kelemahan yang signifikan - ketika Anda memiliki lusinan item untuk diganti, fungsi bersarang menjadi cukup sulit untuk dikelola.
Keuntungan : mudah diimplementasikan; didukung di semua versi Excel
Kekurangan : paling baik digunakan untuk sejumlah nilai find/replace yang terbatas
Cari dan ganti beberapa entri dengan XLOOKUP
Dalam situasi ketika Anda ingin mengganti seluruh isi sel , bukan bagiannya, fungsi XLOOKUP sangat berguna.
Katakanlah anda memiliki daftar negara di kolom A dan bertujuan untuk mengganti semua singkatan dengan nama lengkap yang sesuai. Seperti pada contoh sebelumnya, anda mulai dengan memasukkan item "Find" dan "Replace" di kolom terpisah (D dan E masing-masing), lalu masukkan rumus ini di B2:
=XLOOKUP(A2, $D$2:$D$4, $E$2:$E$4, A2)
Diterjemahkan dari bahasa Excel ke dalam bahasa manusia, inilah yang dilakukan rumus tersebut:
Cari nilai A2 (lookup_value) di D2:D4 (lookup_array) dan kembalikan kecocokan dari E2:E4 (return_array). Jika tidak ditemukan, tarik nilai asli dari A2.
Klik dua kali gagang isian untuk mendapatkan rumus yang disalin ke sel di bawah ini, dan hasilnya tidak akan membuat Anda menunggu:
Karena fungsi XLOOKUP hanya tersedia di Excel 365, maka rumus di atas tidak akan bekerja di versi sebelumnya. Namun, kamu bisa dengan mudah meniru perilaku ini dengan kombinasi IFERROR atau IFNA dan VLOOKUP:
=IFNA(VLOOKUP(A2, $D$2:$E$4, 2, FALSE), A2)
Catatan. Tidak seperti SUBSTITUTE, fungsi XLOOKUP dan VLOOKUP adalah tidak peka huruf besar-kecil , yang berarti mereka mencari nilai pencarian dengan mengabaikan huruf besar. Misalnya, rumus kita akan mengganti keduanya FR dan fr dengan Prancis .
Keuntungan : penggunaan fungsi biasa yang tidak biasa; bekerja di semua versi Excel
Kekurangan : bekerja pada level sel, tidak dapat menggantikan bagian dari isi sel
Beberapa penggantian menggunakan fungsi LAMBDA rekursif
Untuk pelanggan Microsoft 365, Excel menyediakan fungsi khusus yang memungkinkan pembuatan fungsi kustom menggunakan bahasa formula tradisional. Yap, saya berbicara tentang LAMBDA. Keindahan metode ini adalah dapat mengubah formula yang sangat panjang dan kompleks menjadi formula yang sangat ringkas dan sederhana. Selain itu, ini memungkinkan Anda membuat fungsi Anda sendiri yang tidak ada di Excel, sesuatu yang sebelumnyahanya mungkin dengan VBA.
Untuk informasi rinci tentang membuat dan menggunakan fungsi LAMBDA kustom, silakan lihat tutorial ini: Cara menulis fungsi LAMBDA di Excel. Di sini, kita akan membahas beberapa contoh praktis.
Keuntungan : hasilnya adalah fungsi yang elegan dan luar biasa mudah digunakan, tidak peduli jumlah pasangan pengganti
Kekurangan : hanya tersedia di Excel 365; khusus buku kerja dan tidak dapat digunakan kembali di buku kerja yang berbeda
Contoh 1. Cari dan ganti beberapa kata / string sekaligus
Untuk mengganti beberapa kata atau teks sekaligus, kami telah menciptakan fungsi LAMBDA kustom, bernama MultiReplace yang bisa mengambil salah satu dari bentuk-bentuk ini:
=LAMBDA(teks, lama, baru, IF(lama"", MultiReplace(SUBSTITUTE(teks, lama, baru), OFFSET(lama, 1, 0), OFFSET(baru, 1, 0)), teks))
Atau
=LAMBDA(teks, lama, baru, IF(lama="", teks, MultiReplace(SUBSTITUTE(teks, lama, baru), OFFSET(lama, 1, 0), OFFSET(baru, 1, 0))))
Keduanya adalah fungsi rekursif yang memanggil dirinya sendiri. Perbedaannya hanya pada bagaimana titik keluar ditetapkan.
Dalam rumus pertama, fungsi IF memeriksa apakah tua tidak kosong (lama""). Jika TRUE, daftar MultiReplace Jika FALSE, fungsi mengembalikan teks bentuknya saat ini dan keluar.
Rumus kedua menggunakan logika terbalik: jika tua kosong (lama=""), maka kembalikan teks dan keluar; jika tidak, panggil MultiReplace .
Bagian tersulit sudah selesai! Yang harus Anda lakukan adalah menamai MultiReplace seperti yang ditunjukkan pada gambar di bawah ini. Untuk panduan rinci, silakan lihat Bagaimana memberi nama fungsi LAMBDA.
Setelah fungsi mendapatkan nama, Anda bisa menggunakannya seperti fungsi bawaan lainnya.
Manapun dari kedua variasi rumus yang Anda pilih, dari perspektif pengguna akhir, sintaksnya sesederhana ini:
MultiReplace(teks, lama, baru)Di mana:
- Teks - sumber data
- Tua - nilai untuk menemukan
- Baru - nilai yang akan diganti dengan
Mengambil contoh sebelumnya sedikit lebih jauh, mari kita ganti tidak hanya singkatan negara tetapi juga singkatan negara bagian. Untuk ini, ketik singkatan ( tua ) dalam kolom D dimulai dari D2 dan nama lengkap ( baru nilai) dalam kolom E dimulai dari E2.
Di B2, masukkan fungsi MultiReplace:
=MultiReplace(A2:A10, D2, E2)
Tekan Enter dan nikmati hasilnya :)
Bagaimana formula ini bekerja
Petunjuk untuk memahami rumus ini adalah memahami rekursi. Ini mungkin terdengar rumit, tetapi prinsipnya cukup sederhana. Dengan setiap iterasi, fungsi rekursif memecahkan satu contoh kecil dari masalah yang lebih besar. Dalam kasus kita, fungsi MultiReplace fungsi mengulang-ulang nilai lama dan baru dan, dengan setiap perulangan, melakukan satu penggantian:
MultiReplace (SUBSTITUTE(teks, lama, baru), OFFSET(lama, 1, 0), OFFSET(baru, 1, 0))
Seperti halnya fungsi SUBSTITUTE bersarang, hasil dari SUBSTITUTE sebelumnya menjadi teks parameter untuk SUBSTITUTE berikutnya. Dengan kata lain, pada setiap pemanggilan berikutnya dari MultiReplace , fungsi SUBSTITUTE tidak memproses string teks asli, tetapi output dari panggilan sebelumnya.
Untuk menangani semua item pada tua kita mulai dengan sel paling atas, dan menggunakan fungsi OFFSET untuk memindahkan 1 baris ke bawah dengan setiap interaksi:
OFFSET (lama, 1, 0)
Hal yang sama dilakukan untuk baru daftar:
OFFSET(baru, 1, 0)
Hal yang krusial adalah menyediakan titik keluar untuk mencegah pemanggilan rekursif berlanjut selamanya. Hal ini dilakukan dengan bantuan fungsi IF - jika tua sel kosong, fungsi mengembalikan teks bentuknya yang sekarang dan keluar:
=LAMBDA(teks, lama, baru, IF(lama="", teks, MultiReplace(...)))
atau
=LAMBDA(teks, lama, baru, IF(lama"", MultiReplace(...), teks))
Contoh 2. Ganti beberapa karakter di Excel
Pada prinsipnya, yang MultiReplace yang didiskusikan dalam contoh sebelumnya dapat menangani karakter individual juga, asalkan setiap karakter lama dan baru dimasukkan dalam sel terpisah, persis seperti nama yang disingkat dan nama lengkap dalam tangkapan layar di atas.
Jika Anda lebih suka memasukkan karakter lama di satu sel dan karakter baru di sel lain, atau mengetikkannya secara langsung dalam formula, maka Anda bisa membuat fungsi kustom lainnya, bernama ReplaceChars dengan menggunakan salah satu dari rumus-rumus ini:
=LAMBDA(text, old_chars, new_chars, IF(old_chars"", ReplaceChars(SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars)), RIGHT(old_chars, LEN(old_chars)-1), RIGHT(new_chars, LEN(new_chars)-1)), text))
Atau
=LAMBDA(text, old_chars, new_chars, IF(old_chars="", text, ReplaceChars(SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars)), RIGHT(old_chars, LEN(old_chars)-1), RIGHT(new_chars, LEN(new_chars)-1))))
Ingatlah untuk menamai fungsi Lambda baru Anda di Name Manager seperti biasa:
Dan fungsi kustom baru Anda siap digunakan:
ReplaceChars(teks, old_chars, new_chars)Di mana:
- Teks - senar asli
- Tua - karakter yang akan dicari
- Baru - karakter yang akan diganti dengan
Untuk mengujinya di lapangan, mari kita lakukan sesuatu yang sering dilakukan pada data yang diimpor - ganti tanda kutip pintar dan apostrof pintar dengan tanda kutip lurus dan apostrof lurus.
Pertama, kita memasukkan tanda kutip pintar dan apostrof pintar di D2, tanda kutip lurus dan apostrof lurus di E2, memisahkan karakter dengan spasi untuk keterbacaan yang lebih baik. (Karena kita menggunakan pembatas yang sama di kedua sel, itu tidak akan berdampak pada hasilnya - Excel hanya akan mengganti spasi dengan spasi).
Setelah itu, kita masukkan rumus ini di B2:
=ReplaceChars(A2:A4, D2, E2)
Dan mendapatkan hasil yang persis seperti yang kami cari:
Anda juga bisa mengetikkan karakternya secara langsung dalam rumus. Dalam kasus kita, ingatlah untuk "menduplikasi" tanda kutip lurusnya seperti ini:
=ReplaceChars(A2:A4, "" " '", """ "" '")
Bagaimana formula ini bekerja
The ReplaceChars fungsi siklus melalui old_chars dan new_chars string dan membuat satu penggantian pada satu waktu dimulai dari karakter pertama di sebelah kiri. Bagian ini dilakukan oleh fungsi SUBSTITUTE:
SUBSTITUTE(teks, LEFT(karakter_lama), LEFT(karakter_baru))
Dengan setiap iterasi, fungsi RIGHT memotong satu karakter dari kiri kedua old_chars dan new_chars string, sehingga LEFT bisa mengambil pasangan karakter berikutnya untuk substitusi:
ReplaceChars(SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars)), RIGHT(old_chars, LEN(old_chars)-1), RIGHT(new_chars, LEN(new_chars)-1))
Sebelum setiap pemanggilan rekursif, fungsi IF mengevaluasi old_chars Jika tidak kosong, fungsi memanggil dirinya sendiri. Segera setelah karakter terakhir diganti, proses iterasi selesai, rumus kembali teks bentuknya yang sekarang dan keluar.
Catatan. Karena fungsi SUBSTITUTE yang digunakan dalam rumus inti kami adalah peka huruf besar-kecil , baik Lambdas ( MultiReplace dan ReplaceChars ) memperlakukan huruf besar dan huruf kecil sebagai karakter yang berbeda.
Temukan dan ganti massal dengan UDF
Jika fungsi LAMBDA tidak tersedia di Excel Anda, Anda dapat menulis fungsi yang ditentukan pengguna untuk multi-pergantian dengan cara tradisional menggunakan VBA.
Untuk membedakan UDF dari LAMBDA-defined MultiReplace kita akan menamainya secara berbeda, misalnya MassReplace Kode dari fungsi tersebut adalah sebagai berikut:
Function MassReplace(InputRng As Range, FindRng As Range, ReplaceRng As Range) As Varian () Dim arRes() As Varian 'array untuk menyimpan hasil Dim arSearchReplace(), sTmp As String 'array tempat menyimpan pasangan find/replace, string sementara Dim iFindCurRow, cntFindRows As Long 'indeks baris saat ini dari array SearchReplace, jumlah baris Dim iInputCurRow, iInputCurCol, cntInputRows,cntInputCols As Long 'indeks baris saat ini dalam rentang sumber, indeks kolom saat ini dalam rentang sumber, hitungan baris, hitungan kolom cntInputRows = InputRng.Rows.Count cntInputCols = InputRng.Columns.Count cntFindRows = FindRng.Rows.Count ReDim arRes(1 To cntInputRows, 1 To cntInputCols) ReDim arSearchReplace(1 To cntFindRows, 1 To 2) 'menyiapkan array pasangan find/replace ForiFindCurRow = 1 To cntFindRows arSearchReplace(iFindCurRow, 1) = FindRng.Cells(iFindCurRow, 1).Value arSearchReplace(iFindCurRow, 2) = ReplaceRng.Cells(iFindCurRow, 1).Value Next 'Mencari dan mengganti dalam rentang sumber Untuk iInputCurRow = 1 To cntInputRows Untuk iInputCurCol = 1 To cntInputCol sTmp = InputRng.Cells(iInputCurRow, iInputCurCol).Value 'Mengganti semua pasangan find/replace di setiap selFor iFindCurRow = 1 To cntFindRows sTmp = Replace(sTmp, arSearchReplace(iFindCurRow, 1), arSearchReplace(iFindCurRow, 2))) Next arRes(iInputCurRow, iInputCurCol) = sTmp Next Next MassReplace = arRes End FunctionSeperti fungsi-fungsi yang ditentukan LAMBDA, UDF adalah seluruh buku kerja Itu berarti MassReplace Jika Anda tidak yakin bagaimana melakukan ini dengan benar, ikuti langkah-langkah yang dijelaskan di Cara memasukkan kode VBA di Excel.
Setelah kode ditambahkan ke buku kerja Anda, fungsi akan muncul di formula intellisense - hanya nama fungsinya, bukan argumennya! Meskipun demikian, saya yakin bukan masalah besar untuk mengingat sintaksnya:
MassReplace(input_range, find_range, replace_range)Di mana:
- Input_range - rentang sumber di mana Anda ingin mengganti nilai.
- Find_range - karakter, string, atau kata yang akan dicari.
- Replace_range - karakter, string, atau kata yang akan diganti.
Di Excel 365, karena dukungan untuk array dinamis, ini berfungsi sebagai rumus normal, yang hanya perlu dimasukkan di sel atas (B2):
=MassReplace(A2:A10, D2:D4, E2:E4)
Di Excel pra-dinamis, ini berfungsi sebagai rumus larik CSE gaya lama: Anda memilih seluruh rentang sumber (B2: B10), ketikkan rumusnya, dan tekan Ctrl + Shift + Enter kunci secara bersamaan untuk menyelesaikannya.
Keuntungan : alternatif yang layak untuk fungsi LAMBDA kustom di Excel 2019, Excel 2016 dan versi sebelumnya
Kekurangan : buku kerja harus disimpan sebagai file .xlsm yang diaktifkan makro
Ganti massal di Excel dengan makro VBA
Jika Anda suka mengotomatiskan tugas-tugas umum dengan makro, maka Anda dapat menggunakan kode VBA berikut untuk menemukan dan mengganti beberapa nilai dalam suatu rentang.
Sub BulkReplace() Dim Rng As Range, SourceRng As Range, ReplaceRng As Range On Error Resume Next Set SourceRng = Application.InputBox( "Source data:" , "Bulk Replace" , Application.Selection.Address, Type :=8) Err.Clear If Not SourceRng Is Nothing Then Set ReplaceRng = Application.InputBox( "Replace range:" , "Bulk Replace" , Type :=8) Err.Clear If Not ReplaceRng Is Nothing ThenApplication.ScreenUpdating = False For Each Rng In ReplaceRng.Columns(1).Cells SourceRng.Replace what:=Rng.Value, replacement:=Rng.Offset(0, 1).Value Next Application.ScreenUpdating = True End If End If End SubUntuk langsung menggunakan makro, Anda dapat mengunduh contoh buku kerja kami yang berisi kode. Atau Anda dapat menyisipkan kode di buku kerja Anda sendiri.
Cara menggunakan makro
Sebelum menjalankan makro, ketik nilai lama dan baru ke dalam dua kolom yang berdekatan seperti yang ditunjukkan pada gambar di bawah ini (C2:D4).
Dan kemudian, pilih data sumber Anda, tekan Alt + F8 , pilih Penggantian Massal makro, dan klik Lari .
Sebagai sumber kemarahan sudah dipilih sebelumnya, cukup verifikasi referensi, dan klik OK:
Setelah itu, pilih ganti rentang dan klik OK:
Selesai!
Keuntungan : setup sekali, gunakan kembali kapan saja
Kekurangan : makro perlu dijalankan dengan setiap perubahan data
Beberapa temukan dan ganti di Excel dengan alat Substring
Pada contoh pertama, saya menyebutkan bahwa SUBSTITUTE bersarang adalah cara termudah untuk mengganti beberapa nilai di Excel. Saya akui bahwa saya salah. Ultimate Suite kami membuat segalanya menjadi lebih mudah!
Untuk melakukan penggantian massal di lembar kerja Anda, pergilah ke Data Ablebits tab dan klik Alat Substring > Ganti Substring .
The Ganti Substring kotak dialog akan muncul meminta Anda untuk menentukan Sumber jangkauan dan Substring jangkauan.
Dengan dua rentang yang dipilih, klik tombol Ganti dan temukan hasilnya dalam kolom baru yang disisipkan di sebelah kanan data asli. Yap, semudah itu!
Tip. Sebelum mengklik Ganti , ada satu hal penting yang perlu Anda pertimbangkan - yaitu Peka huruf besar-kecil Pastikan untuk memilihnya jika Anda ingin menangani huruf besar dan huruf kecil sebagai karakter yang berbeda. Dalam contoh ini, kita mencentang opsi ini karena kita hanya ingin mengganti string yang dikapitalisasi dan membiarkan substring seperti "fr", "uk", atau "ak" di dalam kata lain tetap utuh.
Jika Anda ingin tahu operasi massal apa lagi yang dapat dilakukan pada string, lihat Alat Substring lain yang disertakan dengan Ultimate Suite kami. Atau bahkan lebih baik, unduh versi evaluasi di bawah ini dan cobalah!
Itulah cara menemukan dan mengganti beberapa kata dan karakter sekaligus di Excel. Saya berterima kasih telah membaca dan berharap dapat melihat Anda di blog kami minggu depan!
Unduhan yang tersedia
Beberapa temukan dan ganti di Excel (file .xlsm)
Ultimate Suite 14 hari versi yang berfungsi penuh (file .exe)