Як видалити текст або числа з комірки Excel

  • Поділитися Цим
Michael Brown

Цей урок навчить вас відокремлювати текст від чисел в Excel за допомогою вбудованих формул і користувацьких функцій. Ви також дізнаєтеся, як розділити текст і числа на дві окремі колонки.

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

Якщо ви працюєте з однорідними даними, ви можете використовувати функції LEFT, RIGHT і MID для вилучення однакової кількості символів з однієї і тієї ж позиції. Але це ідеальний сценарій для лабораторних досліджень. У реальному житті ви, швидше за все, маєте справу з різнорідними даними, де цифри знаходяться перед текстом, після тексту або між текстом. Наведені нижче приклади пропонують рішення саме для таких випадківу справі.

    Як видалити текст і зберегти числа в комірках Excel

    Рішення працює в Excel 365, Excel 2021 та Excel 2019

    У Microsoft Excel 2019 з'явилося кілька нових функцій, недоступних у попередніх версіях, і ми скористаємося однією з таких функцій, а саме TEXTJOIN, для видалення текстових символів з комірки, що містить числа.

    Загальна формула така:

    TEXTJOIN("", TRUE, IFERROR(MID( клітина , ROW(INDIRECT("1:"&LEN( клітина ))), 1) *1, ""))

    В Excel 365 та 2021 цей варіант також працюватиме:

    TEXTJOIN("", TRUE, IFERROR(MID( клітина , SEQUENCE(LEN( клітина )), 1) *1, ""))

    На перший погляд, формули можуть виглядати дещо лякаюче, але вони працюють :)

    Наприклад, щоб видалити текст з чисел в комірці A2, введіть одну з наведених нижче формул в комірку B2, а потім скопіюйте її в потрібну кількість комірок.

    В Excel 365 - 2019:

    =TEXTJOIN("", TRUE, IFERROR(MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1) *1, ""))

    В Excel 2019 її потрібно вводити як формулу масиву з комбінацією Ctrl + Shift + Enter. У динамічному масиві Excel вона працює як звичайна формула, що завершується клавішею Enter.

    В Excel 365 та 2021:

    =TEXTJOIN("", TRUE, IFERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1, ""))

    В результаті з комірки видаляються всі текстові символи, а цифри залишаються:

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

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

    Ви використовуєте ROW(INDIRECT("1:"&LEN(string))) або SEQUENCE(LEN(string)) для створення послідовності чисел a, що відповідають загальній кількості символів у вихідному рядку, а потім передаєте ці послідовні номери у функцію MID як початкові числа. У B2 ця частина формули виглядає наступним чином:

    MID(A2, {1;2;3;4;5;6;7;8;9;10;11;12;13;14;15}, 1)

    Функція MID витягує кожен символ з A2, починаючи з самого першого, і повертає їх у вигляді масиву:

    {"2";"1";"0";" ";"S";"u";"n";"s";"e";"t";" ";"R";"o";"a";"d"}

    Цей масив множиться на 1. Числові значення зберігаються без змін, а множення нечислового символу призводить до помилки #VALUE!

    {2;1;0;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}

    Функція IFERROR обробляє ці помилки і замінює їх порожніми рядками:

    {2;1;0;"";"";"";"";"";"";"";"";"";"";"";""}

    Цей кінцевий масив подається у функцію TEXTJOIN, яка об'єднує непорожні значення в масиві ( ignore_empty має значення TRUE) з використанням порожнього рядка ("") в якості роздільника:

    TEXTJOIN("", TRUE, {2;1;0;"";"";"";"";"";"";"";"";"";"";"";""})

    Порада. Для Excel 2016 - 2007 рішення також існує, але формула набагато складніша. Ви можете знайти його в цьому уроці: Як витягти числа в Excel.

    Кастомна функція видалення тексту з номерів

    Рішення працює для всіх версій Excel

    Якщо ви використовуєте стару версію Excel або вважаєте наведені вище формули занадто складними для запам'ятовування, ніщо не заважає вам створити власну функцію з більш простим синтаксисом і зручним для користувача ім'ям, наприклад RemoveText Функція користувача (UDF) може бути записана двома способами:

    Код VBA 1:

    Тут ми по черзі переглядаємо кожен символ вихідного рядка і перевіряємо, чи є він числом чи ні. Якщо це число, то символ додається до результуючого рядка.

    Function RemoveText(str As String ) Dim sRes As String sRes = "" For i = 1 To Len(str) If True = IsNumeric(Mid(str, i, 1)) Then sRes = sRes & Mid(str, i, 1) End If Next i RemoveText = sRes End Function

    Код VBA 2:

    У коді створюється об'єкт для обробки регулярного виразу. З допомогою RegExp ми видаляємо з вихідного рядка всі символи, крім цифр 0-9.

    Function RemoveText(str As String ) As String With CreateObject ( "VBScript.RegExp" ) .Global = True .Pattern = "[^0-9]" RemoveText = .Replace(str, "" ) End With End Function

    На невеликих аркушах обидва коди будуть працювати однаково добре. На великих аркушах, де функція викликається сотні і тисячі разів, швидше буде працювати код 2, який використовує VBScript.RegExp.

    Детальні кроки по вставці коду в книгу можна знайти тут: Як вставити код VBA в Excel.

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

    RemoveText(string)

    Наприклад, для видалення нецифрових символів з комірки А2 використовується формула в комірці В2:

    =RemoveText(A2)

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

    Зауваження. Як власні формули, так і користувацька функція виводять a числовий рядок Щоб перетворити його в число, помножте результат на 1, або додайте нуль, або оберніть формулу у функцію VALUE. Наприклад:

    =RemoveText(A2) + 0

    =VALUE(RemoveText(A2))

    Як видалити числа з текстового рядка в Excel

    Рішення працює в Excel 365, Excel 2021 та Excel 2019

    Формули для видалення чисел з алфавітно-цифрового рядка практично не відрізняються від розглянутих у попередньому прикладі.

    Для Excel 365 - 2019:

    TEXTJOIN("", TRUE, IF(ISERR(MID( клітина , ROW(INDIRECT("1:"&LEN( клітина ))), 1) *1), MID( клітина , ROW(INDIRECT("1:"&LEN( клітина ))), 1), ""))

    В Excel 2019 не забудьте зробити його формула масиву натиснувши одночасно клавіші Ctrl + Shift + Enter.

    Для Excel 365 та 2021:

    TEXTJOIN("", TRUE, IF(ISERROR(MID( клітина , SEQUENCE(LEN( клітина 1) *1), MID( клітина , SEQUENCE(LEN( клітина )), 1), ""))

    Наприклад, для вилучення чисел з рядка в комірці А2 використовується формула:

    =TEXTJOIN("", TRUE, IF(ISERR(MID(A2, ROW(INDIRECT("1:"&LEN(A2) )), 1) *1), MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1), ""))

    Або

    =TEXTJOIN("", TRUE, IF(ISERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1), MID(A2, SEQUENCE(LEN(A2)), 1), ""))

    В результаті з комірки видаляються всі цифри, а текстові символи залишаються:

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

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

    =TRIM(TEXTJOIN("", TRUE, IF(ISERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1), MID(A2, SEQUENCE(LEN(A2)), 1), "")))

    Зараз ваші результати абсолютно ідеальні!

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

    По суті, формула працює так само, як і в попередньому прикладі. Різниця полягає в тому, що з кінцевого масиву, поданого в функцію TEXTJOIN, потрібно видалити не текст, а числа. Для цього використовується комбінація функцій IF і ISERROR.

    Як ви пам'ятаєте, MID(...)+0 генерує масив чисел і помилок #VALUE!, що представляють собою текстові символи в однакових позиціях:

    {2;1;0;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}

    Функція ISERROR перехоплює помилки і передає отриманий масив булевих значень в IF:

    {FALSE;FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE}

    Коли функція IF отримує значення TRUE (помилка), вона за допомогою іншої функції MID вставляє в оброблюваний масив відповідний текстовий символ. Коли функція IF отримує значення FALSE (число), вона замінює його на порожній рядок:

    {"";"";"";"";" "; "S"; "u"; "n"; "s"; "e"; "t";" "; "R"; "o"; "a"; "d"}

    Цей кінцевий масив передається в TEXTJOIN, щоб він об'єднав текстові символи і вивів результат.

    Кастомна функція видалення цифр з тексту

    Рішення працює для всіх версій Excel

    Пам'ятаючи про те, що надійна формула повинна бути простою, я поділюся кодом користувацької функції (UDF) для вилучення будь-якого числового символу.

    Код VBA 1:

    Function RemoveNumbers(str As String ) Dim sRes As String sRes = "" For i = 1 To Len(str) If False = IsNumeric(Mid(str, i, 1)) Then sRes = sRes & Mid(str, i, 1) End If Next i RemoveNumbers = sRes End Function

    Код VBA 2:

    Function RemoveNumbers(str As String ) As String With CreateObject ( "VBScript.RegExp" ) .Global = True .Pattern = "[0-9]" RemoveNumbers2 = .Replace(str, "" ) End With End Function

    Як і у випадку з функцією RemoveText, другий код краще використовувати на великих аркушах для оптимізації продуктивності.

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

    RemoveNumbers(рядок)

    У нашому випадку формула в Б2 має такий вигляд:

    =RemoveNumbers(A2)

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

    =TRIM(RemoveNumbers(A2))

    Розділити цифри і текст в окремі колонки

    У ситуації, коли потрібно розділити текст і цифри на дві колонки, було б непогано, щоб робота виконувалася однією формулою, погодьтеся? Для цього ми просто об'єднуємо код RemoveText і RemoveNumbers функцій в одну функцію, яка називається SplitTextNumbers або просто Спліт або як вам більше подобається :)

    Код VBA 1:

    Function SplitTextNumbers(str As String , is_remove_text As Boolean ) As String Dim sNum, sText, sChar As String sCurChar = sNum = sText = "" For i = 1 To Len(str) sCurChar = Mid(str, i, 1) If True = IsNumeric(sCurChar) Then sNum = sNum & sCurChar Else sText = sText & sCurChar End If Next i If True = is_remove_text Then SplitTextNumbers = sNum Else SplitTextNumbers = sCurChar End If EndФункція

    Код VBA 2:

    Function SplitTextNumbers(str As String , is_remove_text As Boolean ) As String With CreateObject ( "VBScript.RegExp" ) .Global = True If True = is_remove_text Then .Pattern = "[^0-9]" Else .Pattern = "[0-9]" End If SplitTextNumbers = .Replace(str, "" ) End With End Function

    Наша нова користувацька функція вимагає двох аргументів:

    SplitTextNumbers(string, is_remove_text)

    Де is_remove_text булеве значення, яке вказує, які символи вилучати:

    • TRUE або 1 - видалити текст і залишити цифри
    • FALSE або 0 - видалити цифри і залишити текст

    Для нашого прикладу формули мають такий вигляд:

    Видалення нецифрових символів:

    =SplitTextNumbers(A2, TRUE)

    Видалення цифрових символів:

    =SplitTextNumbers(A2, FALSE)

    Порада: Щоб уникнути потенційної проблеми з початковими пробілами, я рекомендую завжди обертати формулу, яка видаляє числа, в функцію TRIM:

    =TRIM(SplitTextNumbers(A2, FALSE))

    Спеціальний інструмент для видалення цифр або тексту

    Для тих, хто не любить надмірно ускладнювати, покажу наш власний спосіб видалення тексту або чисел в Excel.

    Припускаючи, що наш Ultimate Suite додано до вашої стрічки Excel, ось що ви робите:

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

  • На панелі надбудови виберіть діапазон джерел, натисніть кнопку Видалення наборів символів та оберіть один з варіантів Текст символи або Числовий символи у випадаючому списку.
  • Хіт Видалити і насолоджуйтесь результатом :)
  • Порада: Якщо результати містять пропуски, інструмент "Обрізати пропуски" миттєво їх усуне.

    Ось так можна видалити текстові або числові символи з рядка в Excel. Дякую за прочитання і з нетерпінням чекаю зустрічі з вами на нашому блозі наступного тижня!

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

    Видалення тексту або чисел в Excel - приклади (файл .xlsm)

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

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