Отстранете го текстот пред, после или помеѓу два знака во Excel

  • Споделете Го Ова
Michael Brown

Во неодамнешните неколку написи, разгледавме различни начини за отстранување на знаци од низи во Excel. Денес, ќе истражиме уште еден случај на употреба - како да избришете сè пред или по одреден знак.

    Избришете текст пред, после или помеѓу 2 знаци со Find & Замени

    За манипулации со податоци во повеќе ќелии, Find and Replace е вистинската алатка. За да отстраните дел од низата што претходи или следи одреден знак, ова се чекорите што треба да ги извршите:

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

    На пример, за отстранување сè по запирка вклучувајќи ја и самата запирка, ставете запирка и знак за ѕвездичка (,*) во полето Најдете што и ќе го добиете следниот резултат:

    За да избришете подниза пред запирка , напишете ѕвездичка, запирка,сè по првата запирка во A2, формулата во B2 е:

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

    За да избришете сè пред првата запирка во A2, формулата во C2 е:

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

    Бидејќи нашата приспособена функција прифаќа низа за разграничувачот , ставаме запирка и празно место (", ") во вториот аргумент за да ја поштедиме маката за отсекување на водечките празни места потоа.

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

    Избришете сè пред, после или помеѓу знаците

    За да добиете уште повеќе опции за отстранување поединечни знаци или текст од повеќе ќелии, по совпаѓање или позиција, додајте го нашиот Ultimate Suite во вашата кутија со алатки на Excel.

    Овде, ќе ја разгледаме одблизу функцијата Отстрани по позиција лоцирана на Ablebits Data tab > Text group > Remove .

    Подолу, ќе ги покриеме двете најчестите сценарија.

    Отстранете сè пред или по одреден текст

    Да претпоставиме дека сите ваши изворни низи содржат некој заеднички збор или текст и сакате да избришете сè пред или после тој текст. За да го направите тоа, изберете ги вашите изворни податоци, активирајте ја алатката Отстрани по позиција и конфигурирајте ја како што е прикажано подолу:

    1. Изберете ги Сите знаци пред текстот или опција Сите знаци по текст и напишете го клучниот текст (или знак) во полето следнодо него.
    2. Во зависност од тоа дали големите и малите букви треба да се третираат како различни или исти знаци, штиклирајте го или отштиклирајте го полето Сензитивно на букви .
    3. Прити Отстрани .

    Во овој пример, ги отстрануваме сите знаци пред зборот „грешка“ во ќелиите A2:A8:

    И добијте го точно резултатот што го бараме:

    Отстранете текст помеѓу два знака

    Во ситуација кога ирелевантните информации се помеѓу 2 конкретни знаци, еве како можете брзо да го избришете:

    1. Изберете Отстранете ги сите поднизи и напишете два знака во полињата подолу.
    2. Ако треба да се отстранат и знаците „помеѓу“ , штиклирајте го полето Вклучувајќи разграничувачи .
    3. Кликнете Отстрани .

    Како на пример, ние бришеме сè што се наоѓа помеѓу два знаци (~), и како резултат ги добиваме совршено исчистените низи:

    За да ги испробаме другите корисни функции вклучени во овој мултифункционален алатка, ве охрабрувам да преземете е верзија за вреднување на крајот од овој пост. Ви благодариме што прочитавте и се надеваме дека ќе се видиме на нашиот блог следната недела!

    Достапни преземања

    Отстранете ги првите или последните знаци - примери (датотека .xlsm)

    Ultimate Suite - пробна верзија (датотека .exe)

    и празно место (*, ) во полето Најди што.

    Забележете дека заменуваме не само запирка, туку запирка и празно место за да спречиме водечки празни места во резултатите. Ако вашите податоци се одделени со запирки без празни места, тогаш користете ѕвездичка проследена со запирка (*,).

    За да избришете текст помеѓу две запирки , користете ѕвездичка опкружена со запирки (,*,).

    Совет. Ако сакате имињата и телефонските броеви да бидат одделени со запирка, тогаш напишете запирка (,) во полето Замени со .

    Отстранете дел од текстот со помош на Flash Fill

    Во модерните верзии на Excel (2013 и понови), постои уште еден лесен начин да се искорени текстот што му претходи или следи одреден знак - функцијата Flash Fill. Еве како функционира:

    1. Во ќелијата веднаш до првата ќелија со вашите податоци, напишете го очекуваниот резултат и притиснете Enter .
    2. Почнете да пишувате соодветна вредност во следната ќелија. Откако Excel ќе ја почувствува шемата во вредностите што ги внесувате, ќе прикаже преглед за преостанатите ќелии по истата шема.
    3. Притиснете го копчето Enter за да го прифатите предлогот.

    Готово!

    Отстранете текст користејќи формули

    Во Microsoft Excel, многу манипулации со податоци извршени со користење на вградени функции може да се остварат и со формула. За разлика од претходните методи, формулите не прават никакви промени на оригиналните податоци и ви даваат поголема контрола надрезултатите.

    Како да отстраните сè по одреден знак

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

    LEFT( ќелија , SEARCH (" char ", ќелија ) -1)

    Овде, ја користиме функцијата SEARCH за да ја добиеме позицијата на знакот и да ја префрлиме на функцијата LEFT, така што извлекува соодветниот број на знаци од почетокот на низата. Еден знак се одзема од бројот вратен со SEARCH за да се исклучи разграничот од резултатите.

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

    =LEFT(A2, SEARCH(",", A2) -1)

    Како да отстраните сè пред одреден знак

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

    RIGHT( ќелија , LEN( ќелија ) - SEARCH(" char ", ќелија ))

    Овде, повторно ја пресметуваме позицијата на целниот знак со помош на SEARCH, ја одземаме од вкупната должина на низата вратена од LEN и ја пренесуваме разликата во функцијата RIGHT, така што ќе повлече толку знаци од крајот на стринг.

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

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

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

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

    Забелешки:

    • И дветеод горенаведените примери претпоставуваме дека има само еден пример од разграничувачот во оригиналната низа. Ако има повеќе појави, текстот ќе се отстрани пред/по првиот пример .
    • Функцијата SEARCH е не чувствителна на букви , што значи дека не прави разлика помеѓу мали и големи букви. Ако вашиот специфичен знак е буква и сакате да ја разликувате буквата, тогаш користете ја функцијата чувствителна на букви FIND наместо SEARCH.

    Како да го избришете текстот по N-то појавување на знак

    Во ситуација кога изворната низа содржи повеќе примероци на разграничувачот, можеби ќе треба да отстраните текст по одреден пример. За ова, користете ја следната формула:

    LEFT( ќелија , FIND("#", SUBSTITUTE( ќелија , " char ", "#" , n )) -1)

    Каде n е појавата на знакот по што се отстранува текстот.

    Внатрешната логика на оваа формула бара користење на некој знак што не е присутно никаде во изворните податоци, хаш симбол (#) во нашиот случај. Ако овој знак се појавува во вашиот сет на податоци, тогаш користете нешто друго наместо „#“.

    На пример, за да отстраните сè по 2-та запирка во A2 (и самата запирка), формулата е:

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

    Како функционира оваа формула:

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

    Ја заменуваме 2-та запирка во А2 со хаш симбол (или кој било друг знак што не постои во вашите податоци) со помош на SUBSTITUTE:

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

    Резултирачката низа оди до вториот аргумент на FIND, па ја наоѓа позицијата на „#“ во таа низа:

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

    FIND ни кажува дека „#“ е 13-тиот знак во низата. За да го знаете бројот на знаци пред него, само одземете 1 и ќе добиете 12 како резултат:

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

    Овој број оди директно во аргументот num_chars од LEFT барајќи од него да ги повлече првите 12 знаци од A2:

    =LEFT(A2, 12)

    Тоа е тоа!

    Како да се избрише текст пред N-то појавување на знак

    Генеричката формула за отстранување на подниза пред одреден знак е:

    RIGHT(SUBSTITUTE( ќелија , „ char “, „#“, n ), LEN( ќелија ) - FIND("#", SUBSTITUTE( ќелија , " char ", "#", n )) -1)

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

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

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

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

    Како функционира оваа формула:

    Накратко, дознаваме колку знаци има после n-тиот разграничувач и оддесно извлечете подниза со соодветната должина. Подолу е разложена формулата:

    Прво, ја заменуваме втората запирка во А2 со хашсимбол:

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

    Резултирачката низа оди во аргументот текст на RIGHT:

    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 за да се ослободиме од неа.

    Како да го отстраните текстот по последното појавување на знак

    Во случај вашите вредности да се одделат со променлив број разграничувачи, вие можеби ќе сака да отстрани сè по последната инстанца на тој разграничувач. Ова може да се направи со следнава формула:

    LEFT( ќелија , FIND("#", SUBSTITUTE( ќелија , " char ", "# ", LEN( ќелија ) - LEN(SUBSTITUTE( ќелија , " char ", "")))) -1)

    Да претпоставиме колона A содржи различни информации за вработените, но вредноста по последната запирка е секогаш телефонски број. Вашата цел е да ги отстраните телефонските броеви и да ги задржите сите други детали.

    За да ја постигнете целта, можете да го отстраните текстот по последната запирка во А2 со оваформула:

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

    Копирајте ја формулата по колоната и ќе го добиете овој резултат:

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

    Сржта на формулата е дека ја одредуваме позицијата на последниот разгранич (запирка) во низата и повлекуваме подниза од лево нагоре кон разграничувачот. Добивањето на позицијата на разграничувачот е најтешкиот дел, а еве како се справуваме со тоа:

    Прво, дознаваме колку запирки има во оригиналната низа. За ова, секоја запирка ја заменуваме со ништо ("") и ја сервираме добиената низа на функцијата LEN:

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

    За A2, резултатот е 35, што е бројот на знаци во А2 без запирки.

    Одземете го горниот број од вкупната должина на низата (38 знаци):

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

    … и ќе добиете 3, што е вкупниот број запирки во A2 (и исто така редниот број на последната запирка).

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

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

    Се чини дека третата запирка е 23-от знак во А2, што значи дека ни треба да се извлечат 22 знаци пред него. Така, ја ставивме горната формула минус 1 во аргументот num_chars на LEFT:

    LEFT(A2, 23-1)

    Како да се отстрани текстот пред последната појава на знак

    За бришењесè пред последната инстанца на одреден знак, генеричката формула е:

    RIGHT( ќелија , LEN( ќелија ) - FIND("#", SUBSTITUTE( ќелија , „ кар “, „#“, LEN( ќелија ) - LEN(SUBSTITUTE( ќелија , „ карта ", "")))))

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

    =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, така што носи толку знаци од крајот на низата.

    Прилагодена функција за отстранување текст од двете страни на знакот

    Како сте виделе во горенаведените примери, можете да го решите речиси секој случај на употреба со користење на мајчин f на Excel ункции во различни комбинации. Проблемот е што треба да запомните неколку незгодни формули. Хм, што ако ја напишеме нашата сопствена функција за да ги покриеме сите сценарија? Звучи како добра идеја. Значи, додајте го следниов VBA-код во вашата работна книга (деталните чекори за вметнување VBA во Excel се тука):

    Функција RemoveText(str As String , Delimiter As String , појава како Integer , is_after AsБулова ) Dim delimiter_num, start_num, delimiter_len Како цел број Dim str_result Како стринг delimiter_num = 0 start_num = 1 str_result = "" delimiter_len = Len(разграничувач) За i = 1 До појава разграничувач_num = InStrpareT,Nummiter,vstart, < delimiter_num Потоа start_num = delimiter_num + delimiter_len End If Next i Ако 0 < delimiter_num Потоа ако е точно = is_after Потоа str_result = Mid(str, 1, start_num - delimiter_len - 1) Друго str_result = Mid(str, start_num) Крај ако Крај Ако RemoveText = str_result Крај Функција

    Нашата функција е именувана ОтстраниТ и ја има следнава синтакса:

    RemoveText(низа, разграничувач, појава, is_after)

    Каде:

    String - е оригиналната текстуална низа. Може да се претстави со референца на ќелија.

    Одделувач - знакот пред/после да се отстрани текстот.

    Појава - примерот на разграничувач.

    Is_after - Булова вредност која покажува на која страна од разграничувачот да се отстрани текстот. Може да биде еден знак или низа знаци.

    • ТОЧНО - избришете сè по разграничувачот (вклучувајќи го и самиот разграничувач).
    • FALSE - избришете сè пред разграничувачот (вклучувајќи го самиот разграниувач).

    Откако ќе се вметне кодот на функцијата во работната книга, можете да ги отстраните поднизите од ќелиите користејќи компактни и елегантни формули.

    На пример, за бришење

    Мајкл Браун е посветен технолошки ентузијаст со страст за поедноставување на сложените процеси користејќи софтверски алатки. Со повеќе од една деценија искуство во технолошката индустрија, тој ги усоврши своите вештини во Microsoft Excel и Outlook, како и Google Sheets и Docs. Блогот на Мајкл е посветен на споделување на своето знаење и експертиза со другите, обезбедувајќи лесни за следење совети и упатства за подобрување на продуктивноста и ефикасноста. Без разлика дали сте искусен професионалец или почетник, блогот на Мајкл нуди вредни сознанија и практични совети за да го извлечете максимумот од овие основни софтверски алатки.