Видалення тексту до, після або між двома символами в 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 багато маніпуляцій з даними, що виконуються за допомогою вбудованих функцій, також можна виконати за допомогою формули. На відміну від попередніх методів, формули не вносять ніяких змін у вихідні дані і дають більше контролю над результатами.

    Як видалити все після певного символу

    Для видалення тексту після певного символу використовується загальна формула:

    LEFT( клітина , SEARCH(" char - символ ", клітина ) -1)

    Тут ми використовуємо функцію SEARCH для отримання позиції символу і передаємо її функції LEFT, щоб вона витягла відповідну кількість символів з початку рядка. З числа, повернутого функцією SEARCH, віднімається один символ, щоб виключити роздільник з результатів.

    Наприклад, щоб видалити частину рядка після коми, введіть наведену нижче формулу в B2 і перетягніть її вниз через B7:

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

    Як прибрати все до певного символу

    Для видалення частини текстового рядка до певного символу використовується загальна формула:

    ТАК. клітина , LEN( клітина ) - ПОШУК(" char - символ ", клітина ))

    Тут ми знову обчислюємо позицію шуканого символу за допомогою функції SEARCH, віднімаємо її від загальної довжини рядка, що повертається функцією LEN, і передаємо різницю функції RIGHT, щоб вона витягнула стільки-то символів з кінця рядка.

    Наприклад, для видалення тексту перед комою використовується формула:

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

    У нашому випадку після коми йде пробіл. Щоб уникнути передніх пробілів у результатах, ми обертаємо основну формулу у функцію TRIM:

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

    Нотатки:

    • Обидва наведені вище приклади припускають, що існує лише один екземпляр Якщо таких входжень декілька, то текст буде видалено до/після роздільника. перша інстанція .
    • Функція ПОШУК - це не чутливий до регістру тобто не робить різниці між малими та великими літерами. Якщо ваш символ є літерою і ви хочете розрізняти регістр літер, то використовуйте ключ з урахуванням особливостей конкретного випадку Функція FIND замість SEARCH.

    Як видалити текст після N-го входження символу

    У ситуації, коли вихідний рядок містить декілька екземплярів роздільника, може виникнути необхідність видалити текст після конкретного екземпляра. Для цього скористайтеся наступною формулою:

    LEFT( клітина , FIND("#", ПІДСТАВИТИ( клітина , " char - символ ", "#", n )) -1)

    Де n це входження символу, після якого потрібно видалити текст.

    Внутрішня логіка цієї формули вимагає використання деякого символу, який ніде не присутній у вихідних даних, хеш-символу (#) в нашому випадку. Якщо цей символ зустрічається у вашому наборі даних, то замість "#" використовуйте щось інше.

    Наприклад, щоб прибрати все, що після 2-ї коми в А2 (і саму кому), формула має вигляд:

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

    Як працює ця формула:

    Ключовою частиною формули є функція FIND, яка обчислює положення n-го роздільника (в нашому випадку коми). Ось як:

    Замінюємо 2-гу кому в А2 на хеш-символ (або будь-який інший символ, якого немає у ваших даних) за допомогою SUBSTITUTE:

    REPLACE(A2, ",", "#", 2)

    Отриманий рядок передається до 2-го аргументу FIND, тобто знаходить позицію "#" у цьому рядку:

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

    FIND повідомляє нам, що "#" є 13-м символом у рядку. Щоб дізнатися кількість символів, що передують йому, просто відніміть 1, і ви отримаєте в результаті 12:

    FIND("#", ПІДСТАНОВКА(A2, ",", "#", 2)) - 1

    Цей номер надходить безпосередньо до num_chars аргумент LEFT з проханням витягнути перші 12 символів з A2:

    =LEFT(A2, 12)

    Ось так!

    Як видалити текст до N-го входження символу

    Загальна формула для видалення підрядка перед певним символом має вигляд:

    ПРАВО(ЗАМІННИК( клітина , " char - символ ", "#", n ), LEN( клітина ) - FIND("#", SUBSTITUTE( клітина , " char - символ ", "#", n )) -1)

    Наприклад, для вилучення тексту перед 2-ю комою в форматі А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-гу кому в А2 на хеш-символ:

    REPLACE(A2, ",", "#", 2)

    Отриманий рядок передається в текст аргумент ПРАВА:

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

    Далі нам потрібно визначити, скільки символів витягти з кінця рядка. Для цього знаходимо позицію хеш-символу у вищенаведеному рядку (а це 13):

    FIND("#", ПІДСТАНОВКА(A2, ",", "#", 2))

    І віднімаємо його від загальної довжини рядка (яка дорівнює 28):

    LEN(A2) - FIND("#", ПІДСТАНОВКА(A2, ",", "#", 2))

    Різниця (15) передається другому аргументу RIGHT, вказуючи йому витягнути останні 15 символів з рядка в першому аргументі:

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

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

    Як видалити текст після останнього входження символу

    Якщо ваші значення розділені змінною кількістю роздільників, ви можете видалити все, що знаходиться після останнього примірника цього роздільника. Це можна зробити за допомогою наступної формули:

    LEFT( клітина , FIND("#", ПІДСТАВИТИ( клітина , " char - символ ", "#", LEN( клітина ) - LEN(REPLACE( клітина , " char - символ ", "")))) -1)

    Припустимо, що стовпець A містить різну інформацію про співробітників, але значення після останньої коми завжди є номером телефону. Ваша мета - видалити номери телефонів і зберегти всі інші дані.

    Для досягнення мети можна видалити текст після останньої коми в А2 за допомогою цієї формули:

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

    Скопіюйте формулу вниз по стовпчику, і ви отримаєте такий результат:

    Як працює ця формула:

    Суть формули полягає в тому, що ми визначаємо положення останнього роздільника (коми) в рядку і витягуємо підрядок зліва до роздільника. Визначення положення роздільника - найскладніша частина, і ось як ми це робимо:

    Спочатку з'ясуємо, скільки ком у вихідному рядку. Для цього замінимо кожну кому на ніщо ("") і подамо отриманий рядок у функцію LEN:

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

    Для А2 результат дорівнює 35, що є кількістю символів в А2 без ком.

    Від загальної довжини рядка (38 символів) відніміть вищевказане число:

    LEN(A2) - LEN(ПІДСТАНОВКА(A2, ",",""))

    ... і отримаєте 3, що є загальною кількістю ком в А2 (а також порядковим номером останньої коми).

    Далі за допомогою вже знайомої комбінації функцій FIND і SUBSTITUTE отримуємо позицію останньої коми в рядку. Номер екземпляра (3-я кома в нашому випадку) видається за допомогою вищезгаданої формули LEN SUBSTITUTE:

    FIND("#", ПІДСТАНОВКА(A2, ",", "#", 3))

    Виходить, що 3-я кома є 23-м символом в А2, тобто нам потрібно витягти 22 символи, що передують їй. Отже, поміщаємо наведену вище формулу за мінусом 1 в num_chars аргумент лівих:

    LEFT(A2, 23-1)

    Як видалити текст до останнього входження символу

    Для видалення всього, що знаходиться перед останнім екземпляром конкретного символу, використовується родова формула:

    ТАК. клітина , LEN( клітина ) - FIND("#", SUBSTITUTE( клітина , " char - символ ", "#", LEN( клітина ) - LEN(REPLACE( клітина , " 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 знаходяться туттут):

    Function 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 і має наступний синтаксис:

    RemoveText(string, роздільник, occurrence, is_after)

    Де:

    Рядок - вихідний текстовий рядок, може бути представлений посиланням на комірку.

    Розмежувач - символ, до/після якого потрібно видалити текст.

    Виникнення - інстанція делімітатора.

    Is_after - булеве значення, яке вказує, з якого боку від роздільника видаляти текст. Може бути одним символом або послідовністю символів.

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

    Після того, як код функції вставлено в робочу книгу, ви можете видаляти підрядки з комірок за допомогою компактних і елегантних формул.

    Наприклад, щоб стерти все, що після 1-ї коми в А2, формула в В2 буде такою:

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

    Видалити все, що до 1-ї коми в А2, формула в С2 має вигляд:

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

    Оскільки наша користувацька функція приймає рядок для роздільника ми ставимо кому і пробіл (", ") у 2-му аргументі, щоб не обрізати потім провідні пробіли.

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

    Видалити все до, після або між символами

    Щоб отримати ще більше можливостей для видалення окремих символів або тексту з декількох комірок, за збігом або позицією, додайте наш Ultimate Suite до панелі інструментів Excel.

    Тут ми більш детально розглянемо Видалити за позицією функцію, розташовану на сайті Дані про абіти вкладка> Текст група> Видалити .

    Нижче ми розглянемо два найбільш поширені сценарії.

    Видалити все, що знаходиться перед або після певного тексту

    Припустимо, що всі вихідні рядки містять деяке спільне слово або текст, і ви хочете видалити все, що знаходиться до або після цього тексту. Щоб це зробити, виберіть вихідні дані, виконайте команду Видалити за позицією та налаштуйте його, як показано нижче:

    1. Виберіть пункт Всі символи перед текстом або Всі символи після тексту і введіть ключовий текст (або символ) у полі поруч з ним.
    2. Залежно від того, чи слід вважати великі та малі літери різними або однаковими символами, встановіть або зніміть прапорець З урахуванням особливостей конкретного випадку Ящик.
    3. Хіт Видалити .

    У цьому прикладі ми видаляємо всі символи, що передують слову "error" в комірках A2:A8:

    І отримуємо саме той результат, на який розраховуємо:

    Видалення тексту між двома символами

    У ситуації, коли неактуальна інформація знаходиться між 2 конкретними символами, ось як можна швидко її видалити:

    1. Обирайте Видалити всі підрядки та введіть два символи у нижченаведені поля.
    2. Якщо символи "між" також повинні бути видалені, встановіть прапорець Включаючи делімітатори Ящик.
    3. Натисніть Видалити .

    Як приклад, видаляємо все, що знаходиться між двома символами тильди (~), і отримуємо в результаті ідеально очищені рядки:

    Щоб спробувати інші корисні функції, включені в цей багатофункціональний інструмент, я рекомендую вам завантажити ознайомчу версію в кінці цієї публікації. Дякую за прочитання і сподіваюся побачити вас на нашому блозі наступного тижня!

    Доступні для завантаження

    Видалення перших або останніх символів - приклади (файл .xlsm)

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

    Майкл Браун — відданий ентузіаст технологій із пристрастю до спрощення складних процесів за допомогою програмних засобів. Маючи понад десятирічний досвід роботи в технологічній індустрії, він відточив свої навички роботи з Microsoft Excel і Outlook, а також із Google Таблицями та Документами. Блог Майкла присвячений тому, щоб поділитися своїми знаннями та досвідом з іншими, надаючи прості поради та навчальні посібники для підвищення продуктивності та ефективності. Незалежно від того, чи є ви досвідченим професіоналом чи початківцем, блог Майкла пропонує цінну інформацію та практичні поради щодо отримання максимальної користі від цих основних програмних інструментів.