Excel удалить текст начиная с текста

  • Удалить текст до последнего символа
  • Удалить текст до первого пробела – формула
  • Удалить текст до первой цифры
  • Удаление текста в 1-2 клика с !SEMTools

Довольно часто в Excel нужно убрать из строки символы до определенного знака. Это может быть как один символ (пробел, точка, запятая, двоеточие и т.д.), так и символ из определенного множества (цифра, английская буква).

В зависимости от этих условий, решение может быть простым, а может потребовать использование довольно сложных формул и процедур.

В этой статье я подробно опишу известные мне варианты. Поехали!

Удалить текст до последнего символа

Наиболее просто удалить текст в диапазоне ячеек до последнего вхождения заданного символа или текста. Можно воспользоваться процедурой “Найти и заменить”:

  • выделить диапазон;
  • вызвать процедуру поиска и замены со вкладки “Главная” или сочетанием клавиш Ctrl + H;
  • использовать подстановочный символ * (звёздочку) прямо перед искомым в строке поиска;
  • оставить пустым второе поле и нажать «ОК».

Процедура заменит все символы до знака на пустоту, иначе говоря, удалит их. Звездочка как раз и обозначает “все символы”.

Удалить текст до первого пробела – формула

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

Однако удалить первое слово в ячейке — самая популярная задача, и пробел как раз и является символом, который отгораживает первое слово слева от остального текста.

=ЗАМЕНИТЬ(A2;1;ПОИСК(" ";A2);"")
Удалить текст до первого пробела - формула
Результат применения формулы

Формулы для других символов аналогичны.

Убрать текст в ячейке до первой запятой:

=ЗАМЕНИТЬ(A2;1;ПОИСК(",";A2);"")

До точки:

=ЗАМЕНИТЬ(A2;1;ПОИСК(".";A2);"")

А чтобы удалить текст до вхождения последовательности символов, например, слова, нужно использовать в формуле длину этой последовательности, сократив её на 1.

Здесь из адресов удаляется текст до номера дома. Длина текста в кавычках – 3 символа (д, точка и пробел):

=ЗАМЕНИТЬ(A2;1;ПОИСК("д. ";A2)+2;"")
Удалить текст в ячейке до определенного слова

Удалить текст до первой цифры

Пожалуй, вы уже догадались, но я все же объясню, как работают формулы выше:

  1. excel-функция ПОИСК ищет позицию первого вхождения текстового паттерна (он всегда в кавычках). Соответствующий фрагмент выделен красным;
  2. функция ЗАМЕНИТЬ принимает эту позицию как аргумент;
  3. она же заменяет фрагмент от первого символа до этой позиции на пустоту (две кавычки подряд), таким образом, удаляя его.

Следовательно, чтобы удалить текст до первой цифры, нужно вычислить позицию первой цифры в строке. Поскольку цифр не одна, а 10, простая формула уже не подойдет. Но можно сделать это вот такой формулой массива:

{=МИН(ЕСЛИОШИБКА(ПОИСК(СИМВОЛ(СТРОКА(48:57));A1);""))}

А подставив это выражение в исходную формулу, мы сможем решить исходную задачу — получить текст после первой цифры включительно, удалив текст до неё.

{=ЗАМЕНИТЬ(A2;1;МИН(ЕСЛИОШИБКА(ПОИСК(СИМВОЛ(СТРОКА($48:$57));A2);""))-1;"")}

Что за числа 48 и 57, можно прочитать подробнее тут:

Функция СИМВОЛ в Excel

Обратите внимание на фигурные скобки! Их не нужно вводить, они появятся сами при вводе формулы сочетанием клавиш Ctrl + Shift + Enter.

Формула выдаст ошибку, если цифр в строке нет.

Результат применения формулы для удаления текста до первой цифры
Убираем текст до первой цифры в ячейках формулами массива

Удаление текста в 1-2 клика с !SEMTools

Каждый из перечисленных способов хорош по-своему, но всем им недостает одного важного фактора – скорости исполнения.

В каждом из случаев нужно вводить много символов и производить много действий.

Для экономии времени я включил быстрые процедуры в меню своей надстройки для Excel – !SEMTools.

Теперь удалить текст до первого или последнего вхождения конкретного символа или подстроки, включая и не включая сам текст, можно в считанные мгновения!

При этом можно как менять данные на месте, так и автоматически выводить в соседний столбец – за это отвечает глобальный чекбокс.

Смотрите пример:

Удаление текста до определенного символа в Excel с !SEMTools
Удаляем символы в тексте до первого или последнего вхождения определенного текста с !SEMTools

Найти повторяющиеся значения в Excel и решить сотни других задач поможет надстройка !SEMTools.

Скачайте прямо сейчас и убедитесь сами!


Смотрите также по теме:

  • Удалить последнее слово из ячейки;
  • Удалить первое слово в ячейках Excel;
  • Удалить первые N символов в ячейках;
  • Извлечь первые N символов ячейки.

На чтение 5 мин Просмотров 11к. Опубликовано 16.05.2022

Люди, которые только начинают работать в Excel часто встречаются с таким вопросом.

Допустим, у нас есть такая табличка:

Примерно так выглядит удаление всех символов после «,».

Это можно сделать разными способами. Мы рассмотрим несколько.

Итак, начнём!

Содержание

  1. С помощью функции «Найти и заменить»
  2. С помощью формул
  3. С помощью функции «Заполнить»
  4. С помощью Visual Basic

С помощью функции «Найти и заменить»

Это, наверное, самый быстрый и удобный способ.

Допустим, у нас та же табличка и задача:

Пошаговая инструкция:

  • Копируем и вставляем столбик А в В;

  • Выделите столбик и щелкните «Главная»;

  • Далее — «Найти и выделить» -> «Заменить…»;

  • В первом параметре укажите «,*»;

  • Второй параметр не меняйте;

  • Щелкните «Заменить все».

Готово! Вот результат:

Как это работает?

Символ * означает неопределенное количество символов.

Так как мы используем «,*», то это значит, что программе нужно заменить запятую и все символы после неё на пустое место.

Это будет работать только если в каждой ячейке у вас одна запятая, если же у вас не одна, то первая и все остальные данные будут заменены на пустое место.

С помощью формул

Также, мы можем выполнить нашу задачу и с помощью формул.

Допустим, у нас есть такая табличка:

Формула принимает такой вид:

=ЛЕВСИМВ(A2;НАЙТИ(",";A2)-1)

Функция НАЙТИ возвращает порядковый номер запятой.

Это простой пример, давайте рассмотрим кое-что посложнее.

Теперь у нас такая табличка:

Формула, для этого примера, принимает такой вид:

=ЛЕВСИМВ(A2;НАЙТИ("!";ПОДСТАВИТЬ(A2;",";"!";2))-1)

Итак, также как в прошлый раз — не получится. Так как НАЙТИ будет возвращать порядковый номер первой запятой, а нам надо найти его для второй.

Мы используем небольшую хитрость, а если конкретнее, то заменяем вторую запятую на восклицательный знак, а затем с ним уже проводим операции.

И все бы хорошо, только в этом примере в каждой строке у нас ровно 2 запятые. А что делать если их неопределенное количество? Ведь в больших данных вы не будете выверять сколько запятой в каждой строке.

Вот пример:

Итак, нам нужно найти порядковый номер последней запятой, а после уже проводить с ней операции.

Для этого примера, формула принимает такой вид:

=ЛЕВСИМВ(A2;НАЙТИ("!";ПОДСТАВИТЬ(A2;",";"!";ДЛСТР(A2)-ДЛСТР(ПОДСТАВИТЬ(A2;",";","))))-1)

Итак, функция ДЛСТР сначала находит количество символов в строчке с запятыми, а потом без них.

А после вычитает из первого — второе. Таким образом мы получаем количество запятых в строчке.

А затем мы заменяем последнюю на восклицательный знак.

Вот так вот можно заменять все после определенного символа с помощью формул. Конечно, с небольшими хитростями.

Плюс этого метода в том, что данные будут динамичны. То есть если что-то поменяется в изначальных данных, все поменяется и в данных после обработки.

С помощью функции «Заполнить»

Функция «Заполнить», это довольно давний инструмент. Он может помочь нам и в этом случае.

Как он работает?

Очень просто — вы просто делаете что угодно и после используете функцию. Она пытается понять логику ваших действий и продолжить её.

Давайте рассмотрим пример.

Допустим, у нас есть та же табличка:

Пошаговая инструкция:

  • В первую ячейку столбика В введите то, что должно получиться после обработки;

  • В следующую ячейку, то же самое;

  • А теперь выделите столбик;

  • И щелкните на «Главная» -> «Заполнить» -> «Мгновенное заполнение»;

Готово! Вот результат:

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

Однако, иногда, она может ошибаться. Поэтому всегда проверяйте то, что получилось после обработки.

С помощью Visual Basic

И, как обычно, разберем вариант с помощью Visual Basic.

Мы создадим свою собственную функцию и будем использовать её для обработки данных.

Это крайне удобно, если вы делаете что-либо очень часто. Например, как в нашем случае, удаляете данные после символа.

Код Visual Basic:

Function LastPosition(rCell As Range, rChar As String) 
'This function gives the last position of the specified character 
'This code has been developed by Sumit Bansal (https://trumpexcel.com) 
Dim rLen As Integer 
rLen = Len(rCell)   

For i = rLen To 1 Step -1   
If Mid(rCell, i - 1, 1) = rChar Then 
LastPosition = i - 1 
Exit Function 
End If   

Next i   E

nd Function

Код, чтобы он работал, нужно вставить в Visual Basic -> «Insert» -> «Module».

Давайте рассмотрим пример её использования.

Допустим, у нас есть такая табличка. Формула принимает такой вид:

=ЛЕВСИМВ(A2;LastPosition(A2;",")-1)

В нашей функции, первым аргументом мы указали диапазон для поиска, а вторым символ, последнюю позицию которого нам нужно найти.

С помощью Visual Basic все проще.

Вот и все! Если вам нужно сделать что-то подобное 1-2 раза, то лучше всего использовать функцию «Найти и заменить…», а если вы делаете это постоянно, то используйте Visual Basic.

Надеюсь, эта статья оказалась полезна для вас!

Содержание:

  1. Удаление текста после символа с помощью функции поиска и замены
  2. Удалить текст с помощью формул
  3. Удаление текста с помощью заливки Flash
  4. Удалить текст с помощью VBA (пользовательская функция)

При работе с текстовыми данными в Excel вам может потребоваться удалить текст до или после определенного символа или текстовой строки.

Например, если у вас есть данные об именах и обозначениях людей, вы можете удалить обозначение после запятой и оставить только имя (или наоборот, если вы сохраните обозначение и удалите имя).

Иногда это можно сделать с помощью простой формулы или быстрого поиска и замены, а иногда требуются более сложные формулы или обходные пути.

В этом уроке я покажу вам, как удалить текст до или после определенного символа в Excel (на разных примерах).

Итак, давайте начнем с нескольких простых примеров.

Удаление текста после символа с помощью функции поиска и замены

Если вы хотите быстро удалить весь текст после определенной текстовой строки (или перед текстовой строкой), вы можете сделать это с помощью «Найти и заменить» и подстановочных знаков.

Предположим, у вас есть набор данных, показанный ниже, и вы хотите удалить обозначение после символа запятой и оставить текст перед запятой.

Ниже приведены шаги для этого:

  1. Скопируйте и вставьте данные из столбца A в столбец B (это также необходимо для сохранения исходных данных)
  2. Выделив ячейки в столбце B, перейдите на вкладку «Главная».
  3. В группе «Редактирование» нажмите «Найти и выбрать».
  4. В параметрах, которые появляются в раскрывающемся списке, щелкните параметр «Заменить». Откроется диалоговое окно «Найти и заменить».
  5. В поле «Найти» введите ,* (т.е. запятая, за которой следует звездочка)
  6. Оставьте поле «Заменить на» пустым.
  7. Нажмите кнопку «Заменить все».

Вышеупомянутые шаги позволят найти запятую в наборе данных и удалить весь текст после запятой (включая запятую).

Поскольку при этом заменяется текст из выбранных ячеек, рекомендуется скопировать текст в другой столбец, а затем выполнить эту операцию поиска и замены или создать резервную копию ваших данных, чтобы исходные данные остались нетронутыми.

Как это работает?

* (знак звездочки) — это подстановочный знак, который может представлять любое количество символов.

Когда я использую его после запятой (в поле «Найти»), а затем нажимаю кнопку «Заменить все», он находит первую запятую в ячейке и считает ее совпадением.

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

Поэтому, когда вы нажимаете кнопку «Заменить все», она заменяет запятую и весь последующий текст.

Примечание: Этот метод работает хорошо, тогда у вас есть только одна запятая в каждой ячейке (как в нашем примере). Если у вас несколько запятых, этот метод всегда найдет первую запятую, а затем удалит все после нее. Таким образом, вы не можете использовать этот метод, если хотите заменить весь текст после второй запятой и оставить первый как есть.

Если вы хотите удалить все символы перед запятой, измените запись в поле поиска, поставив знак звездочки перед запятой (* вместо, *)

Удалить текст с помощью формул

Если вам нужно больше контроля над поиском и заменой текста до или после определенного символа, лучше использовать встроенные текстовые формулы в Excel.

Предположим, у вас есть приведенный ниже набор данных, из которого вы хотите удалить весь текст после запятой.

Ниже приведена формула для этого:
= ЛЕВЫЙ (A2; НАЙТИ (";"; A2) -1)

В приведенной выше формуле используется функция НАЙТИ, чтобы найти положение запятой в ячейке.

Этот номер позиции затем используется функцией LEFT для извлечения всех символов перед запятой. Поскольку мне не нужна запятая как часть результата, я вычел 1 из полученного значения формулы поиска.

Это был простой сценарий.

Возьмем немного сложный.

Предположим, у меня есть этот набор данных ниже, из которого я хочу удалить весь текст после второй запятой.

Вот формула, которая сделает это:
= ЛЕВЫЙ (A2; НАЙТИ ("!", ПОДСТАВИТЬ (A2, ",", "!", 2)) - 1)

Поскольку в этом наборе данных есть несколько запятых, я не могу использовать функцию НАЙТИ, чтобы получить позицию первой запятой и извлечь все, что находится слева от нее.

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

Для этого я использовал функцию ЗАМЕНА, чтобы заменить вторую запятую восклицательным знаком. Теперь это дает мне уникальный персонаж в камере. Теперь я могу использовать положение восклицательного знака, чтобы извлечь все, что находится слева от второй запятой.

Эта позиция восклицательного знака используется в функции LEFT для извлечения всего, что находится до второй запятой.

Все идет нормально!

Но что, если в наборе данных есть непоследовательное количество запятых.

Например, в приведенном ниже наборе данных в некоторых ячейках есть две запятые, а в некоторых — три запятые, и мне нужно извлечь весь текст до последней запятой.

В этом случае мне нужно как-то определить позицию последнего вхождения запятой, а затем извлечь все, что находится слева от нее.

Ниже приведена формула, которая сделает это
= ЛЕВЫЙ (A2; НАЙТИ ("!", ПОДСТАВИТЬ (A2, ",", "!", LEN (A2) -LEN (ПОДСТАВИТЬ (A2, ",", "")))) - 1)

В приведенной выше формуле функция LEN используется для определения общей длины текста в ячейке, а также длины текста без запятой.

Когда я вычитаю эти два значения, получается общее количество запятых в ячейке.

Таким образом, это дало бы мне 3 для ячейки A2 и 2 для ячейки A4.

Это значение затем используется в формуле ЗАМЕНА для замены последней запятой восклицательным знаком. И затем вы можете использовать левую функцию для извлечения всего, что находится слева от восклицательного знака (где раньше была последняя запятая)

Как вы можете видеть в примерах, использование комбинации текстовых формул позволяет обрабатывать множество различных ситуаций.

Кроме того, поскольку результат связан с исходными данными, при изменении исходных данных результат будет автоматически обновляться.

Удаление текста с помощью заливки Flash

Flash Fill — это инструмент, который был представлен в Excel 2013 и доступен во всех последующих версиях.

Он работает, выявляя закономерности, когда вы вручную вводите данные, а затем экстраполируете их, чтобы получить данные для всего столбца.

Поэтому, если вы хотите удалить текст до или после определенного символа, вам просто нужно показать flash fairy, как будет выглядеть результат (введя его вручную пару раз), и flash fill автоматически распознает узор и даст вам результаты, достижения.

Позвольте показать вам это на примере.

Ниже у меня есть набор данных, из которого я хочу удалить весь текст после запятой.

Вот шаги, чтобы сделать это с помощью Flash Fill:

  1. В ячейке B2, которая является соседним столбцом наших данных, вручную введите «Jeffery Haggins» (что является ожидаемым результатом).
  2. В ячейке B3 введите «Тим Скотт» (ожидаемый результат для второй ячейки).
  3. Выберите диапазон B2: B10
  4. Перейдите на вкладку «Главная»
  5. В группе «Редактирование» щелкните раскрывающийся список «Заливка».
  6. Нажмите на Flash Fill.

Вышеупомянутые шаги дадут вам результат, как показано ниже:

Вы также можете использовать сочетание клавиш Flash Fill. Ctrl + E после выбора ячеек в столбце результатов (столбец B в нашем примере)

Flash Fill — замечательный инструмент, и в большинстве случаев он способен распознать узор и дать вам правильный результат. но в некоторых случаях он может не распознать шаблон правильно и может дать неверные результаты.

Так что не забудьте еще раз проверить результаты Flash Fill.

И точно так же, как мы удалили весь текст после определенного символа с помощью флэш-заливки, вы можете использовать те же шаги, чтобы удалить текст перед определенным символом. просто покажите вручную в соседнем столбце flash fill, как результат должен выглядеть как мой Интернет, а все остальное сделает он.

Удалить текст с помощью VBA (пользовательская функция)

Вся концепция удаления текста до или после определенного символа зависит от нахождения позиции этого символа.

Как показано выше, найти последнее вхождение этого символа хорошим означает использовать смесь формул.

Если это то, что вам нужно делать довольно часто, вы можете упростить этот процесс, создав настраиваемую функцию с помощью VBA (называемую функциями, определяемыми пользователем).

После создания вы можете повторно использовать эту функцию снова и снова. Это также намного проще и проще в использовании (поскольку большая часть тяжелой работы выполняется кодом VBA в серверной части).

Ниже кода VBA, который можно использовать для создания настраиваемой функции в Excel:
Функция LastPosition (rCell As Range, rChar As String) 'Эта функция выдает последнюю позицию указанного символа' Этот код был разработан Sumit Bansal (https://trumpexcel.com) Dim rLen As Integer rLen = Len (rCell) For i = rLen To 1 Step -1 If Mid (rCell, i - 1, 1) = rChar Then LastPosition = i - 1 Выход из функции End If Next i End Function
Вам необходимо поместить код VBA в обычный модуль редактора VB или в личную книгу макросов. Когда он у вас есть, вы можете использовать его как любую другую обычную функцию рабочего листа в книге.

Эта функция принимает 2 аргумента:

  1. Ссылка на ячейку, для которой вы хотите найти последнее вхождение определенного символа или текстовой строки.
  2. Символьная или текстовая строка, позицию которой вам нужно найти

Предположим, теперь у вас есть приведенный ниже набор данных, и вы хотите удалить весь текст после последней запятой и иметь только текст до последней запятой.

Ниже приведена формула, которая сделает это:
= ЛЕВЫЙ (A2; LastPosition (A2; ",") - 1)

В приведенной выше формуле я указал, чтобы найти позицию последней запятой. Если вы хотите найти положение какого-либо другого символа или текстовой строки, вы должны использовать это как второй аргумент в функции.

Как видите, это намного короче и проще в использовании по сравнению с формулой с длинным текстом, которую мы использовали в предыдущем разделе.

Если вы поместите код VBA в модуль в книге, вы сможете использовать эту настраиваемую функцию только в этой конкретной книге. Если вы хотите использовать это во всех книгах в вашей системе, вам необходимо скопировать и вставить этот код в личную книгу макросов.

Вот некоторые из писем, которые вы можете использовать для быстрого удаления текста до или после определенного символа в Excel.

Если это простая разовая задача, вы можете сделать это с помощью функции поиска и замены. что, если это немного сложнее, тогда вам нужно использовать комбинацию встроенных формул Excel или даже создать свою собственную формулу с помощью VBA.

Надеюсь, вы нашли этот урок полезным.

Бывают ситуации, когда необходимо отрезать/ удалить строго определенное количество символов в тексте справа или слева. Например, когда вы имеете список адресов, и вначале каждого адреса стоит шестизначный индекс.  Нужно убрать почтовые индексы из списка, но через замену их не уберешь, так как они имеют совершенно разные значения и не находятся опцией замены.

Удаление текста справа или слеваФункции, которая отрезает лишнее количество символов в ячейке, найти не удается, но существует система из двух функций, которые можно применить. Это система из функции ЛЕВСИМВ (или ПРАВСИМВ) и функции ДЛСТР (длина строки).

Рассмотрим их применение.

    Вначале находим количество символов в тексте при помощи функции ДЛСТР. Для этого запускаем менеджер функций, выбираем ДЛСТР, указываем ячейку с текстом. Функция ДЛСТР посчитает количество символов.

    Зная длину лишнего текста — 6 знаков в индексе, вычитаем их из общего числа символов посчитанных функцией ДЛСТР и получаем то количество символов, которое должно остаться в тексте, когда удалим индекс.

    Полученное значение – количество оставляемых в тексте знаков, вписываем в функцию ЛЕВСИМВ или ПРАВСИМВ. Если нужно удалить знаки справа, то используем ЛЕВСИМВ, если слева, то ПРАВСИМВ. Нажимаем «Enter». Функция ЛЕВСИМВ или ПРАВСИМВ присваивает ячейке нужное нам количество символов из текста в новую ячейку, исключая ненужный нам индекс.

    Для уменьшения количества ячеек с расчетами эти функции можно записать в систему следующего вида:

    ПРАВСИМВ(…*¹;(ДЛСТР(…*¹)-6)).

    Где …*¹- адрес ячейки, из которой берем текст.

    Копировать, убрать/удалить первое слово или несколько первых слов в ячейке Excel

    Бывает, что возникает потребность в удалении первого слова или нескольких слов вначале фразы в ячейке таблицы «Эксель». Выполнить это руками очень сложно, особенно, когда список представляет собой перечень из нескольких сотен или тысяч позиций, при помощи одной функции это сделать тоже невозможно.

    Чтобы выполнить задачу по удалению первых 2-3 (или первого одного) слов необходимо воспользоваться системой (сочетанием) из нескольких функций, о которых расскажем ниже:

    Первая функция «ПОДСТАВИТЬ» — она находит нужный текст и заменяет его на другой. У этой функции есть одно большое преимущество – это возможность заменить текст в определенной позиции. То есть заменить текст, встречающийся первый, второй, третий и т.д. раз по счету. В нашем случае эта функция заменит пробел, встречающийся второй раз на какой-нибудь символ, желательно не встречающийся в тексте.

    Вторая функция «НАЙТИ» — находит позицию текста и присваивает позиции числовое значение. Например, если замененный нами на символ пробел будет стоять на 12 месте от начала строки, то функция найти примет значение 12.

    Третья функция это «ЛЕВСИМВ» или «ПРАВСИМВ» (в зависимости от того будем ли мы удалять слова справа или слева). «ЛЕВСИМВ» или «ПРАВСИМВ» — присваивают ячейке строго определенное количество символов из текста.

    Четвертая функция «ДЛСТР» — находит длину строки в ячейке и определяет количество символов в выбранной ячейке.

    Теперь давайте составим систему из этих функций, которая будет отрезать (удалять) первые три слова из ячеек.

    Система выглядит следующим образом:

    =ПРАВСИМВ(B3;((ДЛСТР(B3))-(НАЙТИ(«*»;ПОДСТАВИТЬ(B3;» «;»*»;3)))))

    В этой системе функция «ПОДСТАВИТЬ» заменяет третий по счету пробел на знак «*», функция «НАЙТИ» находит положение этого знака относительно начала строки, функция «ДЛСТР» считает общее количество знаков, а «ПРАВСИМВ» оставляет нужное количество знаков, справа, удаляя первые знаки ровно по длине «ненужных» слов.

    Чтобы скопировать первые несколько слов можно воспользоваться похожей системой, только не удалять лишние знаки а наоборот оставить первые несколько знаков относящиеся к «нужным» словам.

    Функции выглядят следующим образом:

    =ЛЕВСИМВ(B3; НАЙТИ(«*»;ПОДСТАВИТЬ(B3;» «;»*»;3)).

    Удалить из текста список слов

    Периодически возникает необходимость удалить слова из текста в ячейках. У вас есть список слов, и нужно удалить их все из списка фраз, если они в нем присутствуют. Зачастую, но не всегда такое приходит в голову после того, как удалось обнаружить слова и/или извлечь их из текста и понять, что они — лишние.

    Например, вы – контент-менеджер интернет-магазина. Ваш каталог представляет собой Excel-файл. В нем товары представляют собой массив ячеек, содержащий названия продукта и фирмы-производителя.

    У вас есть список фирм-производителей, а ваша задача – удалить их и оставить только названия продуктов.

    Или у вас каталог автомобилей в виде одной строки – марка и модель. Вы хотите разбить его на марки и модели, и все что у вас есть – список из

    В обоих случаях можно было бы воспользоваться последовательной заменой в выделенном списке ячеек исходных значений на пустоту. Но это, очевидно, займет довольно много времени, особенно, если каталог большой и каждая замена не происходит моментально.

    Для таких случаев может пригодиться макрос удаления списка слов из ячеек. Макрос находится в группе «УДАЛИТЬ» в меню «Удалить слова«

    Местоположение макроса «удалить из ячеек любые слова из указанного списка»

    Как и все макросы, работающие со словами, он определяет целые слова и удаляет строго только их, пропуская простые вхождения. Это позволяет избежать непреднамеренных удалений частей слов и «повреждения» данных.

    Как удалить из текста список слов с помощью !SEMTools:

    Все очень просто. Выделяем список фраз, вызываем макрос из меню, он предлагает выделить список слов, выделяем его и жмем «ОК». Вуаля!
    Важно:
    Слова удаляются в исходном диапазоне и навсегда. Рекомендуется копировать столбец, оставляя исходные данные, как показано на видеоинструкции ниже, если не уверены в результате:

    Удалить список слов из ячеек в Excel — видеоинструкция

    Удалить слова во всех словоформах

    Если стоит задача удалить слова во всех их словоформах, а перебирать их вручную не очень хочется, есть пара вариантов:
    1. Можно воспользоваться макросом удаления слов по условию «начинается с». Такой вариант менее предпочтителен, если вы не уверены, что в массиве нет других слов, начинающихся с указанной последовательности. И точно непригоден для удаления коротких слов.
    2. Можно воспользоваться модулем морфологии и быстро просклонять слова в Excel автоматически, не прикладывая лишних усилий. Но и тут есть примечение. Модуль Морфология в !SEMTools на текущий момент работает только с существительными и прилагательными.

    Как оставить в ячейке только цифры или только текст?

    Вот бывает так: есть у Вас в ячейке некий текст. Допустим «Было доставлено кусков мыла 763шт.». Вам нужно из этого только 763 — чтобы можно было провести с этим некие математические действия. Если это только одна ячейка — проблем тут нет, а если таких ячеек пару тысяч? И к тому же все разные?

    • Было доставлено кусков мыла 763шт.
    • Всего пришло 34
    • Тюбики — 54 доставлено
    • и т.д.

    Никакой зацепки для извлечения данных. Пару тысяч таких строк удалять вручную весьма утомительное занятие, надо сказать. Да еще и не быстрое.
    Есть несколько вариантов решения подобной задачи.

    СПОСОБ 1: не используем макросы
    можно применить формулу массива, вроде такой:
    =ПСТР( A1 ;МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР( A1 ;СТРОКА( $1:$99 );1));СТРОКА( $1:$99 )));ПРОСМОТР(2;1/ЕЧИСЛО(-ПСТР( A1 ;СТРОКА( $1:$99 );1));СТРОКА( $1:$99 ))-МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР( A1 ;СТРОКА( $1:$99 );1));СТРОКА( $1:$99 )))+1)
    Три важных момента:

    1. Формула вводится в ячейку сочетанием клавиш Ctrl+Shift+Enter, т.к. является формулой массива. Подробнее про эти формулы читайте в статье: Что такое формула массива
    2. в таком виде формула работает с текстом, количество символов в котором не превышает 99. Чтобы расширить необходимо в формуле во всех местах заменить СТРОКА( $1:$99 ) на СТРОКА( $1:$200 ) . Т.е. вместо 99 указать количество символов с запасом. Только не увлекайтесь, иначе может получиться, что формула будет работать слишком долго
    3. формула не обработает корректно текст » Было доставлено кусков мыла 763шт., а заказывали 780 » и ему подобный, где числа раскиданы по тексту.

    Теперь коротко разберем формулу на примере фразы: Было доставлено кусков мыла 763шт.

    • в A1 сам текст, из которого необходимо извлечь числа: Было доставлено кусков мыла 763шт., а заказывали 780
    • блок: МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР( A1 ;СТРОКА( $1:$99 );1));СТРОКА( $1:$99 )))
      вычисляет позицию первой цифры в ячейке — 29
    • блок: ПРОСМОТР(2;1/ЕЧИСЛО(-ПСТР( A1 ;СТРОКА( $1:$99 );1));СТРОКА( $1:$99 ))
      вычисляет позицию последней цифры в ячейке — 31
    • в результате получается: =ПСТР( A1 ;29;3129+1)
      функция ПСТР извлекает из текста, указанного первым аргументом( A1 ) текст, начиная с указанной позиции(29) с количеством символов, указанным третьим аргументом(3129+1)
    • И в итоге:
      =ПСТР( A1 ;29;3129+1)
      => =ПСТР( A1 ;29;2+1)
      => =ПСТР( A1 ;29;3)
      => 763

    Может быть задача проще — необходимо извлечь односоставной текст, убрав цифры вначале и в конце строки, учитывая, что сам текст всегда следует после разделителя(например, тире):
    12.08-АГСВ2
    12.08-АГСВ1
    01.03-ОВ2
    12.03-КЖ6.1
    Из этих данных надо получить только текст после тире(-) и отсечь цифры на конце:
    АГСВ
    АГСВ
    ОВ
    КЖ
    Формула будет работать почти по тому же принципу, что и формула выше, но она проще:
    =ПСТР( A1 ;ПОИСК(«-«; A1 )+1;ПОИСКПОЗ(ИСТИНА;ЕЧИСЛО(—ПСТР(ПСТР( A1 ;ПОИСК(«-«; A1 )+1;999);СТРОКА( $1:$99 );1));0)-1)
    В данном случае мы при помощи ПОИСК(«-«; A1 ) ищем сначала позицию тире, далее при помощи ПОИСКПОЗ(ИСТИНА;ЕЧИСЛО(—ПСТР(ПСТР( A1 ;ПОИСК(«-«; A1 )+1;999);СТРОКА( $1:$99 );1));0) находим именно в отсеченном тексте позицию первой цифры. Передаем эти значения в ПСТР , которая отбирает из этого текста все от первого тире(+1) до первого числа, идущего после текста.

    СПОСОБ 2: используем макросы
    Самый главный недостаток метода при помощи формулы, приведенной выше — из текста » Было доставлено кусков мыла 763шт., а заказывали 780 » формула вернет не только числа, а и текст между первой и последней цифрой: 763шт., а заказывали 780 .
    Решить же проблему извлечения цифр даже из такого текста при помощи VBA куда проще и гибче. Плюс можно не только цифры извлекать, но и наоборот — цифры удалить, а извлечь только текст. Ниже приведен код пользовательской функции, которая поможет извлечь из строки только числа либо только текст. Иными словами, результатом функции будет либо только текст, либо только числа.

    Function Extract_Number_from_Text(sWord As String, Optional Metod As Integer) ‘sWord = ссылка на ячейку или непосредственно текст ‘Metod = 0 – числа ‘Metod = 1 – текст Dim sSymbol As String, sInsertWord As String Dim i As Integer If sWord = «» Then Extract_Number_from_Text = «Нет данных!»: Exit Function sInsertWord = «» sSymbol = «» For i = 1 To Len(sWord) sSymbol = Mid(sWord, i, 1) If Metod = 1 Then If Not LCase(sSymbol) Like «*[0-9]*» Then If (sSymbol = «,» Or sSymbol = «.» Or sSymbol = » «) And i > 1 Then If Mid(sWord, i — 1, 1) Like «*[0-9]*» And Mid(sWord, i + 1, 1) Like «*[0-9]*» Then sSymbol = «» End If End If sInsertWord = sInsertWord & sSymbol End If Else If LCase(sSymbol) Like «*[0-9.,;:-]*» Then If LCase(sSymbol) Like «*[.,]*» And i > 1 Then If Not Mid(sWord, i — 1, 1) Like «*[0-9]*» Or Not Mid(sWord, i + 1, 1) Like «*[0-9]*» Then sSymbol = «» End If End If sInsertWord = sInsertWord & sSymbol End If End If Next i Extract_Number_from_Text = sInsertWord End Function

    Данный код необходимо поместить в стандартный модуль книги. После этого в мастере функций в категории Определенные пользователем (User Defined) будет доступна функция Extract_Number_from_Text , которую можно будет применять как обычную функцию на листе.
    Для извлечения только чисел
    =Extract_Number_from_Text( A1 ; 0)
    или
    =Extract_Number_from_Text( A1 )
    Для извлечения только текста
    =Extract_Number_from_Text( A1 ; 1)

    Подробнее про создание пользовательских функции и их применении можно почитать в статье Что такое функция пользователя(UDF)?

    Помимо функции пользователя решил выложить и вариант с использованием диалогового окна:

    Выбрать ячейку или диапазон с текстом(Лист1! $A$2:$A$10 ) — здесь указывается диапазон с исходными значениями, из которого необходимо оставить только числа или только текст.

    Выберите ячейку для вывода данных(Лист1! $A$2 ) — указывается одна ячейка, с которой начать вывод преобразованных значений. В качестве этой ячейки можно выбрать первую ячейку диапазона с текстом(исходного) если необходимо произвести изменения сразу в этих же ячейках(как на рисунке). Осторожнее с таким указанием, т.к. результат работы кода может быть не совсем таким, какой вы ожидали, а вернуть прежние данные уже не получится — если только не закрыть файл без сохранения изменений.

    Оставить только цифры, Оставить только текст— думаю не надо пояснять. Здесь выбираем, что оставить в качестве результата.

    Небольшое дополнение к использованию кода
    В коде есть строка:

    If LCase(sSymbol) Like «*[0-9.,;:-]*» Then

    Данная строка отвечает за текстовые символы, которые могут встречаться внутри чисел и которые надо оставить(не удалять наравне с другими не числовыми символами). Следовательно, если какие-то из данных символов не нужны в конечном тексте — их надо просто удалить. Например, чтобы оставались исключительно числа(без запятых и пр.):

    If LCase(sSymbol) Like «*[0-9]*» Then

    если надо исключить из удаления помимо цифр точку(т.е. будут извлечены цифры и точка):

    If LCase(sSymbol) Like «*[0-9.]*» Then

    и т.д.
    Скачать пример:

    Число из текста и наоборот.xls (99,0 KiB, 12 857 скачиваний)

    Статья помогла? Поделись ссылкой с друзьями!

    Поиск по меткам

    Здравствуйте скрипт при обработке ячейки:
    Пр-ка ТНВД 5301 (пер.) 50-1006315-Б2 выдает: 530150-1006315-2
    вопрос есть возможность что бы он брал только последних 15-20 сим.
    с заглавными А-Я, или хотя бы цифирки.
    Буду признателен за предложения.
    Возможно есть проще варианты(12000 стр.записеи) обрезани до последних 10-20сим.

    Александр, последние 15-20 символов можно взять при помощи функции ПРАВСИМВ(RIGHT). Так же можно совместить:
    =Extract_Number_from_Text(ПРАВСИМВ(A1))
    Более сложные вариации извлечения делаются под конкретные данные с учетом различных нюансов.

    Добрый день!
    Спасибо за замечательный код! Подскажите пожалуйста, как оставить среди неудаляемых символов пробел?
    Например, в ячейке было «Т-образный поворот SPB-RF60 TE-200 SS316L».
    Ваш код оставляет (после некоторой модификации) «60200316».
    А хотелось бы «60 200 316».
    Я не понимаю как вписать пробел в строку
    Like «*[0-9.,;:-]*» Then

    А всё разобрался, пробел нужно указывать в середине ряда, а не в конце.

    Здравствуйте.
    Использовал функцию, вызванную на VBA, все нормально, при вызове мастера функций он нормально отрабатывает
    Но при выполнение в эксель, выскакивает сообщение, что здесь используется циклическая ссылка и потом появляется значение 0. В чем дело?

    Добрый день!
    А что надо добавить в код/формулу чтобы из строки
    «ТП ВЕТЧИННАЯ ВАРЕНАЯ 400Г (162854) /Ш/»
    — вытащить только цифры до буквы Г?
    — или без содержимого скобок
    Заранее большое спасибо!

    Нашла пока только такой вариант решения:
    =ЛЕВСИМВ(B5;ПОИСК(«г «;B5)-1)
    Затем в другой колонке
    =ЕСЛИОШИБКА(ПСТР(C5;МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(C5;СТРОКА($1:$99);1));СТРОКА($1:$99)));ПРОСМОТР(2;1/ЕЧИСЛО(-ПСТР(C5;СТРОКА($1:$99);1));СТРОКА($1:$99))-МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(C5;СТРОКА($1:$99);1));СТРОКА($1:$99)))+1);1000)
    И в третьей колонке = из предыдущей и преобразовать в числовой формат макросом
    Результат достигнут, но если расскажите как можно было сделать изящнее — обязательно запомню))

    Public Function RegExpExtract(Text As String, Pattern As String, Optional Item As Integer = 1) As String On Error GoTo ErrHandl Set regex = CreateObject(«VBScript.RegExp») regex.Pattern = Pattern regex.Global = True If regex.Test(Text) Then Set matches = regex.Execute(Text) RegExpExtract = matches.Item(Item — 1) Exit Function End If ErrHandl: RegExpExtract = CVErr(xlErrValue) End Function

    И играйтесь регулярками, на лету выбирая нужные части текста. Инфы с примерами, благо, достаточно.

    Денис, спасибо. Но есть все равно пара замечаний, раз уж предлагаете воспользоваться функцией. Неплохо было бы добавить и пример применения. Иначе как тому, кто зайдет почитать использовать Ваше решение?
    Я умею использовать регулярки и по коду вижу, что помимо текста надо указать не только шаблон, но еще и номер элемента, который получить. Что является немаловажным замечанием.
    Для извлечения первого числа(без разделения групп разрядов) — =(RegExpExtract( A1 ;»d»;1)
    Для извлечения первого текста(что не очень удобно, если чисел в тексте много) — =(RegExpExtract( A1 ;»D»;1)
    Оба варианта слегка халтурны, но для понимания общего смысла использования подойдут.
    В общем и целом я бы в функцию еще параметр IgnoreCase добавил(при извлечении текста по шаблону может потребоваться). Да и Multiline тоже иногда может играть роль(зависит от шаблона и текста), поэтому его тоже лучше ставить в True сразу в случае с такими функциями.

    Поделитесь своим мнением

    Комментарии, не имеющие отношения к комментируемой статье, могут быть удалены без уведомления и объяснения причин. Если есть вопрос по личной проблеме — добро пожаловать на Форум

    Извлечение слов из текста в Excel

    Возможности Excel не ограничиваются построением таблиц и работой с цифрами. Благодаря множеству разнообразных встроенных инструментов, круг задач, которые можно решить посредством Excel, необычайно широк. Например, благодаря встроенным текстовым функциям программа может ловко управляться с текстом. Продемонстрируем это на примере задачи извлечения слов из текста.

    Важное замечание!

    Задача 1. Подсчет количества слов в тексте

    Для начала нужно научиться элементарному действию — подсчету количества слов в исходном тексте. Напрямую этого сделать нельзя, но используя текстовые функции и немного логики, задачу можно решить.

    Итак, слова в тексте отделены друг от друга пробелами. Пробелов всегда на 1 меньше, чем слов (действительно, между двумя словами — один пробел, между тремя — два и т.д.). Значит, достаточно подсчитать пробелы и прибавить к ним единицу, чтобы узнать число слов в ячейке.

    В Excel есть замечательные функции ДЛСТР() и ПОДСТАВИТЬ() . Первая подсчитывает количество символов в указанной ячейке, а вторая умеет заменять указанный символ на любой другой или на пусто (обозначается как двойные кавычки без пробела между ними «» ).

    Функция ПОДСТАВИТЬ() имеет 4 аргумента:

    1) Ячейка с текстом

    2) То, что нужно заменить (указывается в кавычках)

    3) То, на что нужно заменить (указывается в кавычка)

    4) Необязательный аргумент — номер вхождения заменяемого текста. То есть, если в тексте 4 пробела, мы можем заменить только тот, номер которого укажем. Если аргумент опущен — заменяются все символы.

    Первой функцией мы можем узнать длину текста в ячейке. Второй функцией мы можем заменить все пробелы в тексте на «» (пусто), то есть удалить. Если после удаления мы подсчитаем длину текста еще раз, то она сократится ровно на число удаленных пробелов. Таким образом, чтобы подсчитать пробелы, нужна формула:

    Прибавим к ней единицу — и получим число слов в ячейке.

    Имейте в виду, что такой способ подсчета принимает символы, отделенные от слов пробелом, за отдельные слова. Например, тире, обрамленное пробелами, также будет считаться отдельным словом. Избежать этого можно, если перед подсчетом пробелов убрать функцией ПОДСТАВИТЬ() лишние знаки из ячейки.

    Задача 2. Извлечение первого слова из текста

    Раз слова отделены пробелами, то первое слово от второго отделено первым в тексте пробелом. Значит для извлечения первого слова, нам нужно найти первый пробел и извлечь из текста всё, что идет до него.

    Найти символ в тексте поможет функция НАЙТИ() . У нее есть 3 аргумента:

    1) Искомый текст;

    2) Текст, в котором ищем;

    3) С какого символа начать поиск (необязательный, если опущен — функция ищет с самого начала).

    Результатом работы функции является позиция первого символа найденного текста в строке. Например, формула =НАЙТИ(«плюс»;»Один плюс один») вернет в результате число 6 (именно с этой позиции начинается искомое слово «плюс»). Если в строке несколько раз содержится искомое слово, то вернется результат для первого вхождения.

    Функция НАЙТИ работает с учетом регистра и без подстановочных знаков. Если нужно их использовать, или не учитывать регистр — есть аналогичная функция ПОИСК() .

    Теперь мы можем найти позицию первого пробела

    Извлечь символы до пробела поможет функция ЛЕВСИМВ . Ей нужно указать текст, а также число символов, которое нужно извлечь начиная с первого. Если найденный пробел, например, 6-ой символ, то нам нужно извлечь 6-1=5.

    Формула для извлечения первого слова:

    Если в строке одно слово (то есть нет пробела между первым и вторым словом), данная формула вернет ошибку. Чтобы этого избежать, нужно добавить к ней функцию ЕСЛИОШИБКА() .

    Теперь формула корректно сработает для любого числа слов в ячейке.

    Задача 3. Извлечение последнего слова из текста

    Извлечь последнее слово несколько труднее, так как функции поиска текста в ячейке работают только слева направо. Логика формулы будет такая:

    • подсчитаем, сколько в ячейке пробелов, воспользовавшись приемом из Задачи 1.

    =ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;» «;»»))

    • с помощью функции ПОДСТАВИТЬ заменим последний пробел в тексте на символ, которого там точно нет (например, «*» или «$»). Чтобы заменить именно последний пробел, добавим в качестве необязательного аргумента формулу из предыдущего пункта (то есть число пробелов, так как оно равно номеру последнего пробела)

    =ПОДСТАВИТЬ(A1;» «;»*»;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;» «;»»)))

    • теперь, когда последний пробел заменен на «*», мы можем узнать его позицию с помощью функции НАЙТИ() . В качестве текста, в котором ищем, укажем предыдущую формулу

    =НАЙТИ(«*»;ПОДСТАВИТЬ(A1;» «;»*»;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;» «;»»))))

    • если из общей длины текста мы вычтем найденную позицию звездочки, то получим число символов после звездочки (то есть длину последнего слова в ячейке)

    =ДЛСТР(A1)-НАЙТИ(«*»;ПОДСТАВИТЬ(A1;» «;»*»;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;» «;»»))))

    • теперь, зная длину последнего слова, мы можем вытащить его из ячейки с помощью функции ПРАВСИМВ() . Она работает точно так же, как ЛЕВСИМВ() , но извлекает символы не с начала, а с конца строки. В качестве количества извлекаемых символов, укажем предыдущую формулу.

    Как и в предыдущей задаче, можно обернуть в ЕСЛИОШИБКА , чтобы верно работало с ячейками, в которых только 1 слово.

    =ЕСЛИОШИБКА(ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(«*»;ПОДСТАВИТЬ(A1;» «;»*»;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;» «;»»)))));A1)

    Если Вас не пугает VBA и макросы, то есть гораздо более изящное решение. Добавьте в модуль книги (можно в личную книгу макросов) следующий код:

    Function РЕВЕРС(str As String)

    Это макрофункция. Теперь, используя ее, можно отразить текст зеркально, извлечь первое слово, как в Задаче 2 и отразить его обратно. Формула:

    Берите на вооружение, если любите макросы.

    Задача 4. Извлечение n-ного слова из текста

    Самый интересный пример. Для решения подобной задачи нужно применить фантазию. Разберем решение поэтапно.

    Помимо уже использовавшихся в статье функций, нам понадобятся еще 2:

    1) ПОВТОР() . Умеет повторять указанный текст указанное число раз.

    2) ПСТР() . Имеет 3 аргумента:

    • исходный текст;
    • позиция, с которой нужно начать извлечение;
    • число символов, которые нужно извлечь.

    Теперь мы вооружены всем нужным инструментарием. Приступаем:

    • Для начала воспользуемся функцией ПОВТОР() , чтобы вместо 1 пробела в тексте вставить число пробелов, равное длине исходного текста. Количество повторений узнаем через уже известную функцию ДЛСТР() . Итак, формула:

    =ПОДСТАВИТЬ(A1;» «;ПОВТОР(» «;ДЛСТР(A1)))

    • Теперь каждое слово отделено друг от друга числом символов, равным общей длине строки. Чтобы извлечь слово под номером n, нам нужно узнать позицию какого-нибудь пробела между словом n и n-1 в обработанном удлиненном тексте. Это может сделать формула ниже (+1 в ней нужно для правильного поиска первого слова):

    =ДЛСТР(A1)*(n-1)+1

    Чтобы лучше понять, какую позицию относительно начала строки Вы найдете благодаря этой формуле, взгляните на рисунок ниже (делайте поправку на масштаб).

    • Теперь мы может извлечь из найденной позиции число символов ДЛСТР(A1) (на рисунке — m ) и извлеченный текст всегда будет захватывать нужное нам слово целиком (с некоторым количеством предшествующих и последующих пробелов)

    =ПСТР(ПОДСТАВИТЬ(A1;» «;ПОВТОР(» «;ДЛСТР(A1)));ДЛСТР(A1)*(n-1)+1;ДЛСТР(A1))

    • Осталось избавиться от лишних пробелов функцией СЖПРОБЕЛЫ()

    =СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(A1;» «;ПОВТОР(» «;ДЛСТР(A1)));ДЛСТР(A1)*(n-1)+1;ДЛСТР(A1)))

    Не забудьте в формуле заменить n на номер извлекаемого слова или ссылку на ячейку с этим номером.

    Задача 5. Извлечение имя файла из полного пути к нему

    Напоследок, небольшой практический пример. Есть некоторый список файлов с указанием полного пути к ним. Нужно из всех ссылок собрать только имена файлов.

    Как мы знаем, директории в ссылках отделены друг от друга символом «». После последнего такого символа расположено нужное нам имя файла. Похоже на задачу с извлечением последнего слова? Только вместо пробелов теперь символ обратной косой черты.

    Берем формулу из задачи 3 и заменяем в ней пробелы на «».

    Получим следующую формулу:

    Вставляем в ячейку и вуаля! Имя файла извлечено.

    Полученной информации Вам будет вполне достаточно, чтобы извлечь из ячейки, например, имя файла без расширения. Попробуйте составить такую формулу самостоятельно и сравните ее с формулой, предоставленной в файле-примере. Его можно скачать здесь . Там Вы найдете все формулы, предложенные в статье.

    Поддержать наш проект и его дальнейшее развитие можно вот здесь .

    Ваши вопросы по статье можете задавать через нашего бота обратной связи в Telegram: @ExEvFeedbackBot

    Microsoft Excel

    трюки • приёмы • решения

    Как извлечь слова из строки таблицы Excel

    Формулы в этой статье полезны для извлечения слов из текста, содержащегося в ячейке. Например, вы можете создать формулу для извлечения первого слова в предложении.

    Извлечение первого слова из строки

    Чтобы извлечь первое слово из строки, формула должна найти позицию первого символа пробела, а затем использовать эту информацию в качестве аргумента для функции ЛЕВСИМВ. Следующая формула делает это: =ЛЕВСИМВ(A1;НАЙТИ(» «;A1)-1) .

    Эта формула возвращает весь текст до первого пробела в ячейке A1. Однако у нее есть небольшой недостаток: она возвращает ошибку, если текст в ячейке А1 не содержит пробелов, потому что состоит из одного слова. Несколько более сложная формула решает проблему с помощью новой функции ЕСЛИОШИБКА, отображая все содержимое ячейки, если произошла ошибка:
    =ЕСЛИОШИБКА(ЛЕВСИМВ(A1;НАЙТИ(» «;A1)-1);A1) .

    Если вам нужно, чтобы формула была совместима с более ранними версиями Excel, вы не можете использовать ЕСЛИОШИБКА. В таком случае придется обойтись функцией ЕСЛИ и функцией ЕОШ для проверки на ошибку:
    =ЕСЛИ(ЕОШ(НАЙТИ(» «;A1));A1;ЛЕВСИМВ(A1;НАЙТИ(» «;A1)-1))

    Извлечение последнего слова строки

    Извлечение последнего слова строки — более сложная задача, поскольку функция НАЙТИ работает только слева направо. Таким образом, проблема состоит в поиске последнего символа пробела. Следующая формула, однако, решает эту проблему. Она возвращает последнее слово строки (весь текст, следующий за последним символом пробела):
    =ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(«*»;ПОДСТАВИТЬ(A1;» «;»*»;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;»»;»»)))))

    Но у этой формулы есть такой же недостаток, как и у первой формулы из предыдущего раздела: она вернет ошибку, если строка не содержит по крайней мере один пробел. Решение заключается в использовании функции ЕСЛИОШИБКА и возврате всего содержимого ячейки А1, если возникает ошибка:
    =ЕСЛИОШИБКА(ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(«*»;ПОДСТАВИТЬ(A1;» «;»*»;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;» «;»»)))));A1)

    Следующая формула совместима со всеми версиями Excel:
    =ЕСЛИ(ЕОШ(НАЙТИ(» «;A1));A1;ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(«*»;ПОДСТАВИТЬ(A1;»»;»*»;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;» «;»»))))))

    Извлечение всего, кроме первого слова строки

    Следующая формула возвращает содержимое ячейки А1, за исключением первого слова:
    =ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(» «:A1;1)) .
    Если ячейка А1 содержит текст 2008 Operating Budget, то формула вернет Operating Budget.

    Формула возвращает ошибку, если ячейка содержит только одно слово. Следующая версия формулы использует функцию ЕСЛИОШИБКА, чтобы можно было избежать ошибки; формула возвращает пустую строку, если ячейка не содержит более одного слова:
    =ЕСЛИОШИБКА(ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(» «;A1;1));»»)

    А эта версия совместима со всеми версиями Excel:
    =ЕСЛИ(ЕОШ(НАЙТИ(» «;A1));»»;ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(» «;A1;1)))

    Понравилась статья? Поделить с друзьями:
  • Excel удалить текст в ячейке после пробела
  • Excel удалить текст в ячейках после символа
  • Excel удалить строку функция
  • Excel удалить строку содержащую значение
  • Excel удалить строку после символа