Премахване на текст преди, след или между два символа в Excel

  • Споделя Това
Michael Brown

В последните няколко статии разгледахме различни начини за премахване на символи от низове в Excel. Днес ще разгледаме още един случай на употреба - как да изтрием всичко преди или след определен символ.

    Изтриване на текст преди, след или между 2 символа с Find & Replace

    За манипулиране на данни в множество клетки инструментът "Намиране и заместване" е подходящ. За да премахнете част от низ, предшестващ или следващ определен символ, трябва да извършите следните стъпки:

    1. Изберете всички клетки, в които искате да изтриете текст.
    2. Натиснете Ctrl + H, за да отворите Намиране и заместване диалог.
    3. В Открийте какво въведете една от следните комбинации:
      • Премахване на текст преди даден символ , въведете символа, предшестван от звездичка (*char).
      • Премахване на текст след определен символ , въведете символа, последван от звездичка (char*).
      • Изтриване на подниз между два символа , въведете звездичка, заобиколена от 2 символа (char*char).
    4. Оставете Замяна на с кутията е празна.
    5. Кликнете върху Заменете всички .

    Например, за да премахнете всичко след запетаята включително самата запетая, поставете запетая и знак за звездичка (,*) в Открийте какво и ще получите следния резултат:

    Изтриване на подниз преди запетая , въведете звездичка, запетая и интервал (*, ) в полето Открийте какво кутия.

    Обърнете внимание, че заменяме не само запетая, но и запетая и интервал за да предотвратите появата на начални интервали в резултатите. Ако данните ви са разделени със запетаи без интервали, използвайте звездичка, последвана от запетая (*,).

    Изтриване на текст между две запетаи , използвайте звездичка, заобиколена от запетаи (,*,).

    Съвет: Ако предпочитате имената и телефонните номера да бъдат разделени със запетая, въведете запетая (,) в полето Заменете с област.

    Премахване на част от текста с помощта на Flash Fill

    В съвременните версии на Excel (2013 г. и по-нови) има още един лесен начин за изтриване на текст, който предхожда или следва определен символ - функцията Flash Fill. Ето как работи тя:

    1. В клетката до първата клетка с вашите данни въведете очаквания резултат и натиснете Enter .
    2. Започнете да въвеждате подходяща стойност в следващата клетка. След като Excel усети модела на въвежданите стойности, ще покаже предварителен преглед на останалите клетки, следващи същия модел.
    3. Натиснете клавиша Enter, за да приемете предложението.

    Готово!

    Премахване на текст с помощта на формули

    В Microsoft Excel много манипулации с данни, извършени чрез използване на вградени функции, могат да бъдат извършени и с формула. За разлика от предишните методи формулите не правят никакви промени в първоначалните данни и ви дават по-голям контрол върху резултатите.

    Как да премахнете всичко след определен символ

    За изтриване на текст след определен символ общата формула е:

    ЛЯВО( клетка , SEARCH(" char ", клетка ) -1)

    Тук използваме функцията SEARCH, за да получим позицията на символа и да я предадем на функцията LEFT, така че тя да извлече съответния брой символи от началото на низа. От числото, върнато от SEARCH, се изважда един символ, за да се изключи разделителят от резултатите.

    Например, за да премахнете част от низ след запетая, въведете следната формула в B2 и я плъзнете надолу през B7:

    =ЛЕВО(A2, SEARCH(",", A2) -1)

    Как да премахнете всичко преди определен символ

    За да изтриете част от текстов низ преди определен символ, общата формула е:

    ПРАВИЛНО( клетка , LEN( клетка ) - SEARCH(" char ", клетка ))

    Тук отново изчисляваме позицията на целевия символ с помощта на функцията SEARCH, изваждаме я от общата дължина на низа, върната от LEN, и предаваме разликата на функцията RIGHT, така че тя да изтегли толкова символа от края на низа.

    Например, за да премахнете текст преди запетая, формулата е:

    =RIGHT(A2, LEN(A2) - SEARCH(",", A2)

    В нашия случай запетаята е последвана от символ интервал. За да избегнем водещите интервали в резултатите, обвиваме основната формула във функцията TRIM:

    =TRIM(RIGHT(A2, LEN(A2) - SEARCH(",", A2))

    Забележки:

    • И в двата примера по-горе се предполага, че има само един случай на разделителя в оригиналния низ. Ако има няколко срещания, текстът ще бъде премахнат преди/след разделителя. първа инстанция .
    • Функцията SEARCH е не е чувствителен към големи и малки букви , което означава, че не прави разлика между малки и големи букви. Ако конкретният символ е буква и искате да разграничите регистъра на буквите, тогава използвайте отчитане на малки и големи букви Функция FIND вместо SEARCH.

    Как да изтриете текст след N-то появяване на символ

    В случаите, когато изходният низ съдържа множество случаи на разделител, може да се наложи да премахнете текста след определен случай. За тази цел използвайте следната формула:

    ЛЯВО( клетка , FIND("#", SUBSTITUTE( клетка , " char ", "#", n )) -1)

    Къде: n е появата на символа, след който да се премахне текстът.

    Вътрешната логика на тази формула изисква използването на някакъв символ, който не присъства никъде в изходните данни, в нашия случай символ за хеш (#). Ако този символ се среща във вашия набор от данни, тогава използвайте нещо друго вместо "#".

    Например, за да премахнете всичко след втората запетая в A2 (и самата запетая), формулата е:

    =LEFT(A2, FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)

    Как работи тази формула:

    Ключовата част от формулата е функцията FIND, която изчислява позицията на n-тия разделител (в нашия случай запетая). Ето как:

    Заменяме втората запетая в A2 със символ на хеш (или друг символ, който не съществува в данните ви) с помощта на SUBSTITUTE:

    ЗАМЕСТИТЕЛ (A2, ",", "#", 2)

    Полученият низ отива във втория аргумент на FIND, така че той намира позицията на "#" в този низ:

    FIND("#", "Emma, Design# (102) 123-4568")

    FIND ни казва, че "#" е 13-ият символ в низа. За да разберете броя на символите, които го предхождат, просто извадете 1 и ще получите 12 като резултат:

    FIND("#", SUBSTITUTE(A2, ",", "#", 2)) - 1

    Този номер отива директно към num_chars аргумент на LEFT, с който се иска да се извлекат първите 12 символа от A2:

    =ЛЯВО(A2, 12)

    Това е всичко!

    Как да изтриете текст преди N-тата поява на даден символ

    Общата формула за премахване на подниз преди определен символ е:

    ДЯСНО (ЗАМЕСТИТЕЛ( клетка , " char ", "#", n ), LEN( клетка ) - FIND("#", SUBSTITUTE( клетка , " char ", "#", n )) -1)

    Например, за да премахнете текста преди втората запетая в A2, формулата е:

    =RIGHT(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2) -1)

    За да премахнем водещия интервал, отново използваме функцията TRIM като обвивка:

    =TRIM(RIGHT(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))))

    Как работи тази формула:

    В обобщение, откриваме колко символа има след n-тия разделител и извличаме подниз със съответната дължина отдясно. По-долу е представена разбивката на формулата:

    Първо, заменяме втората запетая в A2 със символ за хеш:

    ЗАМЕСТИТЕЛ (A2, ",", "#", 2)

    Полученият низ отива в текст аргумент за ПРАВО:

    RIGHT("Emma, Design# (102) 123-4568", ...

    След това трябва да определим колко символа да извлечем от края на низа. За тази цел намираме позицията на символа хеш в горния низ (която е 13):

    FIND("#", SUBSTITUTE(A2, ",", "#", 2))

    И го извадете от общата дължина на низа (която е равна на 28):

    LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))

    Разликата (15) се предава на втория аргумент на RIGHT, като му се указва да изтегли последните 15 символа от низа в първия аргумент:

    RIGHT("Emma, Design# (102) 123-4568", 15)

    Изходът е подниз " (102) 123-4568", който е много близък до желания резултат, с изключение на водещия интервал. Затова използваме функцията TRIM, за да се отървем от него.

    Как да премахнете текст след последното появяване на даден символ

    Ако стойностите ви са разделени с различен брой разделители, може да искате да премахнете всичко след последния случай на този разделител. Това може да стане със следната формула:

    ЛЯВО( клетка , FIND("#", SUBSTITUTE( клетка , " char ", "#", LEN( клетка ) - LEN(SUBSTITUTE( клетка , " char ", "")))) -1)

    Да предположим, че колона А съдържа различна информация за служителите, но стойността след последната запетая винаги е телефонен номер. Вашата цел е да премахнете телефонните номера и да запазите всички останали данни.

    За да постигнете целта, можете да премахнете текста след последната запетая в A2 с помощта на тази формула:

    =LEFT(A2, FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","")))) -1)

    Копирайте формулата надолу по колоната и ще получите следния резултат:

    Как работи тази формула:

    Същността на формулата е, че определяме позицията на последния разделител (запетая) в низа и изтегляме подниз отляво до разделителя. Определянето на позицията на разделителя е най-сложната част и ето как се справяме с нея:

    Първо установяваме колко запетаи има в оригиналния низ. За тази цел заменяме всяка запетая с нищо ("") и подаваме получения низ на функцията LEN:

    LEN(SUBSTITUTE(A2, ",",""))

    За A2 резултатът е 35, което е броят на символите в A2 без запетаи.

    Извадете горното число от общата дължина на низа (38 символа):

    LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))

    ... и ще получите 3, което е общият брой на запетаите в A2 (а също и поредният номер на последната запетая).

    След това използвате вече познатата комбинация от функциите FIND и SUBSTITUTE, за да получите позицията на последната запетая в низа. Номерът на инстанцията (в нашия случай 3-та запетая) се предоставя от гореспоменатата формула LEN SUBSTITUTE:

    FIND("#", SUBSTITUTE(A2, ",", "#", 3))

    Оказва се, че третата запетая е 23-ият символ в A2, което означава, че трябва да извлечем 22 символа преди нея. Така че поставяме горната формула минус 1 в num_chars аргумент на LEFT:

    ЛЯВО(A2, 23-1)

    Как да премахнете текст преди последната поява на даден символ

    За да изтриете всичко преди последния случай на определен символ, общата формула е:

    ПРАВИЛНО( клетка , LEN( клетка ) - FIND("#", SUBSTITUTE( клетка , " char ", "#", LEN( клетка ) - LEN(SUBSTITUTE( клетка , " char ", "")))))

    В нашата примерна таблица, за да се премахне текстът преди последната запетая, формулата има следния вид:

    =RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","")))))

    Като финален щрих го вграждаме във функцията TRIM, за да премахнем водещите интервали:

    =TRIM(RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))))))

    Как работи тази формула:

    В обобщение, получаваме позицията на последната запетая, както беше обяснено в предишния пример, и я изваждаме от общата дължина на низа:

    LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))))

    В резултат получаваме броя на символите след последната запетая и го предаваме на функцията RIGHT, така че тя да изведе толкова символа от края на низа.

    Потребителска функция за премахване на текст от двете страни на даден символ

    Както видяхте в горните примери, можете да разрешите почти всеки случай на употреба, като използвате нативните функции на Excel в различни комбинации. Проблемът е, че трябва да запомните няколко сложни формули. Хм, какво ще кажете, ако напишем собствена функция, която да покрива всички сценарии? Звучи като добра идея. И така, добавете следния VBA код в работната си книга (подробните стъпки за вмъкване на VBA в Excel сатук):

    Функция 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 RemoveText = str_result End Function

    Нашата функция се нарича Премахване на текста и има следния синтаксис:

    RemoveText(низ, разделител, поява, is_after)

    Къде:

    Редица - е оригиналният текстов низ. Може да бъде представен чрез препратка към клетка.

    Разделител - символът преди/след който да се премахне текстът.

    Случайност - екземпляра на разделителя.

    Is_after - булева стойност, която указва от коя страна на разделителя да се премахне текстът. Може да бъде единичен символ или поредица от символи.

    • TRUE - изтрива всичко след разделителя (включително самия разделител).
    • FALSE - изтрива всичко преди разделителя (включително самия разделител).

    След като кодът на функцията е вмъкнат в работната ви книга, можете да премахвате поднизове от клетките, като използвате компактни и елегантни формули.

    Например, за да изтриете всичко след първата запетая в A2, формулата в B2 е:

    =RemoveText(A3, ", ", 1, TRUE)

    За да изтриете всичко преди първата запетая в A2, формулата в C2 е:

    =RemoveText(A3, ", ", 1, FALSE)

    Тъй като нашата потребителска функция приема низ за разделителя , поставяме запетая и интервал (", ") във втория аргумент, за да си спестим последващото изрязване на водещите интервали.

    Нашата потребителска функция работи прекрасно, нали? Но ако смятате, че това е цялостното решение, още не сте видели следващия пример :)

    Изтрийте всичко преди, след или между символите

    За да получите още повече възможности за премахване на отделни символи или текст от няколко клетки по съвпадение или позиция, добавете нашия Ultimate Suite към своя набор от инструменти на Excel.

    Тук ще разгледаме отблизо Премахване по позиция функция, разположена в Данни от Ablebits tab> Текст група> Премахване на .

    По-долу ще разгледаме двата най-често срещани сценария.

    Премахване на всичко преди или след определен текст

    Да предположим, че всички ваши изходни низове съдържат някаква обща дума или текст и вие искате да изтриете всичко преди или след този текст. За да го направите, изберете изходните си данни, изпълнете Премахване по позиция и го конфигурирайте, както е показано по-долу:

    1. Изберете Всички символи преди текста или Всички символи след текста и въведете ключовия текст (или символ) в полето до него.
    2. В зависимост от това дали главните и малките букви трябва да се третират като различни или като едни и същи знаци, поставете или премахнете отметката в Чувствителност на буквите кутия.
    3. Хит Премахване на .

    В този пример премахваме всички символи, предхождащи думата "грешка" в клетките А2:А8:

    И получаваме точно този резултат, който търсим:

    Премахване на текст между два символа

    В случаите, когато между 2 конкретни символа има нерелевантна информация, ето как можете бързо да я изтриете:

    1. Изберете Премахване на всички поднизове и въведете два символа в полетата по-долу.
    2. Ако трябва да се премахнат и символите "между", проверете Включване на разделители кутия.
    3. Кликнете върху Премахване на .

    Като пример, изтриваме всичко между два символа тилда (~) и получаваме перфектно изчистените низове като резултат:

    За да изпробвате други полезни функции, включени в този многофункционален инструмент, ви препоръчвам да изтеглите версията за оценка в края на тази публикация. Благодаря ви за четенето и се надявам да се видим в нашия блог следващата седмица!

    Налични изтегляния

    Премахване на първите или последните символи - примери (.xlsm файл)

    Ultimate Suite - пробна версия (.exe файл)

    Майкъл Браун е отдаден технологичен ентусиаст със страст към опростяване на сложни процеси с помощта на софтуерни инструменти. С повече от десетилетие опит в технологичната индустрия, той е усъвършенствал уменията си в Microsoft Excel и Outlook, както и в Google Sheets и Docs. Блогът на Майкъл е посветен на споделянето на неговите знания и опит с други, предоставяйки лесни за следване съвети и уроци за подобряване на продуктивността и ефективността. Независимо дали сте опитен професионалист или начинаещ, блогът на Michael предлага ценни прозрения и практически съвети за извличане на максимума от тези основни софтуерни инструменти.