Edukien taula
Tutorial honetan, hainbat hitz, kate edo karaktere indibidual aurkitzeko eta ordezkatzeko hainbat modu aztertuko ditugu, zure beharretara hobekien egokitzen dena aukera dezazun.
Nola bilatu ohi du jendeak Excel-en? Gehienbat, Find & Ordeztu eginbidea, balio bakarrerako ondo funtzionatzen duena. Baina zer gertatzen da ordezkatzeko hamarnaka edo ehunka elementu badituzu? Ziur aski, inork ez luke nahi izango ordezkapen horiek guztiak eskuz banan-banan egin, eta, ondoren, berriro egin datuak aldatzen direnean. Zorionez, Excel-en ordezkapen masiboa egiteko metodo eraginkorragoak daude, eta horietako bakoitza zehatz-mehatz ikertuko dugu.
Bilatu eta ordezkatu balio anitzak ORDEZKO habiaratuarekin
Excel-en hainbat sarrera aurkitzeko eta ordezkatzeko modurik errazena ORDEZKITU funtzioa erabiltzea da.
Formularen logika oso erraza da: funtzio indibidual batzuk idazten dituzu balio zahar bat berri batekin ordezkatzeko. . Eta gero, funtzio horiek bata bestean habiatzen dituzu, eta, horrela, ondorengo ORDEZKOAK aurreko ORDEZKOaren irteera erabil dezan hurrengo balioa bilatzeko. testu_zaharra1 , testu_berria1 ), testu_zaharra2 , testu_berria2 ), testu_zaharra3 , testu_berria )
A2:A10-ko kokapenen zerrendan, demagun herrialde-izenak laburtuak (adibidez, FR , UK eta USA ) ordezkatu nahi dituzula. MassReplace funtzioak kodea sartu duzun lan-liburuan bakarrik funtzionatuko du. Ez bazaude ziur nola egin behar den, mesedez, jarraitu Nola txertatu Excel-en VBA kodea atalean deskribatutako urratsak.
Kodea zure lan-liburuan gehitutakoan, funtzioa intellisense formulan agertuko da - soilik. funtzioaren izena, ez argumentuak! Hala ere, uste dut ez dela gauza handirik sintaxia gogoratzea:
MassReplace(sarrera_barrutia, aurkitu_barrutia, ordeztu_barrutia)Non:
- Sarrera_barrutia - iturri-barrutia non. balioak ordezkatu nahi dituzun.
- Bilatu_barrutia - bilatu beharreko karaktereak, kateak edo hitzak.
- Ordeztu_barrutia - karaktereak, kateak, edo ordezkatzeko hitzak.
Excel 365-en, matrize dinamikoen laguntza dela eta, formula normal gisa funtzionatzen du, goiko gelaxkan (B2) bakarrik sartu behar dena:
=MassReplace(A2:A10, D2:D4, E2:E4)
Excel aurredinamikoan, estilo zaharreko CSE array formula gisa funtzionatzen du: iturburu-barruti osoa hautatzen duzu (B2:B10), idatzi formula, eta sakatu Ctrl + Shift + Sartu teklak aldi berean osatzeko.
Abantailak : Excel 2019ko LAMBDA funtzio pertsonalizatu baten alternatiba duina. , Excel 2016 eta aurreko bertsioak
Eragozpenak : lan-liburua makro-gaitutako .xlsm fitxategi gisa gorde behar da
Ordezkatu ontziratuta Excel-en VBA makroarekin
Autoa maite baduzu ohiko zereginak makroekin lotzea, orduan zukhonako VBA kodea erabil dezakezu barruti batean balio anitz aurkitzeko eta ordezkatzeko.
Sub BulkReplace() Dim Rng As Range, SourceRng As Range, ReplaceRng As Range On Error On Continue Next Set SourceRng = Application.InputBox( "Iturburuko datuak: " , "Bulk Ordezkatu" , Application.Selection.Address, Type :=8) Err.Clear If Not SourceRng Nothing Is Then Set ReplaceRng = Application.InputBox( "Ordezkatu barrutia:" , "Bulk Ordezkatu" , Mota :=8) Err.Clear ReplaceRng ez bada ezer ez, orduan Application.ScreenUpdating = False Rng-n ReplaceRng.Columns(1).Cells SourceRng.Replace what:=Rng.Value, substitution:=Rng.Offset (0, 1).Value Next Application.ScreenUpdating = True End If End If End SubMakroa berehala erabiltzeko, kodea duen gure adibide-koadernoa deskarga dezakezu. Edo kodea zure lan-koadernoan txerta dezakezu.
Nola erabili makroa
Makroa exekutatu aurretik, idatzi balio zaharrak eta berriak ondoko bi zutabetan beheko irudian erakusten den moduan ( C2:D4).
Eta, gero, hautatu zure iturriko datuak, sakatu Alt + F8 , hautatu BulkReplace makroa eta egin klik Exekutatu .
iturburuaren haserrea aurrez hautatuta dagoenez, egiaztatu erreferentzia eta egin klik Ados:
Ondoren, hautatu ordezkatu barrutia eta egin klik Ados sakatu:
Bukatu!
Abantailak : behin konfiguratu, edonoiz berrerabili
Eragozpenak : makroa datu guztiekin exekutatu behar daaldatu
Bilatu eta ordeztu anitz Excel-en Azpikate tresnarekin
Lehenengo adibidean, habiaratua ORDEZKOAK Excel-en hainbat balio ordezkatzeko modurik errazena dela aipatu nuen. Oker nengoela onartzen dut. Gure Ultimate Suite-k gauzak are errazten ditu!
Zure lan-orrian ordezkapen masiboa egiteko, joan Ablebits Data fitxara eta egin klik Azpi-kateen tresnak > . Ordeztu azpikateak .
Ordezkatu azpikateak elkarrizketa-koadroa agertuko da Iturria barrutia eta <1 definitzeko eskatuz>Azpikateak barrutia.
Bi barrutiak hautatuta, egin klik Ordezkatu botoian eta aurkitu emaitzak eskuinaldean txertatutako zutabe berri batean. jatorrizko datuetatik. Bai, hain erraza da!
Aholkua. Ordezkatu sakatu aurretik, kontuan hartu beharreko gauza garrantzitsu bat dago: Maiuskulak eta minuskulak bereizten dira koadroa. Ziurtatu hautatzen duzula letra larriak eta minuskulak karaktere ezberdin gisa kudeatu nahi badituzu. Adibide honetan, aukera hau markatzen dugu, letra larriz idatzitako kateak ordezkatu nahi ditugulako eta beste hitz batzuetan "fr", "uk" edo "ak" bezalako azpikateak oso-osorik utzi nahi ditugulako.
Sakietan zein beste eragiketa ugari egin daitezkeen jakiteko jakin-mina baduzu, begiratu gure Ultimate Suite-n sartzen diren azpikateen tresnak. Edo hobeto, deskargatu beheko ebaluazio-bertsioa eta proba ezazu!
Horrela aurkitu eta ordezkatuhainbat hitz eta karaktere aldi berean Excel-en. Eskerrik asko irakurtzeagatik eta datorren astean gure blogean ikustea espero dut!
Deskarga erabilgarri
Ainbat aurkitu eta ordezkatu Excel-en (.xlsm fitxategia)
Ultimate Suite 14 -egun bertsio guztiz funtzionala (.exe fitxategia)
izenak.Hori egiteko, sartu balio zaharrak D2:D4n eta balio berriak E2:E4n beheko pantaila-argazkian erakusten den bezala. Eta gero, jarri beheko formula B2n eta sakatu Sartu:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2:A10, D2, E2), D3, E3), D4, E4)
... eta ordezkapen guztiak aldi berean egingo dituzu:
Kontuan izan, goiko planteamenduak matrize dinamikoak onartzen dituen Excel 365 -n soilik funtzionatzen du.
Excel 2019, Excel 2016 eta aurreko bertsioen aurreko bertsio dinamikoetan, formula izan behar da. goiko gelaxketarako idatzita (B2), eta ondoren kopiatu beheko gelaxketan:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, $D$2, $E$2), $D$3, $E$3), $D$4, $E$4)
Mesedez, kontutan izan, kasu honetan, ordezkapen-balioak gelaxka-erreferentzia absolutuekin blokeatzen ditugula, beraz ez dira desplazatuko formula behera kopiatzean.
Oharra. ORDEZKO funtzioak maiuskulak eta minuskulak bereizten ditu , hau da, balio zaharrak ( testu_zaharra ) jatorrizko datuetan agertzen diren letra-maiskula eta minuskula berean idatzi behar dituzu.
Erraza bezain erraza, metodo honek eragozpen nabarmen bat du: ordezkatzeko dozenaka elementu dituzunean, habiaraturiko funtzioak nahiko zailak izaten dira kudeatzea.
Abantailak : erraza -abian jartzea; Excel bertsio guztietan onartzen da
Eragozpenak : hobe da aurkitu/ordezkatu balio kopuru mugatu baterako erabiltzea
Bilatu eta ordeztu sarrera anitz XLOOKUP
zelula-eduki osoa ordezkatu nahi duzun egoeran, ez bere zati bat, XLOOKUP funtzioa ondo dator.
Dezagun.esan A zutabean herrialdeen zerrenda bat duzula eta laburdura guztiak dagozkien izen osoekin ordezkatzea. Aurreko adibidean bezala, "Bilatu" eta "Orduztu" elementuak zutabe bereizietan (D eta E hurrenez hurren) idazten hasten zara eta, ondoren, formula hau sartu B2-n:
=XLOOKUP(A2, $D$2:$D$4, $E$2:$E$4, A2)
Excel hizkuntzatik giza hizkuntzara itzulita, hona hemen formulak zer egiten duen:
Bilatu A2 balioa (lookup_value) D2:D4 (lookup_array) (lookup_array) eta itzuli E2:E4-tik (return_array) bat datorren bat. Aurkitu ezean, atera jatorrizko balioa A2-tik.
Egin klik bikoitza betetzeko heldulekuan formula beheko gelaxketan kopiatzeko, eta emaitzak ez zaitu zain geratuko:
XLOOKUP funtzioa Excel 365-en soilik eskuragarri dagoenez, goiko formulak ez du funtzionatuko aurreko bertsioetan. Hala ere, portaera hau erraz imita dezakezu IFERROR edo IFNA eta VLOOKUP konbinazio batekin:
=IFNA(VLOOKUP(A2, $D$2:$E$4, 2, FALSE), A2)
Oharra. ORDEZKOA ez bezala, XLOOKUP eta VLOOKUP funtzioek ez dira maiuskulak eta minuskulak bereizten , hau da, bilaketa-balioak bilatzen dituzte letra maiuskulak alde batera utzita. Adibidez, gure formulak FR eta fr ordezkatuko lituzke Frantzia -rekin.
Abantailak : ohiko funtzioen erabilera ezohikoa; Excel bertsio guztietan funtzionatzen du
Eragozpenak : gelaxka mailan funtzionatzen du, ezin du gelaxka-edukiaren zati bat ordezkatu
Anitz ordezkatzea LAMBDA funtzio errekurtsiboa erabiliz
Microsoftentzat365 harpidedun, Excel-ek funtzio berezi bat eskaintzen du, eta funtzio pertsonalizatuak sortzeko aukera ematen du formula-lengoaia tradizionala erabiliz. Bai, LAMBDAri buruz ari naiz. Metodo honen edertasuna formula oso luze eta konplexu bat oso trinko eta sinple batean bihur dezakeela da. Gainera, Excel-en ez dauden zure funtzioak sortzeko aukera ematen dizu, lehen VBArekin soilik posible zen zerbait.
LAMBDA funtzio pertsonalizatuak sortzeari eta erabiltzeari buruzko informazio zehatza lortzeko, begiratu tutorial hau: Nola Excel-en LAMBDA funtzioak idazteko. Hemen, adibide praktiko pare bat eztabaidatuko dugu.
Abantailak : emaitza funtzio dotorea eta erabiltzeko oso erraza da, ordezko bikoteen kopurua edozein dela ere
Eragozpenak : Excel 365-en soilik eskuragarri; lan-liburuaren espezifikoa eta ezin da berrerabili lan-liburu desberdinetan
Adibidea 1. Bilatu eta ordeztu hainbat hitz/kate aldi berean
Hainbat hitz edo testu bakarrean ordezkatzeko, pertsonalizatu bat sortu dugu. LAMBDA funtzioa, MultiReplace izenekoa, forma hauetako bat har dezakeena:
=LAMBDA(text, old, new, IF(old"", MultiReplace(SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0)), text))
Edo
=LAMBDA(text, old, new, IF(old="", text, MultiReplace(SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0))))
Biak errekurtsiboak dira beren burua deitzen duten funtzioak. Aldea irteera-puntua nola ezartzen den bakarrik dago.
Lehenengo formulan, IF funtzioak egiaztatzen du zaharra zerrenda hutsik ez dagoen (zaharra""). EGIA bada, MultiReplace funtzioari deitzen zaio. GEZURRA bada, funtzioa testua bere uneko forma itzultzen du eta irteten da.
Bigarren formulak alderantzizko logika erabiltzen du: zaharra hutsik badago (zaharra=""), itzuli testua eta irten; bestela, deitu MultiReplace .
Zatirik zailena bete da! Egin behar duzuna da MultiReplace funtzioa izendatzea izen-kudeatzailean beheko pantaila-argazkian erakusten den bezala. Jarraibide zehatzak ikusteko, ikusi Nola jarri LAMBDA funtzio bati.
Funtzioak izena jasotzen duenean, beste edozein funtzio barneratu bezala erabil dezakezu.
Hautatzen duzun bi formula aldaketetatik edozein dela ere, azken erabiltzailearen ikuspuntutik, sintaxia hau bezain sinplea da:
Ordezkatu anitzak (testua, zaharra, berria)Non:
- Testua - iturriko datuak
- Zaharra - aurkitu beharreko balioak
- Berria - ordezkatu beharreko balioak
Aurreko adibidea pixka bat harago hartuta, ordez ditzagun herrialdeko laburdurak ez ezik estatuko laburdurak ere. Horretarako, idatzi laburdurak ( balio zaharrak ) D zutabean D2tik hasita eta izen osoak ( berriak balioak) E zutabean E2tik hasita.
In B2, sartu MultiReplace funtzioa:
=MultiReplace(A2:A10, D2, E2)
Sakatu Sartu eta gozatu emaitzekin :)
Nola funtzionatzen duen formula honek
Formula ulertzeko arrastoa errekurtsioa ulertzea da. Konplikatua dirudi, baina printzipioa nahiko erraza da. Bakoitzarekiniterazioa, funtzio errekurtsibo batek problema handiago baten instantzia txiki bat ebazten du. Gure kasuan, MultiReplace funtzioak balio zaharraren eta berrien arteko begizta egiten du eta, begizta bakoitzarekin, ordezkapen bat egiten du:
MultiReplace (SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0))
ORDEZKOAK funtzio habiaratuekin gertatzen den bezala, aurreko ORDEZKOaren emaitza testua parametroa bihurtzen da hurrengo ORDEZKOAK. Beste era batera esanda, MultiReplace -ren ondorengo dei bakoitzean, ORDEZKOAK funtzioak ez du jatorrizko testu-katea prozesatzen, aurreko deiaren irteera baizik.
<1eko elementu guztiak kudeatzeko> zaharra zerrenda, goiko gelaxkatik hasiko gara eta OFFSET funtzioa erabiliko dugu elkarrekintza bakoitzean errenkada 1 behera mugitzeko:
OFFSET(old, 1, 0)
Berdin egiten da rekin. zerrenda berria:
OFFSET(new, 1, 0)
Gauza erabakigarria da irteera puntua eskaintzea dei errekurtsiboek betiko jarrai ez dezaten. IF funtzioaren laguntzaz egiten da - zaharra gelaxka hutsik badago, funtzioak testua bere egungo forma itzultzen du eta irteten da:
=LAMBDA(text, old, new, IF(old="", text, MultiReplace(…)))
edo
=LAMBDA(text, old, new, IF(old"", MultiReplace(…), text))
2.adibidea. Ordeztu hainbat karaktere Excel-en
Oinarrizkoan, aurreko adibidean aztertutako MultiReplace funtzioa daiteke. karaktere indibidualak ere kudeatu, baldin eta karaktere zahar eta berri bakoitza gelaxka batean sartzen bada, goiko pantaila-argazkietako izen laburtu eta osoen antzera.
Nahiago baduzu idatzi zaharra.karaktereak gelaxka batean eta karaktere berriak beste gelaxka batean, edo idatzi zuzenean formulan; ondoren, beste funtzio pertsonalizatu bat sor dezakezu, ReplaceChars izenekoa, formula hauetako bat erabiliz:
=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))
Edo
=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))))
Gogoratu zure Lambda funtzio berria izendatzea izen-kudeatzailean ohi bezala:
Eta zure funtzio pertsonalizatu berria erabiltzeko prest dago:
OrdezkatuChars (testua, karaktere_zaharrak, karaktere_berriak)Non:
- Testua - jatorrizko kateak
- Zaharra - bilatu beharreko karaktereak
- Berria - ordezkatu beharreko karaktereak
Eremu proba bat emateko, egin dezagun inportatutako datuetan maiz egiten den zerbait - ordezkatu komatxo adimendunak eta apostrofo adimendunak komatxo zuzenekin eta apostrofo zuzenekin.
Lehenik eta behin, komatxo adimendunak eta apostrofo adimenduna D2n sartzen ditugu, komatxo zuzenak eta apostrofo zuzena E2n. , karaktereak zuriuneekin bereiziz irakurgarritasun hobea izateko. (Bi gelaxketan mugatzaile bera erabiltzen dugunez, ez du emaitzan eraginik izango - Excel-ek zuriune bat ordeztuko du zuriune batekin.)
Ondoren, B2-n formula hau sartzen dugu:
=ReplaceChars(A2:A4, D2, E2)
Eta bilatzen ari ginen emaitzak zehatz-mehatz lortu:
Formulan karaktereak zuzenean idaztea ere posible da. Gure kasuan, gogoratu honelako komatxo zuzenak "bikoiztu" behar dituzula:
=ReplaceChars(A2:A4, "“ ” ’", """ "" '")
Nola funtzionatzen duen formula honek
The ReplaceChars funtzioak karaktere_zaharrak eta karaktere_berriak kateetan zehar ibiltzen dira eta ordezkapen bat egiten du ezkerreko lehen karakteretik hasita. Zati hau ORDEZKO funtzioak egiten du:
SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars))
Iterazio bakoitzean, RIGHT funtzioak karaktere bat kentzen du ezkerretik karaktere_zaharrak eta . new_chars kateak, LEFT-ek hurrengo karaktere-parea eskuratu ahal izateko ordezkatzeko:
ReplaceChars(SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars)), RIGHT(old_chars, LEN(old_chars)-1), RIGHT(new_chars, LEN(new_chars)-1))
Dei errekurtsibo bakoitzaren aurretik, IF funtzioak old_chars katea ebaluatzen du. . Hutsik ez badago, funtzioak bere buruari deitzen dio. Azken karakterea ordezkatu bezain laster, iterazio-prozesua amaitzen da, formulak testua bere egungo forma itzultzen du eta irteten da.
Oharra. Gure oinarrizko formuletan erabiltzen den ORDEZKO funtzioak maiuskulak eta minuskulak bereizten ditu denez, bi Lambdak ( MultiReplace eta ReplaceChars ) letra larriak eta minuskulak karaktere ezberdin gisa tratatzen dituzte.
Bilatu eta ordeztu masiboki UDFrekin
LAMBDA funtzioa zure Excel-en erabilgarri ez badago, erabiltzaileak definitutako funtzio bat idatz dezakezu anitz ordezkatzeko modu tradizionalean VBA erabiliz.
UDF LAMBDAk definitutako MultiReplace funtziotik bereizteko, beste izen bat jarriko diogu, esan MassReplace . Funtzioaren kodea honako hau da:
Funtzioa MassReplace(InputRng As Range As, FindRng As Range As, ReplaceRng As Range As) As Variant () DimarRes() As Variant 'matrizea emaitzak gordetzeko Dim arSearchReplace(), sTmp As String 'bilduteko/ordezkatu bikoteak non gorde behar diren array, aldi baterako katea Dim iFindCurRow, cntFindRows As Long 'Bilaketa ordezkatu matrizearen uneko errenkadaren indizea, zenbatu errenkaden Dim iInputCurRow, iInputCurCol, cntInputRows, cntInputCols As Long 'iturburu-barrutiko uneko errenkadaren indizea, iturri-barrutiko uneko zutabearen indizea, errenkaden kopurua, zutabeen zenbaketa cntInputRows = InputRng.Rows.Count = InputRngCols. .Columns.Count cntFindRows = FindRng.Rows.Count ReDim arRes(1 To cntInputRows, 1 To cntInputCols) ReDim arSearchReplace(1 To cntFindRows, 1 To 2) 'bilatu/ordezkatu bikoteen array-a prestatzen For(IFindRowsArrantza1) iFindCurRow, 1) = FindRng.Cells(iFindCurRow, 1).Value arSearchReplace(iFindCurRow, 2) = ReplaceRng.Cells(iFindCurRow, 1).Value Next 'Iturburu-barrutian bilatzen eta ordezkatzen For iInputCurRow =InputRow =CurRow =Sarr. 1 To cntInputCols sTm p = InputRng.Cells(iInputCurRow, iInputCurCol).Value 'Bilaketa/ordezkatu bikote guztiak gelaxka bakoitzean ordezkatuz For iFindCurRow = 1 To cntFindRows sTmp = Ordezkatu(sTmp, arSearchReplace(iFindCurRow, 1), arSearchReplace(iFindCurRow, 1), arSearchReplace)(arBilatu2) (iInputCurRow, iInputCurCol) = sTmp Hurrengoa Hurrengoa MassReplace = arRes End FuntzioaLAMBDAk definitutako funtzioak bezala, UDFak lan-koaderno osoan dira. Horrek esan nahi du