Excel: pronađite i zamijenite više vrijednosti odjednom

  • Podijeli Ovo
Michael Brown

U ovom vodiču ćemo pogledati nekoliko načina za pronalaženje i zamjenu više riječi, nizova ili pojedinačnih znakova, tako da možete odabrati onaj koji najbolje odgovara vašim potrebama.

Kako ljudi obično pretražuju u Excelu? Uglavnom, korištenjem Find & Funkcija zamjene, koja dobro funkcionira za pojedinačne vrijednosti. Ali šta ako imate desetine ili čak stotine stavki za zamjenu? Naravno, niko ne bi želeo da izvrši sve te zamene ručno, jednu po jednu, a onda sve iznova kada se podaci promene. Srećom, postoji nekoliko efikasnijih metoda za masovnu zamjenu u Excelu, a mi ćemo detaljno istražiti svaku od njih.

    Pronađite i zamijenite više vrijednosti sa ugniježđenom SUBSTITUTE

    Najlakši način da pronađete i zamijenite više unosa u Excelu je korištenje funkcije SUBSTITUTE.

    Logika formule je vrlo jednostavna: pišete nekoliko pojedinačnih funkcija da biste zamijenili staru vrijednost novom . A zatim, te funkcije ugnijezdite jednu u drugu, tako da svaki sljedeći SUBSTITUTE koristi izlaz prethodne ZAMJENE da traži sljedeću vrijednost.

    SUBSTITUTE(SUBSTITUTE(SUBSTITUTE( tekst, stari_tekst1, novi_tekst1), stari_tekst2, novi_tekst2), stari_tekst3, novi_tekst3)

    Na listi lokacija u A2:A10, pretpostavimo da želite zamijeniti skraćene nazive zemalja (kao što su FR , UK i SAD ) punim MassReplace funkcija će raditi samo u radnoj knjizi u koju ste umetnuli kod. Ako niste sigurni kako to učiniti ispravno, slijedite korake opisane u Kako umetnuti VBA kod u Excel.

    Kada se kod doda u vašu radnu knjigu, funkcija će se pojaviti u formuli intellisense - samo ime funkcije, a ne argumenti! Ipak, vjerujem da nije velika stvar zapamtiti sintaksu:

    MassReplace(ulazni_opseg, pronađi_opseg, zamjeni_raspon)

    Gdje:

    • Input_range - izvorni raspon gdje želite zamijeniti vrijednosti.
    • Find_range - znakovi, nizovi ili riječi za pretraživanje.
    • Replace_range - znakovi, nizovi, ili riječi koje treba zamijeniti.

    U Excelu 365, zbog podrške za dinamičke nizove, ovo funkcionira kao normalna formula, koju je potrebno unijeti samo u gornju ćeliju (B2):

    =MassReplace(A2:A10, D2:D4, E2:E4)

    U preddinamičkom Excelu, ovo radi kao formula CSE niza starog stila: odabirete cijeli izvorni raspon (B2:B10), upisujete formule i istovremeno pritisnite tipke Ctrl + Shift + Enter da biste je dovršili.

    Prednosti : pristojna alternativa prilagođenoj LAMBDA funkciji u Excelu 2019 , Excel 2016 i starije verzije

    Nedostaci : radna knjiga mora biti sačuvana kao .xlsm datoteka omogućena za makroe

    Grupna zamjena u Excelu VBA makro

    Ako volite auto uparivanje uobičajenih zadataka sa makroima, zatim vimože koristiti sljedeći VBA kod za pronalaženje i zamjenu više vrijednosti u rasponu.

    Sub BulkReplace() Dim Rng As Range, SourceRng As Range, ReplaceRng As Range On Error Nastavi Next Set SourceRng = Application.InputBox( "Izvorni podaci: " , "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 Ako Not ReplaceRng nije ništa onda Application.ScreenUpdating = False za svaki Rng u ReplaceRng.Columns(1).Cells SourceRng.Replace what:=Rng.Value, replacement:=Rng.Offset(0, 1).Value Next Application.ScreenUpdating = True End If End If End Sub

    Da biste odmah iskoristili makro, možete preuzeti naš primjer radne knjige koja sadrži kod. Ili možete umetnuti kod u svoju radnu knjigu.

    Kako koristiti makro

    Prije pokretanja makroa, upišite stare i nove vrijednosti u dvije susjedne kolone kao što je prikazano na slici ispod ( C2:D4).

    A zatim odaberite svoje izvorne podatke, pritisnite Alt + F8, odaberite makro BulkReplace i kliknite Pokreni .

    Kako je izvorni bijes unaprijed odabran, samo provjerite referencu i kliknite OK:

    Nakon toga, odaberite zamijeni raspon i kliknite OK:

    Gotovo!

    Prednosti : postavljanje jednom, ponovno korištenje bilo kada

    Nedostaci : makro se mora pokrenuti sa svakim podacimachange

    Višestruko pronalaženje i zamjena u Excelu pomoću alata Substring

    U samom prvom primjeru, spomenuo sam da je ugniježđena SUBSTITUTE najlakši način za zamjenu više vrijednosti u Excelu. Priznajem da sam pogrešio. Naš Ultimate Suite čini stvari još lakšima!

    Da izvršite masovnu zamjenu u svom radnom listu, idite na karticu Ablebits Data i kliknite na Alati podniza > Zamijeni podnizove .

    Pojaviće se dijaloški okvir Zamijeni podnizove u kojem će se tražiti da definirate raspon Izvor i Podnizovi raspon.

    Sa dva odabrana raspona, kliknite na dugme Zamijeni i pronađite rezultate u novom stupcu umetnutom s desne strane originalnih podataka. Da, tako je lako!

    Savjet. Prije nego što kliknete na Zamijeni , morate uzeti u obzir jednu važnu stvar - okvir različit velika i mala slova . Obavezno ga odaberite ako želite da velika i mala slova budu različita. U ovom primjeru označimo ovu opciju jer želimo samo zamijeniti stringove s velikim slovima i ostaviti podnizove poput "fr", "uk" ili "ak" unutar drugih riječi netaknutima.

    Ako ste znatiželjni da saznate koje se druge masovne operacije mogu izvoditi na nizovima, pogledajte druge alate za podstring uključene u naš Ultimate Suite. Ili još bolje, preuzmite probnu verziju ispod i isprobajte!

    Tako možete pronaći i zamijenitiviše riječi i znakova odjednom u Excelu. Zahvaljujem vam na čitanju i nadam se da se vidimo na našem blogu sljedeće sedmice!

    Dostupna preuzimanja

    Višestruko pronalaženje i zamjena u Excelu (.xlsm datoteka)

    Ultimate Suite 14 -dnevna potpuno funkcionalna verzija (.exe datoteka)

    imena.

    Da biste to učinili, unesite stare vrijednosti u D2:D4 i nove vrijednosti u E2:E4 kao što je prikazano na slici ispod. A zatim, stavite donju formulu u B2 i pritisnite Enter:

    =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2:A10, D2, E2), D3, E3), D4, E4)

    ...i sve zamjene ćete obaviti odjednom:

    Imajte na umu da gornji pristup radi samo u Excel 365 koji podržava dinamičke nizove.

    U preddinamičkim verzijama Excela 2019, Excel 2016 i ranijih, formula treba biti napisano za najgornju ćeliju (B2), a zatim kopirano u donje ćelije:

    =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, $D$2, $E$2), $D$3, $E$3), $D$4, $E$4)

    Obratite pažnju da, u ovom slučaju, zaključavamo zamjenske vrijednosti apsolutnim referencama ćelije, tako da neće se pomicati prilikom kopiranja formule prema dolje.

    Napomena. Funkcija SUBSTITUTE je osjetljiva na velika i mala slova , što znači da biste trebali upisati stare vrijednosti ( old_text ) istim velikim slovima kao što se pojavljuju u originalnim podacima.

    Koliko god laka mogla biti, ova metoda ima značajan nedostatak - kada imate desetine stavki za zamjenu, ugniježđenim funkcijama postaje prilično teško upravljati.

    Prednosti : lako -implementirati; podržano u svim verzijama Excela

    Nedostaci : najbolje da se koristi za ograničeni broj vrijednosti pronalaženja/zamijene

    Pretraži i zamijeni više unosa sa XLOOKUP

    U situaciji kada želite zamijeniti cijeli sadržaj ćelije , a ne njegov dio, funkcija XLOOKUP je zgodna.

    Hajderecimo da imate listu zemalja u koloni A i nastojite zamijeniti sve kratice odgovarajućim punim nazivima. Kao u prethodnom primjeru, počinjete s unosom stavki "Pronađi" i "Zamijeni" u odvojenim stupcima (D i E), a zatim unosite ovu formulu u B2:

    =XLOOKUP(A2, $D$2:$D$4, $E$2:$E$4, A2)

    Prevedeno sa Excel jezika na ljudski jezik, evo šta radi formula:

    Tražite A2 vrijednost (lookup_value) u D2:D4 (lookup_array) i vratite podudaranje iz E2:E4 (return_array). Ako nije pronađena, povucite originalnu vrijednost iz A2.

    Dvaput kliknite na ručicu za popunjavanje da biste dobili formulu kopiranu u ćelije ispod, a rezultat vas neće tjerati da čekate:

    Budući da je funkcija XLOOKUP dostupna samo u programu Excel 365, gornja formula neće raditi u ranijim verzijama. Međutim, ovo ponašanje možete lako oponašati kombinacijom IFERROR ili IFNA i VLOOKUP:

    =IFNA(VLOOKUP(A2, $D$2:$E$4, 2, FALSE), A2)

    Napomena. Za razliku od SUBSTITUTE, funkcije XLOOKUP i VLOOKUP ne razlikuju velika i mala slova , što znači da traže tražene vrijednosti zanemarujući velika i mala slova. Na primjer, naša formula bi zamijenila i FR i fr sa Francuska .

    Prednosti : neobična upotreba uobičajenih funkcija; radi u svim verzijama Excela

    Nedostaci : radi na nivou ćelije, ne može zamijeniti dio sadržaja ćelije

    Višestruka zamjena korištenjem rekurzivne LAMBDA funkcije

    Za Microsoft365 pretplatnika, Excel pruža posebnu funkciju koja omogućava kreiranje prilagođenih funkcija koristeći tradicionalni jezik formula. Da, govorim o LAMBDA. Ljepota ove metode je u tome što može pretvoriti vrlo dugačku i složenu formulu u vrlo kompaktnu i jednostavnu. Štaviše, omogućava vam da kreirate sopstvene funkcije koje ne postoje u Excelu, nešto što je ranije bilo moguće samo sa VBA.

    Za detaljne informacije o kreiranju i korišćenju prilagođenih LAMBDA funkcija, pogledajte ovaj vodič: Kako za pisanje LAMBDA funkcija u Excelu. Ovdje ćemo raspravljati o nekoliko praktičnih primjera.

    Prednosti : rezultat je elegantna i zapanjujuće jednostavna za korištenje funkcija, bez obzira na broj zamjenskih parova

    Nedostaci : dostupno samo u Excel 365; specifičan za radnu svesku i ne može se ponovo koristiti u različitim radnim knjigama

    Primjer 1. Pretražujte i zamijenite više riječi/stringova odjednom

    Da bismo zamijenili više riječi ili teksta odjednom, kreirali smo prilagođeni LAMBDA funkcija, pod nazivom MultiReplace , koja može imati jedan od ovih oblika:

    =LAMBDA(text, old, new, IF(old"", MultiReplace(SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0)), text))

    Ili

    =LAMBDA(text, old, new, IF(old="", text, MultiReplace(SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0))))

    Obje su rekurzivne funkcije koje same sebe nazivaju. Razlika je samo u tome kako se uspostavlja izlazna tačka.

    U prvoj formuli, IF funkcija provjerava da li stara lista nije prazna (stara""). Ako je TRUE, poziva se funkcija MultiReplace . Ako je FALSE, funkcijavraća text njegov trenutni oblik i izlazi.

    Druga formula koristi obrnutu logiku: ako je old prazan (old=""), onda vraća tekst i izlaz; inače pozovite MultiReplace .

    Najteži dio je postignut! Ono što vam preostaje je da imenujete funkciju MultiReplace u Name Manageru kao što je prikazano na slici ispod. Za detaljne smjernice pogledajte Kako imenovati LAMBDA funkciju.

    Kada funkcija dobije ime, možete je koristiti kao i bilo koju drugu ugrađenu funkciju.

    Koju god od dvije varijacije formule da odaberete, iz perspektive krajnjeg korisnika, sintaksa je jednostavna poput ove:

    MultiReplace(tekst, stara, nova)

    Gdje:

    • Tekst - izvorni podaci
    • Stari - vrijednosti koje treba pronaći
    • Novi - vrijednosti koje treba zamijeniti sa

    Uzmimo malo dalje u prethodni primjer, zamijenimo ne samo kratice država nego i kratice država. Za ovo upišite kratice ( stare vrijednosti) u stupac D koji počinje u D2 i puna imena ( nove vrijednosti) u stupac E koji počinje u E2.

    U B2, unesite funkciju MultiReplace:

    =MultiReplace(A2:A10, D2, E2)

    Pritisnite Enter i uživajte u rezultatima :)

    Kako ova formula funkcionira

    Ključ za razumijevanje formule je razumijevanje rekurzije. Ovo možda zvuči komplikovano, ali princip je prilično jednostavan. Sa svakimiteracija, rekurzivna funkcija rješava jednu malu instancu većeg problema. U našem slučaju, funkcija MultiReplace petlja kroz stare i nove vrijednosti i, sa svakom petljom, izvodi jednu zamjenu:

    MultiReplace (SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0))

    Kao i kod ugniježđenih funkcija SUBSTITUTE, rezultat prethodne ZAMJENE postaje parametar text za sljedeći SUBSTITUTE. Drugim riječima, pri svakom sljedećem pozivu MultiReplace , funkcija SUBSTITUTE ne obrađuje originalni tekstualni niz, već izlaz prethodnog poziva.

    Da obrađuje sve stavke na stara lista, počinjemo s najvišom ćelijom i koristimo funkciju OFFSET da pomjerimo 1 red dolje sa svakom interakcijom:

    OFFSET(old, 1, 0)

    Isto se radi za nova lista:

    OFFSET(new, 1, 0)

    Ključna stvar je osigurati izlaznu tačku kako bi se spriječilo da se rekurzivni pozivi nastavljaju zauvijek. To se radi uz pomoć IF funkcije - ako je stara ćelija prazna, funkcija vraća tekst u sadašnjem obliku i izlazi:

    =LAMBDA(text, old, new, IF(old="", text, MultiReplace(…)))

    ili

    =LAMBDA(text, old, new, IF(old"", MultiReplace(…), text))

    Primjer 2. Zamijenite više znakova u Excelu

    U principu, funkcija MultiReplace o kojoj se govori u prethodnom primjeru može rukuju i pojedinačnim znakovima, pod uslovom da se svaki stari i novi znak unese u zasebnu ćeliju, baš kao što su skraćeni i puni nazivi na gornjim snimcima ekrana.

    Ako biste radije unijeli stariznakove u jednoj ćeliji i nove znakove u drugoj, ili ih upišite direktno u formulu, tada možete kreirati drugu prilagođenu funkciju, pod nazivom ReplaceChars , koristeći jednu od ovih formula:

    =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))

    Ili

    =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))))

    Ne zaboravite da imenujete svoju novu Lambda funkciju u Name Manageru kao i obično:

    I vaša nova prilagođena funkcija je spremna za upotrebu:

    ReplaceChars(text, old_chars, new_chars)

    Gdje:

    • Text - originalni nizovi
    • Stari - znakovi za traženje
    • Novi - znakovi koje treba zamijeniti sa

    Da bi se izvršio terenski test, hajde da uradimo nešto što se često izvodi na uvezenim podacima - zamijenimo pametne navodnike i pametne apostrofe ravnim navodnicima i ravnim apostrofima.

    Prvo, unosimo pametne navodnike i pametni apostrof u D2, ravne navodnike i ravni apostrof u E2 , odvajajući znakove razmacima radi bolje čitljivosti. (Kako koristimo isti graničnik u obje ćelije, to neće imati utjecaja na rezultat - Excel će samo zamijeniti razmak razmakom.)

    Nakon toga unosimo ovu formulu u B2:<:

    =ReplaceChars(A2:A4, D2, E2)

    I dobiti upravo one rezultate koje smo tražili:

    Takođe je moguće upisati znakove direktno u formulu. U našem slučaju, samo zapamtite da "duplicirate" ravne navodnike ovako:

    =ReplaceChars(A2:A4, "“ ” ’", """ "" '")

    Kako ova formula funkcionira

    The ReplaceChars funkcija kruži kroz nizove old_chars i new_chars i vrši jednu po jednu zamjenu počevši od prvog znaka s lijeve strane. Ovaj dio radi funkcija SUBSTITUTE:

    SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars))

    Sa svakom iteracijom, funkcija DESNO uklanja jedan znak s lijeve strane i od starih_znakova i new_chars nizovi, tako da LEFT može dohvatiti sljedeći par znakova za zamjenu:

    ReplaceChars(SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars)), RIGHT(old_chars, LEN(old_chars)-1), RIGHT(new_chars, LEN(new_chars)-1))

    Prije svakog rekurzivnog poziva, IF funkcija procjenjuje niz old_chars . Ako nije prazan, funkcija poziva samu sebe. Čim je zadnji znak zamijenjen, proces iteracije se završava, formula vraća tekst u sadašnjem obliku i izlazi.

    Napomena. Budući da je funkcija SUBSTITUTE koja se koristi u našim osnovnim formulama osjetljiva na velika i mala slova , oba Lambda ( MultiReplace i ReplaceChars ) tretiraju velika i mala slova kao različite znakove.

    Masovno pronalaženje i zamjena sa UDF

    U slučaju da funkcija LAMBDA nije dostupna u vašem Excelu, možete napisati korisnički definiranu funkciju za višestruku zamjenu na tradicionalan način koristeći VBA.

    Da bismo razlikovali UDF od LAMBDA-definirane funkcije MultiReplace , nazvat ćemo je drugačije, recimo MassReplace . Kod funkcije je sljedeći:

    Funkcija MassReplace(InputRng As Range, FindRng As Range, ReplaceRng As Range) As Variant () DimarRes() As Variant 'niz za pohranjivanje rezultata Dim arSearchReplace(), sTmp As String 'niz gdje se pohranjuju parovi za pronalaženje/zamjena, privremeni niz Dim iFindCurRow, cntFindRows As Long 'indeks trenutnog reda SearchReplace niza, broj od redova Dim iInputCurRow, iInputCurCol, cntInputRows, cntInputCols As Long 'indeks trenutnog reda u izvornom rasponu, indeks tekuće kolone u izvornom rasponu, broj redova, broj kolona cntInputRows = InputRng.Rows.Count = cntInputRngs .Columns.Count cntFindRows = FindRng.Rows.Count ReDim arRes(1 do cntInputRows, 1 do cntInputCols) ReDim arSearchReplace(1 do cntFindRows, 1 do 2) 'priprema niza parova pronalaženja/zamijene za iFindRows = iFindReplace( iFindCurRow, 1) = FindRng.Cells(iFindCurRow, 1).Value arSearchReplace(iFindCurRow, 2) = ReplaceRng.Cells(iFindCurRow, 1).Value Next 'Traženje i zamjena u izvornom rasponu Za iInputCurwR = cInputCurws 1 Za cntInputCols sTm p = InputRng.Cells(iInputCurRow, iInputCurCol).Value 'Zamjena svih parova pronalaženja/zamijene u svakoj ćeliji Za iFindCurRow = 1 Za cntFindRows sTmp = Zamijeni(sTmp, arSearchReplace(iFindCurSearch, 1)Sljedeći (iFindCurSearchRow, 1)RiFindReow(1)RiFindRows (iInputCurRow, iInputCurCol) = sTmp Sljedeće Sljedeće MassReplace = arRes End Funkcija

    Kao i LAMBDA definirane funkcije, UDF-ovi su šire radne knjige . To znači da

    Michael Brown je posvećen tehnološki entuzijasta sa strašću za pojednostavljenje složenih procesa pomoću softverskih alata. Sa više od decenije iskustva u tehnološkoj industriji, usavršio je svoje vještine u Microsoft Excelu i Outlooku, kao i Google Sheets i Docs. Michaelov blog je posvećen dijeljenju svog znanja i stručnosti s drugima, pružajući jednostavne savjete i tutorijale za poboljšanje produktivnosti i efikasnosti. Bilo da ste iskusni profesionalac ili početnik, Michaelov blog nudi vrijedne uvide i praktične savjete za izvlačenje maksimuma iz ovih osnovnih softverskih alata.