Satura rādītājs
Pēdējos pāris rakstos mēs esam aplūkojuši dažādus veidus, kā Excel programmā dzēst rakstzīmes no virknēm. Šodien mēs izpētīsim vēl vienu izmantošanas gadījumu - kā dzēst visu pirms vai pēc konkrētas rakstzīmes.
Teksta dzēšana pirms, pēc vai starp 2 rakstzīmēm, izmantojot Find & amp; Replace
Lai veiktu datu manipulācijas vairākās šūnās, ir piemērots rīks Atrast un aizstāt. Lai noņemtu virknes daļu pirms vai pēc konkrētas rakstzīmes, ir jāveic šādi soļi:
- Atlasiet visas šūnas, kurās vēlaties dzēst tekstu.
- Nospiediet Ctrl + H, lai atvērtu Atrast un aizstāt dialogs.
- In the Atrodiet, kas ievadiet vienu no šādām kombinācijām:
- Lai novērstu teksta pirms konkrētās rakstzīmes , ievadiet rakstzīmi, pirms kuras ir zvaigznīte (*char).
- Teksta noņemšana pēc noteikta rakstura , ievadiet rakstzīmi, kurai seko zvaigznīte (char*).
- Pakārtrindu dzēšana starp divām rakstzīmēm , ievadiet zvaigznīti, ko ieskauj 2 rakstzīmes (char*char).
- Atstājiet Aizstāt ar kaste ir tukša.
- Noklikšķiniet uz Aizstāt visus .
Piemēram, lai noņemtu viss, kas ir aiz komata ieskaitot pašu komatu, ierakstiet komatu un zvaigznītes zīmi (,*). Atrodiet, kas lodziņu, un tiks iegūts šāds rezultāts:
Pakārtrindu dzēšana pirms komata , ierakstiet zvaigznīti, komatu un atstarpi (*, ). Atrodiet, kas kaste.
Lūdzu, ievērojiet, ka mēs aizvietojam ne tikai komatu, bet arī komats un atstarpe Ja dati ir atdalīti ar komatiem bez atstarpēm, tad izmantojiet zvaigznīti, kam seko komats (*,).
Teksta dzēšana starp diviem komatiem , izmantojiet zvaigznīti ar komatiem (,*,).
Padoms. Ja vēlaties, lai vārdi un tālruņa numuri būtu atdalīti ar komatu, ierakstiet komatu (,) laukā Aizstāt ar lauka.
Teksta daļas noņemšana, izmantojot Flash Fill
Mūsdienu Excel versijās (2013 un jaunākās) ir vēl viens vienkāršs veids, kā izdzēst tekstu, kas atrodas pirms vai aiz konkrētas rakstzīmes, - Flash Fill funkcija. Lūk, kā tā darbojas:
- Šūnā, kas atrodas blakus pirmajai šūnai ar datiem, ierakstiet gaidāmo rezultātu un nospiediet Enter .
- Nākamajā šūnā sāciet ievadīt atbilstošu vērtību. Kad Excel uztvers ievadīto vērtību raksturu, tiks parādīts pārējo šūniņu priekšskatījums, kurās ir tas pats raksturs.
- Nospiediet taustiņu Enter, lai pieņemtu ieteikumu.
Paveikts!
Teksta noņemšana, izmantojot formulas
Microsoft Excel programmā daudzas datu manipulācijas, ko veic, izmantojot iebūvētās funkcijas, var veikt arī ar formulu. Atšķirībā no iepriekšējām metodēm formulas neveic nekādas izmaiņas sākotnējos datos un nodrošina lielāku kontroli pār rezultātiem.
Kā noņemt visu, kas atrodas pēc konkrēta rakstzīmes
Lai dzēstu tekstu pēc konkrētas rakstzīmes, vispārīgā formula ir:
LEFT( šūna , SEARCH(" char ", šūna ) -1)Šajā gadījumā mēs izmantojam funkciju SEARCH, lai iegūtu rakstzīmes pozīciju, un nododam to funkcijai LEFT, lai tā no virknes sākuma izvilktu attiecīgo rakstzīmju skaitu. No skaitļa, ko atgriež funkcija SEARCH, tiek atņemta viena rakstzīme, lai no rezultāta izslēgtu norobežotāju.
Piemēram, lai noņemtu daļu rindas pēc komata, B2 ierakstiet tālāk norādīto formulu un velciet to uz leju līdz B7:
=LEFT(A2, SEARCH(",",", A2) -1)
Kā noņemt visu, kas atrodas pirms konkrētas rakstzīmes
Lai dzēstu teksta virknes daļu pirms konkrētas rakstzīmes, vispārīgā formula ir:
TAISNĪBA( šūna , LEN( šūna ) - MEKLĒT(" char ", šūna ))Šeit mēs atkal aprēķinām mērķa rakstzīmes pozīciju ar SEARCH palīdzību, atņemam to no kopējā virknes garuma, ko atgriež LEN, un nododam starpību funkcijai RIGHT, lai tā izvilktu tik daudz rakstzīmju no virknes beigām.
Piemēram, lai noņemtu tekstu pirms komata, formula ir šāda:
=RIGHT(A2, LEN(A2) - SEARCH(",",", A2))
Mūsu gadījumā komatam seko atstarpes simbols. Lai izvairītos no atstarpēm rezultātos, pamatformulu iesaiņojam TRIM funkcijā:
=TRIM(RIGHT(A2, LEN(A2) - SEARCH(",",", A2)))
Piezīmes:
- Abos iepriekš minētajos piemēros tiek pieņemts, ka ir tikai viens gadījums norobežotāja sākotnējā rindā. Ja ir vairāki atkārtojumi, teksts tiks noņemts pirms/pēc atdalītāja pirmais gadījums .
- Meklēšanas funkcija ir nav lielo un mazo burtu sensitivitātes , kas nozīmē, ka tas neatšķir mazos un lielos burtus. Ja konkrētais raksturs ir burts un vēlaties atšķirt burta burtu lielumu, tad izmantojiet vienumu lielo un mazo izmēru MEKLĒT funkciju, nevis MEKLĒT.
Kā dzēst tekstu pēc N-tās rakstzīmes parādīšanās
Ja avota virknē ir vairāki norobežotāja gadījumi, var rasties nepieciešamība noņemt tekstu pēc konkrēta gadījuma. Šim nolūkam izmantojiet šādu formulu:
LEFT( šūna , FIND("#", SUBSTITUTE( šūna , " char ", "#", n )) -1)Kur n ir rakstzīmes sastopamība, pēc kuras jādzēš teksts.
Šīs formulas iekšējā loģika pieprasa izmantot kādu rakstzīmi, kas nav atrodama avota datos, mūsu gadījumā - hash simbolu (#). Ja šī rakstzīme ir sastopama jūsu datu kopā, tad "#" vietā izmantojiet kādu citu.
Piemēram, lai no A2 noņemtu visu, kas atrodas aiz 2. komata (un pašu komatu), formula ir šāda:
=LEFT(A2, FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)
Kā šī formula darbojas:
Galvenā formulas daļa ir FIND funkcija, kas aprēķina n-tā norobežotāja (mūsu gadījumā - komata) pozīciju. Lūk, kā tas notiek:
Ar SUBSTITUTE palīdzību aizstājam 2. komatu A2 ar hash simbolu (vai jebkuru citu rakstzīmi, kas nepastāv jūsu datos):
AIZVIETOT(A2, ",", "#", 2)
Rezultātā iegūtā virkne nonāk pie FIND 2. argumenta, tāpēc tā atrod "#" pozīciju šajā virknē:
FIND("#", "Emma, Dizains# (102) 123-4568")
FIND norāda, ka "#" ir 13. rakstzīme rindā. Lai uzzinātu, cik rakstzīmju ir pirms tās, vienkārši atņemiet 1, un rezultāts būs 12:
ATRAST("#", AIZVIETOT(A2, ",", "#", "#", 2)) - 1
Šis numurs tiek tieši nosūtīts uz num_chars argumentu LEFT, lūdzot izvilkt pirmās 12 rakstzīmes no A2:
=LEFT(A2, 12)
Tas ir viss!
Kā dzēst tekstu pirms N-tās rakstzīmes parādīšanās
Vispārīgā formula, lai noņemtu apakšvirni pirms noteiktas rakstzīmes, ir šāda:
LABI(AIZVIETOT( šūna , " char ", "#", n ), LEN( šūna ) - ATRAST("#", AIZVIETOT( šūna , " char ", "#", n )) -1)Piemēram, lai noņemtu tekstu pirms otrā komata A2, formula ir šāda:
=RIGHT(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)
Lai likvidētu sākuma atstarpi, mēs atkal izmantojam TRIM funkciju kā apvalku:
=TRIM(RIGHT(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))))
Kā šī formula darbojas:
Kopsavilkumā mēs noskaidrojam, cik rakstzīmju ir aiz n-tā norobežotāja, un no labās puses iegūstam atbilstoša garuma apakšvirzienu. Tālāk ir sniegts formulas sadalījums:
Vispirms aizstājam otro komatu A2 vienādojumā ar heša simbolu:
AIZVIETOT(A2, ",", "#", 2)
Iegūtā virkne tiek nosūtīta uz teksts arguments par tiesībām:
RIGHT("Emma, Design# (102) 123-4568", ...
Tālāk ir jādefinē, cik rakstzīmju jāizdala no virknes beigām. Šim nolūkam jāatrod hash simbola pozīcija iepriekš minētajā virknē (kas ir 13):
ATRAST("#", AIZVIETOT(A2, ",", "#", 2))
Un atņemiet to no kopējā virknes garuma (kas vienāds ar 28):
LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))
Atšķirība (15) tiek nosūtīta otrajam argumentam RIGHT, uzdodot tam izvilkt pēdējās 15 rakstzīmes no pirmā argumenta virknes:
RIGHT("Emma, Design# (102) 123-4568", 15)
Izvades rezultāts ir apakšvirkne "(102) 123-4568", kas ir ļoti tuva vēlamajam rezultātam, izņemot sākuma atstarpi. Tāpēc mēs izmantojam TRIM funkciju, lai no tās atbrīvotos.
Kā noņemt tekstu pēc pēdējās rakstzīmes parādīšanās
Ja jūsu vērtības ir atdalītas ar mainīgu norobežotāju skaitu, iespējams, vēlēsieties noņemt visu, kas atrodas pēc pēdējā norobežotāja gadījuma. To var izdarīt, izmantojot šādu formulu:
LEFT( šūna , FIND("#", SUBSTITUTE( šūna , " char ", "#", LEN( šūna ) - LEN(AIZVIETOT( šūna , " char ", "")))) -1)Pieņemsim, ka A slejā ir dažāda informācija par darbiniekiem, bet vērtība aiz pēdējā komata vienmēr ir tālruņa numurs. Jūsu mērķis ir noņemt tālruņa numurus un saglabāt visu pārējo informāciju.
Lai sasniegtu mērķi, varat noņemt tekstu pēc pēdējā komata A2, izmantojot šo formulu:
=LEFT(A2, FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",","")))) -1)
Nokopējiet formulu uz leju pa kolonnu, un iegūsiet šādu rezultātu:
Kā šī formula darbojas:
Formulas būtība ir tāda, ka mēs nosakām pēdējā norobežotāja (komata) pozīciju rindā un izvelkam apakšrindu no kreisās puses līdz norobežotājam. Norobežotāja pozīcijas iegūšana ir vissarežģītākā daļa, un šeit ir aprakstīts, kā mēs to darām:
Vispirms noskaidrojam, cik daudz komatu ir sākotnējā virknē. Šim nolūkam katru komatu aizstājam ar neko ("") un iegūto virkni pakļaujam funkcijai LEN:
LEN(AIZVIETOT(A2, ",",",""))
A2 gadījumā rezultāts ir 35, kas ir A2 rakstzīmju skaits bez komatiem.
Atņemiet iepriekš minēto skaitli no kopējā virknes garuma (38 rakstzīmes):
LEN(A2) - LEN(SUBSTITUTE(A2, ",",",""))
... un iegūsiet 3, kas ir kopējais komatu skaits A2 (un arī pēdējā komata kārtas numurs).
Tālāk izmantojiet jau pazīstamo funkciju FIND un SUBSTITUTE kombināciju, lai iegūtu pēdējā komata pozīciju rindā. Instances numuru (mūsu gadījumā 3. komats) nodrošina iepriekš minētā LEN SUBSTITUTE formula:
ATRAST("#", AIZVIETOT(A2, ",", "#", 3))
Izrādās, ka trešais komats ir 23. rakstzīme A2, t. i., pirms tā ir jāizdala 22 rakstzīmes. Tātad iepriekšminēto formulu mīnus 1 ievietosim num_chars kreisās puses arguments:
LEFT(A2, 23-1)
Kā noņemt tekstu pirms pēdējās rakstzīmes parādīšanās
Lai izdzēstu visu, kas ir pirms pēdējā konkrēta simbola gadījuma, vispārīgā formula ir šāda:
TAISNĪBA( šūna , LEN( šūna ) - ATRAST("#", AIZVIETOT( šūna , " char ", "#", LEN( šūna ) - LEN(AIZVIETOT( šūna , " char ", "")))))Mūsu tabulas paraugā, lai izdzēstu tekstu pirms pēdējā komata, formula ir šāda:
=RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",","")))))
Lai novērstu priekšējās atstarpes, mēs to ievietojam funkcijā TRIM:
=TRIM(RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","""))))))
Kā šī formula darbojas:
Kopsavilkumā mēs iegūstam pēdējā komata pozīciju, kā paskaidrots iepriekšējā piemērā, un atņemam to no virknes kopējā garuma:
LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",",""))))
Rezultātā mēs iegūstam rakstzīmju skaitu pēc pēdējā komata un nododam to funkcijai RIGHT, lai tā atdalītu šo rakstzīmju skaitu no virknes beigām.
Pielāgota funkcija, lai noņemtu tekstu abās rakstzīmes pusēs
Kā redzējāt iepriekš minētajos piemēros, jūs varat atrisināt gandrīz jebkuru izmantošanas gadījumu, izmantojot Excel dabiskās funkcijas dažādās kombinācijās. Problēma ir tā, ka jums ir jāatceras dažas sarežģītas formulas. Hmm, ko darīt, ja mēs uzrakstītu savu funkciju, lai aptvertu visus scenārijus? Izklausās pēc labas idejas. Tātad pievienojiet darbgrāmatā šādu VBA kodu (detalizēti soļi, lai Excel programmā Excel ievietojiet VBA, ir šādišeit):
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ūsu funkcijas nosaukums ir RemoveText un tam ir šāda sintakse:
RemoveText(virkne, norobežotājs, notikums, is_after)Kur:
Virknes - ir sākotnējā teksta virkne. Var attēlot ar atsauci uz šūnu.
Atdalītājs - rakstzīmi pirms/pēc kuras jādzēš teksts.
Notikums - norobežotāja gadījums.
Is_after - bauda vērtība, kas norāda, kurā norobežotāja pusē noņemt tekstu. Var būt viena rakstzīme vai rakstzīmju virkne.
- TRUE - dzēš visu, kas atrodas aiz norobežotāja (ieskaitot pašu norobežotāju).
- FALSE - dzēš visu, kas atrodas pirms norobežotāja (ieskaitot pašu norobežotāju).
Kad funkcijas kods ir ievietots darbgrāmatā, varat no šūnām dzēst apakšvirknes, izmantojot kompaktas un elegantas formulas.
Piemēram, lai izdzēstu visu, kas atrodas aiz pirmā komata A2 tekstā, B2 formulā ir:
=RemoveText(A3, ", ", 1, TRUE)
Lai dzēstu visu, kas atrodas pirms pirmā komata A2, C2 formulā ir:
=RemoveText(A3, ", ", 1, FALSE)
Tā kā mūsu pielāgotā funkcija pieņem atdalītāja virkne , 2. argumentā ievietosim komatu un atstarpi (", "), lai pēc tam nevajadzētu apgriezt sākuma atstarpes.
Mūsu pielāgotā funkcija darbojas lieliski, vai ne? Bet, ja jums šķiet, ka tas ir visaptverošs risinājums, jūs vēl neesat redzējuši nākamo piemēru :)
Dzēst visu pirms, pēc vai starp rakstzīmēm
Lai iegūtu vēl vairāk iespēju, kā noņemt atsevišķas rakstzīmes vai tekstu no vairākām šūnām pēc sakritības vai pozīcijas, pievienojiet Excel rīku komplektu Ultimate Suite.
Šajā sadaļā mēs sīkāk aplūkosim Noņemt pēc pozīcijas funkciju, kas atrodas Ablebits dati cilne> Teksts grupa> Noņemt .
Tālāk aplūkosim divus visbiežāk sastopamos scenārijus.
Noņemt visu, kas atrodas pirms vai pēc noteikta teksta
Pieņemsim, ka visās jūsu avota virknēs ir kāds kopīgs vārds vai teksts, un jūs vēlaties dzēst visu, kas ir pirms vai pēc šī teksta. Lai to izdarītu, atlasiet avota datus, palaidiet programmu Noņemt pēc pozīcijas rīku un konfigurējiet to, kā parādīts tālāk:
- Izvēlieties Visas rakstzīmes pirms teksta vai Visas rakstzīmes pēc teksta un blakus esošajā lodziņā ievadiet atslēgas tekstu (vai rakstzīmi).
- Atkarībā no tā, vai lielie un mazie burti jāuzskata par dažādām vai vienādām rakstzīmēm, atzīmējiet vai noņemiet atzīmi pie Lietošana pēc burtu un lielo un mazo burtu pazīmēm kaste.
- Hit Noņemt .
Šajā piemērā mēs noņemam visas rakstzīmes pirms vārda "kļūda" šūnās A2:A8:
Un iegūstiet tieši tādu rezultātu, kādu meklējam:
Teksta noņemšana starp divām rakstzīmēm
Situācijā, kad nebūtiska informācija atrodas starp 2 konkrētām rakstzīmēm, varat to ātri izdzēst:
- Izvēlieties Dzēst visas apakšvirknes un ierakstiet divas rakstzīmes turpmāk norādītajos lodziņos.
- Ja ir jādzēš arī zīmes "starp", pārbaudiet, vai Ieskaitot norobežotājus kaste.
- Noklikšķiniet uz Noņemt .
Piemēram, mēs dzēsīsim visu, kas atrodas starp divām tilde rakstzīmēm (~), un rezultātā iegūsim pilnīgi attīrītas virknes:
Lai izmēģinātu citas noderīgas funkcijas, kas iekļautas šajā daudzfunkcionālajā rīkā, es aicinu jūs lejupielādēt novērtējuma versiju šī ziņojuma beigās. Paldies, ka izlasījāt, un ceru, ka nākamnedēļ tiksimies mūsu blogā!
Pieejamās lejupielādes
Pirmās vai pēdējās rakstzīmes noņemšana - piemēri (.xlsm fails)
Ultimate Suite - izmēģinājuma versija (.exe fails)