Turinys
Pastaruosiuose keliuose straipsniuose apžvelgėme įvairius simbolių pašalinimo iš eilučių "Excel" programoje būdus. Šiandien nagrinėsime dar vieną naudojimo atvejį - kaip pašalinti viską, kas yra prieš arba po tam tikro simbolio.
Ištrinkite tekstą prieš, po arba tarp 2 simbolių naudodami Find & Replace
Duomenų tvarkymui keliose ląstelėse tinkama priemonė yra "Rasti ir pakeisti". Jei norite pašalinti eilutės dalį prieš tam tikrą simbolį arba po jo, atlikite šiuos veiksmus:
- Pažymėkite visas ląsteles, kuriose norite ištrinti tekstą.
- Paspauskite Ctrl + H, kad atidarytumėte Rasti ir pakeisti dialogas.
- Į Raskite, ką įveskite vieną iš šių derinių:
- Teksto pašalinimas prieš tam tikrą simbolį , įveskite simbolį, prieš kurį rašoma žvaigždutė (*char).
- Teksto pašalinimas po tam tikro simbolio , įveskite simbolį, po kurio seka žvaigždutė (char*).
- Kaip ištrinti pojuostę tarp dviejų simbolių , įveskite žvaigždutę, apsuptą 2 simbolių (char*char).
- Palikite Pakeisti su langelis tuščias.
- Spustelėkite Pakeiskite visus .
Pavyzdžiui, norėdami pašalinti viskas po kablelio įskaitant patį kablelį, įrašykite kablelį ir žvaigždutės ženklą (,*). Raskite, ką langelį ir gausite tokį rezultatą:
Kaip ištrinti pojuostę prieš kablelį , įveskite žvaigždutę, kablelį ir tarpą (*, ) Raskite, ką dėžutė.
Atkreipkite dėmesį, kad keičiame ne tik kablelį, bet ir kablelis ir tarpas kad rezultatuose nebūtų pradinių tarpų. Jei duomenys atskirti kableliais be tarpų, naudokite žvaigždutę, po kurios rašomas kablelis (*,).
Teksto ištrynimas tarp dviejų kablelių , naudokite žvaigždutę, apsuptą kableliais (,*,).
Patarimas. Jei pageidaujate, kad vardai ir telefono numeriai būtų atskirti kableliu, įveskite kablelį (,) į Pakeisti į srityje.
Dalies teksto pašalinimas naudojant "Flash Fill
Šiuolaikinėse "Excel" versijose (2013 m. ir vėlesnėse) yra dar vienas paprastas būdas ištrinti tekstą, esantį prieš tam tikrą simbolį arba po jo - tai funkcija "Flash Fill". Štai kaip ji veikia:
- Ląstelėje, esančioje šalia pirmosios ląstelės su duomenimis, įrašykite laukiamą rezultatą ir paspauskite Enter .
- Kitame langelyje pradėkite rašyti atitinkamą reikšmę. Kai "Excel" pajus įvedamų reikšmių modelį, bus rodoma likusių langelių pagal tą patį modelį peržiūra.
- Paspauskite klavišą Enter, kad priimtumėte pasiūlymą.
Atlikta!
Teksto pašalinimas naudojant formules
"Microsoft Excel" programoje daugelį duomenų tvarkymo veiksmų, atliekamų naudojant integruotas funkcijas, taip pat galima atlikti naudojant formulę. Skirtingai nei ankstesniais būdais, formulėmis pirminiai duomenys nekeičiami ir suteikiama didesnė rezultatų kontrolė.
Kaip pašalinti viską po tam tikro simbolio
Norint ištrinti tekstą po tam tikro simbolio, bendroji formulė yra tokia:
LEFT( ląstelė , SEARCH(" simbolis ", ląstelė ) -1)Šiuo atveju naudodami funkciją SEARCH gauname simbolio poziciją ir perduodame ją funkcijai LEFT, kad ji iš eilutės pradžios ištrauktų atitinkamą simbolių skaičių. Iš funkcijos SEARCH grąžinto skaičiaus atimamas vienas simbolis, kad į rezultatus nebūtų įtrauktas skyrybos ženklas.
Pavyzdžiui, norėdami pašalinti eilutės dalį po kablelio, B2 laukelyje įrašykite toliau pateiktą formulę ir vilkite ją žemyn per B7 laukelį:
=LEFT(A2, SEARCH(",",", A2) -1)
Kaip pašalinti viską, kas yra prieš tam tikrą simbolį
Norint ištrinti teksto eilutės dalį prieš tam tikrą simbolį, naudojama tokia bendra formulė:
TEISĖ( ląstelė , LEN( ląstelė ) - PAIEŠKA(" simbolis ", ląstelė ))Šiuo atveju, naudodami funkciją SEARCH, vėl apskaičiuojame tikslinio simbolio poziciją, atimame ją iš viso eilutės ilgio, kurį grąžina funkcija LEN, ir skirtumą perduodame funkcijai RIGHT, kad ji iš eilutės pabaigos ištrauktų tiek simbolių.
Pavyzdžiui, jei norite pašalinti tekstą prieš kablelį, formulė yra tokia:
=RIGHT(A2, LEN(A2) - SEARCH(",",", A2))
Mūsų atveju po kablelio eina tarpo simbolis. Kad rezultatuose būtų išvengta pradinių tarpų, pagrindinę formulę apvyniojame TRIM funkcija:
=TRIM(RIGHT(A2, LEN(A2) - SEARCH(",",", A2)))
Pastabos:
- Abiejuose pavyzdžiuose daroma prielaida, kad yra tik vienas atvejis riboženklį pradinėje eilutėje. Jei yra keli jo pasikartojimai, tekstas bus pašalintas prieš ir po riboženklio. pirmoji instancija .
- Ieškoti funkcija yra neskiriami didžiosios ir mažosios raidės , t. y. ji nedaro skirtumo tarp mažųjų ir didžiųjų raidžių. Jei konkretus simbolis yra raidė ir norite atskirti raidės atvejį, tuomet naudokite , kai atsižvelgiama į mažąsias ir didžiąsias raides. funkcija FIND vietoj funkcijos SEARCH.
Kaip ištrinti tekstą po N-tojo simbolio atsiradimo
Jei šaltinio eilutėje yra keli skirtuko atvejai, gali prireikti pašalinti tekstą po konkretaus atvejo. Tam naudokite šią formulę:
LEFT( ląstelė , FIND("#", SUBSTITUTE( ląstelė , " simbolis ", "#", n )) -1)Kur n yra simbolio atsiradimas, po kurio reikia pašalinti tekstą.
Pagal šios formulės vidinę logiką reikia naudoti tam tikrą simbolį, kurio nėra šaltinio duomenyse, mūsų atveju - hash simbolį (#). Jei šis simbolis yra jūsų duomenų rinkinyje, vietoj "#" naudokite kitą simbolį.
Pavyzdžiui, norint pašalinti viską, kas yra po antrojo kablelio A2 (ir patį kablelį), formulė yra tokia:
=LEFT(A2, FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)
Kaip veikia ši formulė:
Svarbiausia formulės dalis yra funkcija FIND, kuri apskaičiuoja n-ojo skirtuko (mūsų atveju - kablelio) padėtį. Štai kaip:
Naudodamiesi SUBSTITUTE, pakeičiame antrąjį kablelį A2 langelyje hash simboliu (arba bet kuriuo kitu simboliu, kurio nėra jūsų duomenyse):
PAKEISTI(A2, ",", "#", 2)
Gauta eilutė patenka į 2-ąjį FIND argumentą, todėl randama "#" pozicija toje eilutėje:
FIND("#", "Emma, dizainas# (102) 123-4568")
FIND nurodo, kad "#" yra 13-as eilutės simbolis. Norėdami sužinoti prieš jį esančių simbolių skaičių, tiesiog atimkite 1 ir gausite 12:
FIND("#", SUBSTITUTE(A2, ",", "#", 2)) - 1
Šis numeris tiesiogiai perduodamas į num_chars argumentas LEFT, kuriuo prašoma iš A2 ištraukti pirmuosius 12 simbolių:
=LEFT(A2, 12)
Štai ir viskas!
Kaip ištrinti tekstą prieš N-ąjį simbolio pasikartojimą
Bendroji formulė, kuria pašalinama eilutės dalis prieš tam tikrą simbolį, yra tokia:
Į DEŠINĘ (PAKAITALAS( ląstelė , " simbolis ", "#", n ), LEN( ląstelė ) - FIND("#", SUBSTITUTE( ląstelė , " simbolis ", "#", n )) -1)Pavyzdžiui, jei norite pašalinti tekstą prieš antrąjį kablelį A2, formulė yra tokia:
= DEŠINĖ(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)
Norėdami pašalinti pradinį tarpą, vėl naudojame TRIM funkciją kaip apvalkalą:
=TRIM(RIGHT(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))))
Kaip veikia ši formulė:
Apibendrinant, sužinome, kiek simbolių yra po n-ojo skirtuko, ir iš dešinės pusės išgauname atitinkamo ilgio poaibį. Toliau pateikiama formulės išskaidymas:
Pirma, pakeičiame antrąjį kablelį A2 langelyje hash simboliu:
PAKEISTI(A2, ",", "#", 2)
Gauta eilutė patenka į tekstas Teisės argumentas:
RIGHT("Emma, dizainas# (102) 123-4568", ...
Toliau reikia nustatyti, kiek simbolių reikia išskirti iš eilutės galo. Šiuo tikslu surasime hash simbolio padėtį pirmiau pateiktoje eilutėje (ji yra 13):
FIND("#", SUBSTITUTE(A2, ",", "#", 2))
Ir atimkite jį iš viso eilutės ilgio (kuris lygus 28):
LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))
Skirtumas (15) perduodamas antrajam RIGHT argumentui, nurodant jam ištraukti paskutinius 15 simbolių iš pirmajame argumente pateiktos eilutės:
RIGHT("Emma, dizainas# (102) 123-4568", 15)
Išvesties rezultatas yra eilutė "(102) 123-4568", kuri yra labai artima norimam rezultatui, išskyrus pradinį tarpą. Todėl, norėdami jo atsikratyti, naudojame TRIM funkciją.
Kaip pašalinti tekstą po paskutinio simbolio atsiradimo
Jei jūsų reikšmės yra atskirtos kintamu skiriamųjų ženklų skaičiumi, galbūt norėsite pašalinti viską, kas yra po paskutinio skiriamojo ženklo. Tai galima padaryti naudojant šią formulę:
LEFT( ląstelė , FIND("#", SUBSTITUTE( ląstelė , " simbolis ", "#", LEN( ląstelė ) - LEN(SUBSTITUTE( ląstelė , " simbolis ", "")))) -1)Tarkime, kad stulpelyje A pateikiama įvairi informacija apie darbuotojus, tačiau po paskutinio kablelio visada yra telefono numeris. Jūsų tikslas - pašalinti telefono numerius ir išsaugoti visą kitą informaciją.
Norėdami pasiekti tikslą, galite pašalinti tekstą po paskutinio A2 kablelio naudodami šią formulę:
=LEFT(A2, FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","")))) -1)
Nukopijuokite formulę į stulpelį ir gausite šį rezultatą:
Kaip veikia ši formulė:
Formulės esmė yra ta, kad nustatome paskutinio skirtuko (kablelio) padėtį eilutėje ir traukiame iš kairės pusjuostę iki skirtuko. Nustatyti skirtuko padėtį yra sudėtingiausia, todėl štai kaip mes ją nustatome:
Pirmiausia išsiaiškiname, kiek kablelių yra pradinėje eilutėje. Todėl kiekvieną kablelį pakeičiame niekuo ("") ir gautą eilutę pateikiame funkcijai LEN:
LEN(SUBSTITUTE(A2, ",",",""))
A2 atveju rezultatas yra 35, t. y. A2 simbolių skaičius be kablelių.
Iš bendro eilutės ilgio (38 ženklai) atimkite pirmiau nurodytą skaičių:
LEN(A2) - LEN(SUBSTITUTE(A2, ",",",""))
... ir gausite 3, t. y. bendrą kablelių skaičių A2 (taip pat paskutinio kablelio eilės numerį).
Toliau naudokite jau pažįstamą funkcijų FIND ir SUBSTITUTE derinį, kad gautumėte paskutinio kablelio vietą eilutėje. Pavyzdžio numeris (mūsų atveju - trečiasis kablelis) pateikiamas pirmiau minėta LEN SUBSTITUTE formule:
FIND("#", SUBSTITUTE(A2, ",", "#", 3))
Paaiškėjo, kad trečiasis kablelis yra 23-iasis A2 simbolis, vadinasi, prieš jį reikia išskirti 22 simbolius. num_chars kairės argumentas:
LEFT(A2, 23-1)
Kaip pašalinti tekstą prieš paskutinį simbolį
Norint ištrinti viską, kas buvo prieš paskutinį konkretaus simbolio atvejį, bendroji formulė yra tokia:
TEISĖ( ląstelė , LEN( ląstelė ) - FIND("#", SUBSTITUTE( ląstelė , " simbolis ", "#", LEN( ląstelė ) - LEN(SUBSTITUTE( ląstelė , " simbolis ", "")))))Mūsų pavyzdinėje lentelėje, norint ištrinti tekstą prieš paskutinį kablelį, formulė yra tokia:
=RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","")))))
Baigiamajam veiksmui atlikti jį įterpiame į TRIM funkciją, kad pašalintume pradinius tarpus:
=TRIM(RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))))))
Kaip veikia ši formulė:
Apibendrinant, kaip paaiškinta ankstesniame pavyzdyje, gauname paskutinio kablelio padėtį ir atimame ją iš viso eilutės ilgio:
LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))))
Kaip rezultatą gauname simbolių skaičių po paskutinio kablelio ir perduodame jį funkcijai RIGHT, kad ji atkeltų tiek simbolių iš eilutės pabaigos.
Pasirinktinė funkcija, skirta pašalinti tekstą iš abiejų simbolio pusių
Kaip matėte iš pirmiau pateiktų pavyzdžių, beveik visus naudojimo atvejus galite išspręsti naudodami "Excel" gimtąsias funkcijas įvairiais deriniais. Problema ta, kad reikia prisiminti keletą sudėtingų formulių. Hmm, o jei parašytume savo funkciją, kuri apimtų visus scenarijus? Skamba kaip gera idėja. Taigi, į savo darbaknygę įtraukite šį VBA kodą (išsamūs VBA įterpimo į "Excel" žingsniai yra šiečia):
Funkcija RemoveText(str As String , delimiter As String , occurrence As Integer , is_after As Boolean ) Dim delimiter_num, start_num, delimiter_len As Integer Dim str_result As String delimiter_num = 0 start_num = 1 str_result = "" delimiter_len = Len(delimiter) For i = 1 To occurrence delimiter_num = InStr(start_num, str, delimiter, vbTextCompare) If 0 <delimiter_num Then start_num =delimiter_num + delimiter_len End If Next i If 0 <delimiter_num Then If True = is_after Then str_result = Mid(str, 1, start_num - delimiter_len - 1) Else str_result = Mid(str, start_num) End If End If End If RemoveText = str_result End FunctionMūsų funkcija pavadinta RemoveText jo sintaksė yra tokia:
RemoveText(eilutė, riboženklis, įvykis, is_after)Kur:
Stygos - yra pradinė teksto eilutė. Gali būti pateikiama kaip ląstelės nuoroda.
Skirtukas - simbolis, prieš kurį/po kurio norima pašalinti tekstą.
Įvykis - skirtuko pavyzdys.
Is_after - loginė reikšmė, nurodanti, iš kurios skirtuko pusės pašalinti tekstą. Gali būti vienas simbolis arba simbolių seka.
- TRUE - ištrinti viską, kas yra po skirtuko (įskaitant patį skirtuką).
- FALSE - ištrinti viską, kas yra prieš skirtuką (įskaitant patį skirtuką).
Į sąsiuvinį įterpę funkcijos kodą, galite iš langelių pašalinti posričių eilutes naudodami kompaktiškas ir elegantiškas formules.
Pavyzdžiui, norint ištrinti viską, kas parašyta po pirmojo A2 kablelio, B2 formulė yra tokia:
=RemoveText(A3, ", ", 1, TRUE)
Norint ištrinti viską, kas yra prieš pirmąjį A2 kablelį, C2 formulė yra tokia:
=RemoveText(A3, ", ", 1, FALSE)
Kadangi mūsų pasirinktinė funkcija priima skirtuko eilutė , į 2-ąjį argumentą įrašome kablelį ir tarpą (", "), kad vėliau nereikėtų kirpti pradinių tarpų.
Mūsų pasirinktinė funkcija puikiai veikia, ar ne? Bet jei manote, kad tai išsamus sprendimas, dar nematėte kito pavyzdžio :)
Ištrinkite viską, kas yra prieš, po arba tarp simbolių
Jei norite gauti dar daugiau parinkčių, kaip pašalinti atskirus simbolius ar tekstą iš kelių langelių pagal atitikmenį ar padėtį, papildykite "Excel" įrankių rinkinį "Ultimate Suite".
Čia plačiau apžvelgsime Pašalinti pagal poziciją funkcija, esanti Ablebitų duomenys skirtukas> Tekstas grupė> Pašalinti .
Toliau aptarsime du dažniausiai pasitaikančius scenarijus.
Pašalinti viską, kas yra prieš arba po tam tikro teksto
Tarkime, kad visose jūsų šaltinio eilutėse yra koks nors bendras žodis ar tekstas ir norite ištrinti viską, kas yra prieš arba po to teksto. Norėdami tai padaryti, pasirinkite savo šaltinio duomenis, paleiskite Pašalinti pagal poziciją ir sukonfigūruokite jį taip, kaip parodyta toliau:
- Pasirinkite Visi ženklai prieš tekstą arba Visi simboliai po teksto parinktį ir į šalia esantį langelį įveskite rakto tekstą (arba simbolį).
- Priklausomai nuo to, ar didžiosios ir mažosios raidės turėtų būti traktuojamos kaip skirtingi ar vienodi ženklai, pažymėkite arba nepažymėkite Taisyklės dėžutė.
- Paspauskite Pašalinti .
Šiame pavyzdyje pašaliname visus simbolius, esančius prieš žodį "klaida" ląstelėse A2:A8:
Ir gauname būtent tokį rezultatą, kokio siekiame:
Pašalinti tekstą tarp dviejų simbolių
Jei nereikšminga informacija yra tarp 2 konkrečių simbolių, štai kaip ją greitai ištrinti:
- Pasirinkite Pašalinti visas posričių eilutes ir toliau esančiuose langeliuose įveskite du simbolius.
- Jei reikia pašalinti ir simbolius "tarp", patikrinkite Įskaitant skiriamąsias ribas dėžutė.
- Spustelėkite Pašalinti .
Pavyzdžiui, ištrinsime viską, kas yra tarp dviejų tilde ženklų (~), ir gausime puikiai išvalytas eilutes:
Jei norite išbandyti kitas naudingas šio daugiafunkcinio įrankio funkcijas, kviečiu atsisiųsti šio įrašo pabaigoje pateiktą įvertinimo versiją. Dėkojame, kad perskaitėte, ir tikimės, kad kitą savaitę susitiksime mūsų tinklaraštyje!
Galimi atsisiuntimai
Pašalinti pirmuosius arba paskutinius simbolius - pavyzdžiai (.xlsm failas)
"Ultimate Suite" - bandomoji versija (.exe failas)