Excel: atrast un aizstāt vairākas vērtības vienlaicīgi

  • Dalīties Ar Šo
Michael Brown

Šajā pamācībā aplūkosim vairākus veidus, kā atrast un aizstāt vairākus vārdus, virknes vai atsevišķas rakstzīmes, lai jūs varētu izvēlēties savām vajadzībām vispiemērotāko.

Kā cilvēki parasti meklē programmā Excel? Lielākoties, izmantojot funkciju Atrast & amp; aizstāt, kas darbojas labi atsevišķām vērtībām. Bet ko darīt, ja ir jāaizstāj desmitiem vai pat simtiem elementu? Protams, neviens nevēlas veikt visus šos aizstāšanas darbus manuāli pa vienam un pēc tam, kad dati mainās, darīt to visu no jauna. Par laimi, ir dažas efektīvākas metodes, kā veikt masveida aizstāšanu programmā Excel, unmēs detalizēti izpētīsim katru no tiem.

    Vairāku vērtību atrašana un aizstāšana, izmantojot ielocīto SUBSTITUTE

    Visvienkāršākais veids, kā programmā Excel atrast un aizstāt vairākus ierakstus, ir, izmantojot funkciju SUBSTITUTE.

    Formulas loģika ir ļoti vienkārša: jūs rakstāt dažas atsevišķas funkcijas, lai veco vērtību aizstātu ar jaunu. Un pēc tam šīs funkcijas tiek ievietotas viena otrā, lai katra nākamā SUBSTITUTE izmantotu iepriekšējās SUBSTITUTE rezultātu, meklējot nākamo vērtību.

    AIZVIETOTĀJS(AIZVIETOTĀJS(AIZVIETOTĀJS( teksts , old_text1 , new_text1 ), old_text2 , new_text2 ), old_text3 , new_text3 )

    Pieņemsim, ka A2:A10 atrašanās vietu sarakstā vēlaties aizstāt saīsinātos valstu nosaukumus (piem. FR , APVIENOTĀ KARALISTE un ASV ) ar pilnajiem nosaukumiem.

    Lai to izdarītu, ievadiet vecās vērtības D2:D4 un jaunās vērtības E2:E4, kā parādīts zemāk redzamajā ekrānšāviņas attēlā. Pēc tam B2 ierakstiet tālāk norādīto formulu un nospiediet Enter:

    =AIZSTĀJĒJS(AIZSTĀJĒJS(AIZSTĀJĒJS(A2:A10, D2, E2), D3, E3), D4, E4)

    ...un visas nomaiņas tiks veiktas uzreiz:

    Lūdzu, ņemiet vērā, ka iepriekš minētā metode darbojas tikai Excel 365 kas atbalsta dinamiskos masīvus.

    Pirmsdinamiskajās Excel 2019, Excel 2016 un agrākajās Excel 2019, Excel 2016 un agrākajās versijās formula ir jāuzraksta augšējai šūnai (B2) un pēc tam jākopē uz zemāk esošajām šūnām:

    =AIZSTĀJ(AIZVIETOT(AIZVIETOT(A2, $D$2, $E$2), $D$3, $E$3), $D$4, $E$4).

    Lūdzu, pievērsiet uzmanību tam, ka šajā gadījumā mēs bloķējam aizvietošanas vērtības ar absolūtajām šūnu atsaucēm, lai tās netiktu pārvietotas, kopējot formulu uz leju.

    Piezīme. SUBSTITUTE funkcija ir lielo un mazo izmēru , kas nozīmē, ka jums jāievada vecās vērtības ( old_text ) ar tādiem pašiem burtu burtiem, kā tie parādās sākotnējos datos.

    Lai cik vienkārša šī metode arī varētu būt, tai ir būtisks trūkums - ja ir jāaizstāj desmitiem elementu, ieliktās funkcijas kļūst diezgan grūti pārvaldāmas.

    Priekšrocības : viegli īstenojams; atbalstīts visās Excel versijās

    Trūkumi : vislabāk izmantot ierobežotam skaitam atrast/aizstāt vērtības

    Vairāku ierakstu meklēšana un aizstāšana ar XLOOKUP

    Situācijā, kad vēlaties nomainīt visu šūnas saturu , nevis tās daļa, noder XLOOKUP funkcija.

    Pieņemsim, ka A slejā ir valstu saraksts un mērķis ir aizstāt visus saīsinājumus ar attiecīgajiem pilnajiem nosaukumiem. Tāpat kā iepriekšējā piemērā, sākumā ievadiet elementus "Atrast" un "Aizstāt" atsevišķās slejās (attiecīgi D un E) un pēc tam ievadiet šo formulu B2:

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

    Tulkojot no Excel valodas uz cilvēku valodu, formulas darbība ir šāda:

    Meklē A2 vērtību (lookup_value) D2:D4 (lookup_array) un atgriež atbilstību no E2:E4 (return_array). Ja tā nav atrasta, iegūst sākotnējo vērtību no A2.

    Divreiz noklikšķiniet uz aizpildīšanas roktura, lai formula tiktu nokopēta uz zemāk redzamajām šūnām, un rezultāts neliks jums gaidīt:

    Tā kā XLOOKUP funkcija ir pieejama tikai programmā Excel 365, iepriekšminētā formula nedarbosies agrākajās versijās. Tomēr jūs varat viegli atdarināt šo darbību, izmantojot IFERROR vai IFNA un VLOOKUP kombināciju:

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

    Piezīme. Atšķirībā no SUBSTITUTE XLOOKUP un VLOOKUP funkcijas ir nav lielo un mazo burtu sensitivitātes , kas nozīmē, ka tās meklē meklēšanas vērtības, neņemot vērā burtu burtu lielumu. Piemēram, mūsu formula aizstās abas šādas vērtības FR un fr ar Francija .

    Priekšrocības : neparasta parasto funkciju izmantošana; darbojas visās Excel versijās

    Trūkumi : darbojas šūnas līmenī, nevar aizstāt daļu šūnas satura.

    Vairākkārtēja aizstāšana, izmantojot rekursīvo LAMBDA funkciju

    Microsoft 365 abonentiem Excel nodrošina īpašu funkciju, kas ļauj izveidot pielāgotas funkcijas, izmantojot tradicionālo formulas valodu. Jā, es runāju par LAMBDA. Šīs metodes skaistums ir tas, ka tā var pārvērst ļoti garu un sarežģītu formulu ļoti kompaktā un vienkāršā formulā. Turklāt tā ļauj jums izveidot savas funkcijas, kas neeksistē programmā Excel, kaut ko, kas iepriekš bijaiespējams tikai ar VBA.

    Sīkāku informāciju par pielāgotu LAMBDA funkciju izveidi un lietošanu skatiet šajā pamācībā: Kā rakstīt LAMBDA funkcijas programmā Excel. Šeit mēs apskatīsim dažus praktiskus piemērus.

    Priekšrocības : rezultāts ir eleganta un pārsteidzoši vienkārši lietojama funkcija neatkarīgi no aizvietošanas pāru skaita.

    Trūkumi : pieejams tikai programmā Excel 365; attiecas tikai uz konkrētu darbgrāmatu, un to nevar atkārtoti izmantot dažādās darbgrāmatas.

    Piemērs 1. Meklēšana un aizstāšana uzreiz vairākiem vārdiem/rindu virknēm

    Lai vienā reizē aizstātu vairākus vārdus vai tekstu, esam izveidojuši pielāgotu LAMBDA funkciju ar nosaukumu MultiReplace , kas var būt vienā no šīm formām:

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

    Vai

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

    Abas ir rekursīvas funkcijas, kas izsauc pašas sevi. Atšķirība ir tikai tajā, kā tiek noteikts izejas punkts.

    Pirmajā formulā funkcija IF pārbauda, vai vecais saraksts nav tukšs (vecais""). Ja TRUE, saraksts MultiReplace Ja tiek izsaukta funkcija FALSE, funkcija atgriež teksts tā pašreizējā formā un iziet no tā.

    Otrajā formulā tiek izmantota pretēja loģika: ja vecais ir tukšs (old=""), tad atgriezt teksts un izejiet; pretējā gadījumā zvaniet MultiReplace .

    Vissarežģītākā daļa ir paveikta! Jums atliek tikai nosaukt nosaukumu. MultiReplace funkciju nosaukuma pārvaldītājā, kā parādīts zemāk redzamajā ekrānšāviņattēlā. Sīkāku informāciju skatiet sadaļā Kā nosaukt LAMBDA funkciju.

    Kad funkcijai ir piešķirts nosaukums, to var izmantot tāpat kā jebkuru citu iebūvētu funkciju.

    Neatkarīgi no tā, kuru no abiem formulas variantiem izvēlaties, no galalietotāja viedokļa sintakse ir tikpat vienkārša:

    MultiReplace(teksts, vecais, jaunais)

    Kur:

    • Teksts - avota dati
    • Vecais - vērtības, lai atrastu
    • Jauns - vērtības, kas jāaizstāj ar

    Turpinot iepriekšējo piemēru, aizstāsim ne tikai valstu, bet arī valstu saīsinājumus. Šim nolūkam ievadiet saīsinājumus ( vecais vērtības) D slejā, kas sākas D2, un pilnos nosaukumus ( jauns vērtības) E slejā, sākot no E2.

    Ievadiet B2 sadaļā MultiReplace funkciju:

    =MultiReplace(A2:A10, D2, E2)

    Nospiediet Enter un baudiet rezultātus :)

    Kā darbojas šī formula

    Lai izprastu šo formulu, ir jāizprot rekursija. Tas var šķist sarežģīti, taču princips ir pavisam vienkāršs. Ar katru atkārtojumu rekursīvā funkcija atrisina vienu mazāku lielākas problēmas gadījumu. Mūsu gadījumā rekursīvā funkcija ir MultiReplace funkcija veic cilpu caur vecajām un jaunajām vērtībām un katrā cilpā veic vienu nomaiņu:

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

    Tāpat kā ligzdotajās SUBSTITUTE funkcijās, iepriekšējās SUBSTITUTE rezultāts kļūst par iepriekšējās SUBSTITUTE teksts parametrs nākamajam SUBSTITUTE. Citiem vārdiem sakot, katrā nākamajā izsaukumā MultiReplace SUBSTITUTE funkcija apstrādā nevis sākotnējo teksta virkni, bet gan iepriekšējā izsaukuma rezultātu.

    Lai apstrādātu visus vienumus vecais sarakstu, mēs sākam ar visaugstāko šūnu un izmantojam funkciju OFFSET, lai ar katru mijiedarbību pārvietotos par 1 rindu uz leju:

    OFFSET(old, 1, 0)

    Tas pats attiecas uz jauns saraksts:

    OFFSET(new, 1, 0)

    Svarīgi ir nodrošināt izejas punkts lai novērstu rekursīvo izsaukumu turpināšanos uz visiem laikiem. Tas tiek darīts ar funkcijas IF palīdzību - ja vecais šūna ir tukša, funkcija atgriež teksts tā pašreizējā formā un izejas:

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

    vai

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

    Piemērs 2. Vairāku rakstzīmju aizstāšana programmā Excel

    Principā MultiReplace iepriekšējā piemērā aplūkotā funkcija var apstrādāt arī atsevišķas rakstzīmes, ja katra vecā un jaunā rakstzīme tiek ievadīta atsevišķā šūnā, tieši tāpat kā saīsinātie un pilnie vārdi iepriekš minētajos ekrānšāviņos.

    Ja vēlaties ievadīt vecās rakstzīmes vienā šūnā un jaunās rakstzīmes citā šūnā vai ievadīt tās tieši formulā, varat izveidot citu pielāgotu funkciju ar nosaukumu ReplaceChars , izmantojot kādu no šīm formulām:

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

    Vai

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

    Neaizmirstiet, kā parasti, nosaukt savu jauno Lambda funkciju Name Manager:

    Jaunā pielāgotā funkcija ir gatava lietošanai:

    ReplaceChars(teksts, old_chars, new_chars)

    Kur:

    • Teksts - oriģinālās virknes
    • Vecais - meklējamās rakstzīmes
    • Jauns - rakstzīmes, kas jāaizstāj ar

    Lai to pārbaudītu uz vietas, izdarīsim darbību, kas bieži tiek veikta importētajiem datiem, - aizstāsim viedās pēdiņas un viedos apostrofus ar taisnām pēdiņām un taisniem apostrofiem.

    Vispirms mēs ievadām viedās pēdiņas un viedo apostrofu D2, taisnās pēdiņas un taisno apostrofu E2, atdalot rakstzīmes ar atstarpi, lai nodrošinātu labāku salasāmību. (Tā kā mēs abās šūnās izmantojam vienu un to pašu atdalītāju, tas neietekmēs rezultātu - Excel vienkārši aizstās atstarpi ar atstarpi.)

    Pēc tam šo formulu ievadām B2:

    =ReplaceChars(A2:A4, D2, E2)

    Un mēs ieguvām tieši tādus rezultātus, kādus meklējām:

    Rakstzīmes ir iespējams ievadīt arī tieši formulā. Mūsu gadījumā vienkārši atcerieties "dublēt" taisnās pēdiņas šādā veidā:

    =ReplaceChars(A2:A4, "" " '", """ "" "" '")

    Kā darbojas šī formula

    Portāls ReplaceChars funkcija cikliski izskata old_chars un new_chars virknes un veic vienu aizvietošanu pēc otras, sākot ar pirmo rakstzīmi pa kreisi. Šo daļu veic funkcija SUBSTITUTE:

    SUBSTITUTE(teksts, LEFT(old_chars), LEFT(new_chars))

    Ar katru iterāciju funkcija RIGHT no abām rakstzīmēm pa kreisajā pusē atņem vienu rakstzīmi. old_chars un new_chars virknes, lai LEFT varētu iegūt nākamo aizstājamo rakstzīmju pāri:

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

    Pirms katra rekursīvā izsaukuma IF funkcija novērtē old_chars Ja tā nav tukša, funkcija izsauc pati sevi. Tiklīdz ir nomainīta pēdējā rakstzīme, iterācijas process beidzas, un formula atgriežas. teksts tā pašreizējā formā un izejas.

    Piezīme. Tā kā SUBSTITUTE funkcija, ko izmanto mūsu galvenajās formulās, ir lielo un mazo izmēru , abas lambdas ( MultiReplace un ReplaceChars ) lielos un mazos burtus uzskata par dažādām rakstzīmēm.

    Masveida atrašana un aizstāšana ar UDF

    Ja jūsu programmā Excel nav pieejama funkcija LAMBDA, varat uzrakstīt lietotāja definētu funkciju daudzkārtējai aizstāšanai tradicionālā veidā, izmantojot VBA.

    Lai nošķirtu UDF no LAMBDA definētā MultiReplace funkciju, mēs to nosauksim savādāk, piemēram. MassReplace Funkcijas kods ir šāds:

    Funkcija MassReplace(InputRng As Range, FindRng As Range, ReplaceRng As Range) As Variant () Dim arRes() As Variant 'masīvs rezultātu glabāšanai Dim arSearchReplace(), sTmp As String 'masīvs, kurā glabāt atrast/aizstāt pārus, pagaidu virkne Dim iFindCurRow, cntFindRows As Long 'pašreizējās rindas indekss SearchReplace masīvā, rindu skaits Dim iInputCurRow, iInputCurCol, cntInputRows,cntInputCols As Long 'pašreizējās rindas indekss avota diapazonā, pašreizējās kolonnas indekss avota diapazonā, rindu skaits, kolonnu skaits 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) 'sagatavo atrast/aizstāt pāru masīvu ForiFindCurRow = 1 To cntFindRows arSearchReplace(iFindCurRow, 1) = FindRng.Cells(iFindCurRow, 1).Value arSearchReplace(iFindCurRow, 2) = ReplaceRng.Cells(iFindCurRow, 1).Value Next 'Meklēšana un aizstāšana avota diapazonā For iInputCurRow = 1 To cntInputRows For iInputCurCol = 1 To cntInputCols sTmp = InputRng.Cells(iInputCurRow, iInputCurCol).Value 'Visu atrast/aizstāt pārus katrā lodziņāFor iFindCurRow = 1 To cntFindRows sTmp = Replace(sTmp, arSearchReplace(iFindCurRow, 1), arSearchReplace(iFindCurRow, 2)) Next arRes(iInputCurRow, iInputCurCol) = sTmp Next Next Next Next MassReplace = arRes End Function End Function

    Tāpat kā LAMBDA definētās funkcijas, UDF ir darbgrāmatas mēroga Tas nozīmē, ka MassReplace funkcija darbosies tikai tajā darbgrāmatā, kurā ir ievietots kods. Ja neesat pārliecināts, kā to izdarīt pareizi, izpildiet darbības, kas aprakstītas sadaļā Kā ievietot VBA kodu programmā Excel.

    Kad kods ir pievienots darbgrāmatā, funkcija parādīsies formulas inteliģencē - tikai funkcijas nosaukums, nevis argumenti! Lai gan, manuprāt, tas nav nekas liels, lai atcerētos sintaksi:

    MassReplace(input_range, find_range, replace_range)

    Kur:

    • Input_range - avota diapazonu, kurā vēlaties aizstāt vērtības.
    • Find_range - meklējamās rakstzīmes, virknes vai vārdus.
    • Replace_range - rakstzīmes, virknes vai vārdus, ar kuriem aizstāt.

    Programmā Excel 365, pateicoties dinamisko masīvu atbalstam, tas darbojas kā parasta formula, kas jāievada tikai augšējā šūnā (B2):

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

    Pirmsdinamiskajā programmā Excel tas darbojas kā vecā stila CSE masīva formula: atlasiet visu avota diapazonu (B2:B10), ievadiet formulu un, lai to pabeigtu, vienlaicīgi nospiediet taustiņus Ctrl + Shift + Enter.

    Priekšrocības : pienācīga alternatīva pielāgotai LAMBDA funkcijai programmā Excel 2019, Excel 2016 un iepriekšējās versijās

    Trūkumi : darbgrāmata ir jāglabā kā .xlsm fails ar iespējotu makroatļauju.

    Lielapjoma aizstāšana programmā Excel ar VBA makro

    Ja jums patīk automatizēt kopīgus uzdevumus, izmantojot makrosistēmas, varat izmantot šādu VBA kodu, lai atrastu un aizstātu vairākas vērtības diapazonā.

    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 Sub

    Lai makrofoto izmantotu uzreiz, varat lejupielādēt mūsu parauga darbgrāmatu, kurā ir kods. Vai arī varat ievietot kodu savā darbgrāmatā.

    Kā lietot makro

    Pirms makra palaišanas ievadiet vecās un jaunās vērtības divās blakus esošās kolonnās, kā parādīts attēlā (C2:D4).

    Pēc tam atlasiet avota datus, nospiediet Alt + F8 , izvēlieties BulkReplace un noklikšķiniet uz Palaist .

    avota dusmas ir iepriekš atlasīta, vienkārši pārbaudiet atsauci un noklikšķiniet uz Labi:

    Pēc tam atlasiet nomainīt diapazonu un noklikšķiniet uz Labi:

    Paveikts!

    Priekšrocības : iestatiet vienreiz, izmantojiet atkārtoti jebkurā laikā

    Trūkumi : makro ir jāpalaiž pie katrām datu izmaiņām

    Vairākkārtēja atrašana un aizstāšana programmā Excel, izmantojot rīku Substringa

    Pirmajā piemērā es minēju, ka ieliktais SUBSTITUTE ir visvienkāršākais veids, kā Excel programmā aizstāt vairākas vērtības. Atzīstu, ka kļūdījos. Mūsu Ultimate Suite padara visu vēl vienkāršāku!

    Lai darblapā veiktu masveida nomaiņu, dodieties uz Ablebits dati cilni un noklikšķiniet uz Virknes rīki > Aizstāt apakšvirknes .

    Portāls Aizstāt apakšvirknes tiks parādīts dialoglodziņš ar lūgumu definēt Avots: diapazonu un Apakšvirksti diapazons.

    Kad atlasīti abi diapazoni, noklikšķiniet uz Aizstāt un atrodiet rezultātus jaunā slejā, kas ievietota pa labi no sākotnējiem datiem. Jā, tas ir tik vienkārši!

    Padoms. Pirms noklikšķiniet uz Aizstāt , jums ir jāņem vērā viena svarīga lieta - tas, ka Lietošana pēc burtu un lielo un mazo burtu pazīmēm Noteikti to atzīmējiet, ja vēlaties apstrādāt lielos un mazos burtus kā dažādas rakstzīmes. Šajā piemērā mēs atzīmējam šo opciju, jo vēlamies aizstāt tikai virknes ar lielajiem burtiem un atstāt neskartas apakšvirknes, piemēram, "fr", "uk" vai "ak" citos vārdos.

    Ja vēlaties uzzināt, kādas citas masveida operācijas var veikt ar virknēm, iepazīstieties ar citiem mūsu komplektā Ultimate Suite iekļautajiem apakšvirkņu rīkiem. Vai vēl labāk lejuplādējiet pārbaudes versiju un izmēģiniet to!

    Tas ir veids, kā programmā Excel atrast un aizstāt vairākus vārdus un rakstzīmes vienlaicīgi. Paldies, ka izlasījāt, un ceru, ka nākamnedēļ tiksimies mūsu emuārā!

    Pieejamās lejupielādes

    Vairākkārtēja atrašana un aizstāšana programmā Excel (.xlsm failā)

    Ultimate Suite 14 dienu pilnībā funkcionāla versija (.exe fails)

    Maikls Brauns ir īpašs tehnoloģiju entuziasts, kura aizraušanās ir sarežģītu procesu vienkāršošana, izmantojot programmatūras rīkus. Ar vairāk nekā desmit gadu pieredzi tehnoloģiju nozarē viņš ir pilnveidojis savas prasmes programmās Microsoft Excel un Outlook, kā arī Google izklājlapās un dokumentos. Maikla emuārs ir veltīts tam, lai dalītos savās zināšanās un pieredzē ar citiem, sniedzot viegli izpildāmus padomus un pamācības produktivitātes un efektivitātes uzlabošanai. Neatkarīgi no tā, vai esat pieredzējis profesionālis vai iesācējs, Maikla emuārs piedāvā vērtīgas atziņas un praktiskus padomus, kā maksimāli izmantot šos būtiskos programmatūras rīkus.