Daptar eusi
Dina tutorial ieu, urang bakal ningali sababaraha cara pikeun milarian sareng ngagentos sababaraha kecap, senar, atanapi karakter individu, janten anjeun tiasa milih anu paling cocog sareng kabutuhan anjeun.
Kumaha jalma biasana milarian dina Excel? Lolobana, ku ngagunakeun manggihan & amp; Ngaganti fitur, anu hade pikeun nilai tunggal. Tapi kumaha lamun anjeun boga puluhan atawa malah ratusan item pikeun ngaganti? Pasti, moal aya anu hoyong ngadamel sadayana panggantian éta sacara manual hiji-hiji, teras lakukeun deui deui nalika datana robih. Kabeneran, aya sababaraha metode anu langkung efektif pikeun ngagentos massal dina Excel, sareng urang badé nalungtik masing-masing sacara rinci.
Teangan sareng gentos sababaraha nilai sareng SUBSTITUTE nested
Cara panggampangna pikeun manggihan jeung ngaganti sababaraha éntri dina Excel nyaéta ku ngagunakeun fungsi SUBSTITUTE.
Logika rumus basajan pisan: anjeun nulis sababaraha fungsi individual pikeun ngaganti hiji nilai heubeul ku nu anyar. . Teras, anjeun sarangkeun fungsi-fungsi éta hiji-hiji, supados unggal SUBSTITUTE salajengna ngagunakeun kaluaran SUBSTITUTE sateuacana pikeun milarian nilai salajengna.
SUBSTITUTE(SUBSTITUTE(SUBSTITUTE( text, old_text1, new_text1), old_text2, new_text2), old_text3, new_text3)Dina daptar lokasi di A2:A10, anggap anjeun hoyong ngagentos nami nagara anu disingget (sapertos FR , Inggris sareng USA ) kalayan lengkep. MassReplace fungsi bakal dianggo ngan dina workbook nu geus diselapkeun kode. Upami anjeun teu yakin kumaha ngalakukeun ieu leres, mangga tuturkeun léngkah-léngkah anu dijelaskeun dina Cara nyelapkeun kode VBA dina Excel.
Sawaktos kodeu ditambahkeun kana buku kerja anjeun, fungsina bakal muncul dina rumus intellisense - ngan nami fungsi, sanes argumen! Padahal, kuring yakin éta henteu masalah pikeun nginget sintaksis:
MassReplace(input_range, find_range, replace_range)Where:
- Input_range - rentang sumber dimana Anjeun hoyong ngaganti niléy.
- Teangan_rentang - karakter, senar, atawa kecap nu rék diteangan.
- Replace_range - karakter, senar, atawa kecap-kecap nu kudu diganti.
Dina Excel 365, alatan rojongan pikeun susunan dinamis, ieu jalan salaku rumus normal, nu ngan perlu diasupkeun dina sél luhur (B2):
=MassReplace(A2:A10, D2:D4, E2:E4)
Dina Excel pra-dinamis, ieu jalanna salaku rumus array CSE gaya heubeul: Anjeun milih sakabeh rentang sumber (B2:B10), ngetik rumus, terus pencét Ctrl + Shift + Enter sakaligus pikeun ngalengkepan éta.
Kaunggulan : alternatif anu santun pikeun fungsi LAMBDA custom di Excel 2019 , Excel 2016 jeung vérsi saméméhna
Kalemahan : workbook kudu disimpen jadi file .xlsm nu diaktipkeun makro
Ganti massal dina Excel nganggo makro VBA
Upami anjeun resep mobil kawin tugas umum kalawan macros, lajeng Anjeuntiasa nganggo kode VBA di handap ieu pikeun milarian sareng ngagentos sababaraha nilai dina rentang.
Sub BulkReplace() Taram Rng Salaku Range, SourceRng Salaku Range, ReplaceRng Salaku Range On Error Resume Next Set SourceRng = Application.InputBox( "Sumber data: " , "Ganti Bulk", Application.Selection.Adress, Type :=8) Err.Clear Lamun Teu SourceRng Euweuh Lajeng Setel ReplaceRng = Application.InputBox( "Ganti rentang:" , "Bulk Ganti" , Type :=8) Err.Clear Lamun Teu NgagantiRng Euweuh Lajeng Application.ScreenUpdating = Palsu Pikeun Unggal Rng Dina GantiRng.Columns(1).Cells SourceRng.Replace what:=Rng.Value, replacement:=Rng.Offset(0, 1).Value Next Application.ScreenUpdating = True End If End If End SubPikeun ngamangpaatkeun makro langsung, anjeun tiasa ngundeur conto buku kerja kami anu ngandung kodeu. Atanapi anjeun tiasa nyelapkeun kodeu dina buku kerja anjeun nyalira.
Kumaha ngagunakeun makro
Saméméh ngajalankeun makro, ketik niléy lami sareng énggal kana dua kolom anu padeukeut sapertos anu dipidangkeun dina gambar di handap ieu ( C2:D4).
Terus, pilih data sumber anjeun, pencét Alt + F8 , pilih makro BulkReplace , teras klik Run .
Salaku amukan sumber tos dipilih, cukup pariksa rujukan, teras klik OK:
Sanggeus éta, pilih replace range , teras klik OK:
Rengse!
Kaunggulan : setup sakali, dipake deui iraha wae
Kelemahan : makro kudu dijalankeun jeung unggal datarobah
Multiple find and replace in Excel with Substring tool
Dina conto anu pangheulana, kuring disebutkeun yen nested SUBSTITUTE mangrupikeun cara anu paling gampang pikeun ngagentos sababaraha nilai dina Excel. Kuring ngaku yén kuring salah. Ultimate Suite kami ngagampangkeun sagala hal!
Pikeun ngagantian masal dina lembar kerja anjeun, buka tab Ablebits Data teras klik Substring Tools > Ganti Substrings .
Kotak dialog Ganti Substrings bakal muncul naroskeun anjeun nangtukeun rentang Sumber sareng Substrings rentang.
Kalayan dua rentang dipilih, klik tombol Ganti sarta manggihan hasil dina kolom anyar diselapkeun ka katuhu. tina data aslina. Leres, éta gampang!
Tip. Sateuacan ngaklik Ganti , aya hiji hal anu penting pikeun anjeun perhatikeun - kotak Case-sensitive . Pastikeun pikeun milih upami anjeun hoyong ngadamel hurup ageung sareng hurup leutik salaku karakter anu béda. Dina conto ieu, urang keletik pilihan ieu sabab urang ngan hayang ngaganti string dimodalan jeung ninggalkeun substrings kawas "fr", "uk", atawa "ak" dina kecap séjén gembleng.
Mun anjeun panasaran uninga naon operasi bulk lianna bisa dipigawé dina string, pariksa kaluar Pakakas Substring séjén kaasup jeung Suite Ultimate kami. Atanapi langkung saé, unduh vérsi évaluasi di handap sareng cobian!
Kitu cara milarian sareng ngagentossababaraha kecap sareng karakter sakaligus dina Excel. Hatur nuhun pikeun maca sareng ngarepkeun anjeun tiasa ningali anjeun dina blog kami minggu payun!
Unduh anu sayogi
Papanggihan sababaraha sareng ganti dina Excel (file .xlsm)
Ultimate Suite 14 -day vérsi fungsi pinuh (file .exe)
ngaran.Pikeun rengse, lebetkeun nilai heubeul dina D2:D4 jeung nilai anyar dina E2:E4 kawas ditémbongkeun dina screenshot handap. Teras, lebetkeun rumus di handap ieu dina B2 sareng pencét Lebetkeun:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2:A10, D2, E2), D3, E3), D4, E4)
… sareng anjeun bakal ngagentos sadayana sakaligus:
Perhatikeun, pendekatan di luhur ngan bisa dipake dina Excel 365 nu ngarojong susunan dinamis.
Dina vérsi pre-dinamis tina Excel 2019, Excel 2016 jeung saméméhna, rumusna kudu ditulis pikeun sél paling luhur (B2), lajeng disalin ka sél handap:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, $D$2, $E$2), $D$3, $E$3), $D$4, $E$4)
Punten perhatikeun yén, dina hal ieu, urang ngonci nilai ngagantian kalawan rujukan sél mutlak, jadi aranjeunna moal ngageser nalika nyalin rumus ka handap.
Catetan. Pungsi SUBSTITUTE nyaeta case-sensitive , hartina anjeun kudu ngetik nilai heubeul ( old_text ) dina hurup nu sarua sakumaha aranjeunna muncul dina data aslina.
Sagampil mungkin, métode ieu boga kalemahan anu signifikan - mun anjeun boga puluhan item pikeun ngaganti, fungsi nested jadi rada hese ngatur.
Kauntungan : gampang - pikeun-ngalaksanakeun; dirojong dina sakabéh vérsi Excel
Kelemahan : pangalusna dipaké pikeun jumlah kawates manggihan/ngaganti nilai
Teangan jeung ngaganti sababaraha éntri jeung XLOOKUP
Dina kaayaan nalika anjeun badé ngagentos sakabeh eusi sél , sanés bagianna, fungsi XLOOKUP tiasa dianggo.
Hayusebutkeun anjeun gaduh daptar nagara dina kolom A jeung tujuan pikeun ngaganti sakabeh singketan jeung ngaran lengkep pakait. Sapertos dina conto sateuacana, anjeun mimitian ku ngalebetkeun item "Panggihan" sareng "Ganti" dina kolom anu misah (masing-masing D sareng E), teras lebetkeun rumus ieu dina B2:
=XLOOKUP(A2, $D$2:$D$4, $E$2:$E$4, A2)
Ditarjamahkeun tina basa Excel kana basa manusa, kieu rumusna:
Teangan nilai A2 (lookup_value) dina D2:D4 (lookup_array) jeung mulangkeun hiji patandingan ti E2:E4 (return_array). Upami teu kapendak, tarik nilai aslina tina A2.
Klik dua kali gagang eusian supados rumus ditiron ka sél di handap, sareng hasilna moal ngantep anjeun ngantosan:
Kusabab pungsi XLOOKUP ngan sadia dina Excel 365, rumus di luhur moal jalan dina vérsi saméméhna. Nanging, anjeun tiasa gampang meniru kabiasaan ieu sareng kombinasi IFERROR atanapi IFNA sareng VLOOKUP:
=IFNA(VLOOKUP(A2, $D$2:$E$4, 2, FALSE), A2)
Catetan. Beda sareng SUBSTITUTE, fungsi XLOOKUP sareng VLOOKUP henteu sénsitip kana hurup , hartosna milarian nilai-nilai milarian anu teu malire hurup. Contona, rumus urang bakal ngaganti duanana FR jeung fr ku Perancis .
Kauntungan : pamakéan biasa tina fungsi biasa; dianggo dina sadaya vérsi Excel
Kakurangan : dianggo dina tingkat sél, teu tiasa ngagentos sabagian eusi sél
Ganti sababaraha nganggo fungsi LAMBDA rekursif
Pikeun Microsoft365 palanggan, Excel nyadiakeun pungsi husus anu ngamungkinkeun nyieun fungsi custom ngagunakeun basa rumus tradisional. Leres, kuring nyarioskeun LAMBDA. Kaéndahan metode ieu nyaéta yén éta tiasa ngarobih rumus anu panjang sareng rumit janten rumus anu kompak sareng saderhana. Leuwih ti éta, éta ngidinan Anjeun nyieun pungsi sorangan nu teu aya dina Excel, hal nu saméméhna mungkin ngan ku VBA.
Pikeun inpo nu lengkep ngeunaan nyieun jeung ngagunakeun fungsi LAMBDA custom, mangga pariksa tutorial ieu: Kumaha nulis fungsi LAMBDA dina Excel. Di dieu, urang bakal ngabahas sababaraha conto praktis.
Kauntungan : hasilna mangrupa fungsi anu elegan jeung luar biasa basajan ngagunakeun, teu paduli jumlah pasangan ngagantian
Kakurangan : ngan sadia dina Excel 365; workbook-spésifik sarta teu bisa dipaké deui sakuliah workbooks béda
Conto 1. Pilarian tur ngaganti sababaraha kecap / string sakaligus
Pikeun ngaganti sababaraha kecap atawa téks dina hiji lebet, urang geus nyieun custom Fungsi LAMBDA, dingaranan MultiReplace , anu tiasa nyandak salah sahiji bentuk ieu:
=LAMBDA(text, old, new, IF(old"", MultiReplace(SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0)), text))
Atawa
=LAMBDA(text, old, new, IF(old="", text, MultiReplace(SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0))))
Duanana rekursif fungsi nu nelepon sorangan. Anu ngabédakeunana ngan dina cara netepkeun titik kaluarna.
Dina rumus kahiji, fungsi IF mariksa naha daptar heubeul henteu kosong (heubeul""). Lamun BENER, fungsi MultiReplace disebut. Upami PALSU, fungsinamulihkeun teks kana bentuk ayeuna sareng kaluar.
Rumus kadua nganggo logika sabalikna: upami heubeul kosong (heubeul = ""), teras balikkeun teks sareng kaluar; disebutkeun nelepon MultiReplace .
Bagian trickiest geus kahontal! Anu anjeun kedah laksanakeun nyaéta namikeun fungsi MultiReplace dina Pangatur Ngaran sapertos anu dipidangkeun dina layar di handap ieu. Pikeun tungtunan lengkep, mangga tingali Cara ngaranan pungsi LAMBDA.
Sanggeus pungsi meunang ngaran, Anjeun bisa maké éta kawas pungsi inbuilt séjénna.
Mana wae tina dua variasi rumus anu anjeun pilih, tina sudut pandang pamaké ahir, sintaksisna sasederhana kieu:
MultiReplace(text, old, new)Where:
- Téks - data sumber
- Lawas - niléy-niléy anu rék dipanggihan
- Anyar - niléy anu bakal diganti ku
Nyandak conto sateuacana sakedik, hayu urang ngagentos sanés ngan ukur singkatan nagara tapi singgetan nagara ogé. Jang ngalampahkeun ieu, ketik singketan ( old nilai) dina kolom D dimimitian dina D2 jeung ngaran lengkep ( anyar nilai) dina kolom E dimimitian dina E2.
Dina B2, lebetkeun pungsi MultiReplace:
=MultiReplace(A2:A10, D2, E2)
Pencét Lebetkeun teras nikmati hasilna :)
Kumaha rumus ieu jalanna
Clue pikeun ngarti rumus nyaéta pamahaman rekursi. Ieu sigana pajeulit, tapi prinsipna cukup basajan. Kalawan unggaliteration, hiji fungsi recursive solves hiji conto leutik tina masalah badag. Dina kasus urang, fungsi MultiReplace ngaliwat niléy-niléy anu lami sareng énggal sareng, sareng unggal puteran, ngalaksanakeun hiji ngagantian:
MultiReplace (SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0))
Sapertos fungsi SUBSTITUTE nested, hasil tina SUBSTITUTE saméméhna janten parameter text pikeun SUBSTITUTE salajengna. Dina basa sejen, dina unggal panggero saterusna MultiReplace , fungsi SUBSTITUTE ngolah lain string téks aslina, tapi kaluaran panggero saméméhna.
Pikeun nanganan sadaya item dina heubeul daptar, urang mimitian ku sél paling luhur, sarta ngagunakeun fungsi OFFSET pikeun mindahkeun 1 baris handap kalawan unggal interaksi:
OFFSET(old, 1, 0)
Sarua dipigawé pikeun daptar anyar:
OFFSET(new, 1, 0)
Hal anu penting nyaéta nyadiakeun titik kaluar pikeun nyegah telepon rekursif pikeun neruskeun salamina. Hal ieu dilakukeun kalayan bantuan fungsi IF - lamun heubeul sél kosong, fungsi mulih deui teks bentuk kiwari sarta kaluar:
=LAMBDA(text, old, new, IF(old="", text, MultiReplace(…)))
atawa
=LAMBDA(text, old, new, IF(old"", MultiReplace(…), text))
Conto 2. Ngaganti sababaraha karakter dina Excel
Sacara prinsip, fungsi MultiReplace anu dibahas dina conto saméméhna bisa nanganan karakter individu ogé, asal unggal karakter heubeul jeung anyar diasupkeun dina sél misah, persis kawas nu disingget jeung ngaran lengkep dina Potret layar di luhur.
Lamun anjeun leuwih resep ngasupkeun nu heubeul.karakter dina hiji sél jeung karakter anyar dina sél sejen, atawa ngetik langsung dina rumus, teras Anjeun bisa nyieun pungsi custom sejen, ngaranna ReplaceChars , ku ngagunakeun salah sahiji rumus ieu:
=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))
Atawa
=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))))
Inget pikeun ngaranan fungsi Lambda anyar anjeun dina Name Manager saperti biasa:
Sareng pungsi khusus anyar anjeun siap dianggo:
ReplaceChars(text, old_chars, new_chars)Dimana:
- Teks - senar asli
- Heubeul - karakter nu kudu diteangan
- Anyar - karakter nu kudu diganti ku
Pikeun méré tes lapangan, hayu urang ngalakukeun hiji hal anu mindeng dipigawé dina data impor - ngaganti tanda kutip pinter jeung tanda kutip pinter ku tanda kutip lempeng jeung tanda kutip lempeng.
Kahiji, urang asupkeun tanda kutip pinter jeung tanda kutip pinter dina D2, tanda kutip lempeng jeung tanda kutip lempeng dina E2 , misahkeun karakter jeung spasi pikeun readability hadé. (Sakumaha kami nganggo pembatas anu sami dina kadua sél, éta moal mangaruhan hasilna - Excel ngan ukur ngagentos rohangan sareng spasi.)
Sanggeus éta, urang asupkeun rumus ieu dina B2:
=ReplaceChars(A2:A4, D2, E2)
Jeung meunang persis hasil nu urang pilari:
Ieu oge mungkin pikeun ngetikkeun karakter langsung dina rumus. Dina kasus urang, ngan émut pikeun "duplikat" tanda petik lempeng sapertos kieu:
=ReplaceChars(A2:A4, "“ ” ’", """ "" '")
Kumaha rumus ieu dianggo
The ReplaceChars fungsi siklus ngaliwatan old_chars jeung new_chars string sarta ngajadikeun hiji ngagantian dina hiji waktu dimimitian ti karakter kahiji di kénca. Bagian ieu dilakukeun ku fungsi SUBSTITUTE:
SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars))
Kalayan unggal iterasi, fungsi RIGHT ngaleungitkeun hiji karakter ti kénca ti old_chars sareng new_chars string, supados LEFT tiasa nyandak pasangan karakter salajengna pikeun substitusi:
ReplaceChars(SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars)), RIGHT(old_chars, LEN(old_chars)-1), RIGHT(new_chars, LEN(new_chars)-1))
Saméméh unggal panggero rekursif, fungsi IF ngaevaluasi string old_chars . Lamun teu kosong, fungsi nelepon sorangan. Pas karakter panungtungan geus diganti, prosés iterasi réngsé, rumus mulangkeun teks bentuk kiwari sarta kaluar.
Catetan. Kusabab fungsi SUBSTITUTE anu digunakeun dina rumus inti urang sénsitip-huruf , boh Lambdas ( MultiReplace jeung ReplaceChars ) nganggap hurup gedé jeung aksara leutik jadi karakter béda.
Panggihan massal sareng ganti ku UDF
Upami pungsi LAMBDA henteu sayogi dina Excel anjeun, anjeun tiasa nyerat pungsi anu ditetepkeun ku pangguna pikeun multi-ganti ku cara tradisional nganggo VBA.
Pikeun ngabédakeun UDF tina fungsi MultiReplace anu didefinisikeun LAMBDA, urang badé namina béda, sebutkeun MassReplace . Kodeu fungsina nyaéta kieu:
Fungsi MassReplace(InputRng Salaku Range, FindRng Salaku Range, ReplaceRng Salaku Range) Salaku Varian () TaramarRes () Salaku Variant 'array pikeun nyimpen hasil Taram arSearchReplace (), sTmp Salaku String 'array dimana nyimpen pasangan manggihan / ngaganti, string samentara Taram iFindCurRow, cntFindRows Salaku Long 'indéks baris ayeuna tina Asép Sunandar Sunarya SearchReplace, cacah tina barisan Taram iInputCurRow, iInputCurCol, cntInputRows, cntInputCols Salaku Long 'indéks baris ayeuna dina rentang sumber, indéks kolom ayeuna dina rentang sumber, cacah baris, cacah 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) 'nyiapkeun susunan manggihan / ngaganti pasangan Pikeun iFindCurRow To (cSearchReplace = 1 iFindCurRow, 1) = FindRng.Cells(iFindCurRow, 1).Nilai arSearchReplace(iFindCurRow, 2) = ReplaceRng.Cells(iFindCurRow, 1).Nilai Salajengna 'Milarian jeung ngaganti dina rentang sumber Pikeun iInputCurRow = 1InputCurRow = 1. 1 Pikeun cntInputCols sTm p = InputRng.Cells(iInputCurRow, iInputCurCol).Nilai 'Ngagantikeun sakabéh manggihan / ngaganti pasangan dina unggal sél Pikeun iFindCurRow = 1 Pikeun cntFindRows sTmp = Ganti (sTmp, arSearchReplace(iFindCurRow, 1), arSearchReplace(iFindCurRow, 1), arSearchReplace(i,RendFind) (iInputCurRow, iInputCurCol) = sTmp Next Next MassReplace = arRes End FunctionKawas fungsi anu ditetepkeun ku LAMBDA, UDFs workbook-wide . Maksudna teh