Vba excel удалить текст до символа

 

Oleksandr

Пользователь

Сообщений: 14
Регистрация: 07.09.2017

#1

07.09.2017 11:59:01

Подскажите как сделать макрос…

Есть колонка с текстом вида…
‘=MCC+EA10-1Q100:2
нужно удалить весь текст до знака «-» и включая этот знак чтобы получилось
1Q100:2
хотелось бы выделить нужные ячейки и чтобы отредактированный текст копировался в соседнюю колонку…

да..в некоторых колонках встречается два раза символ «-» нужно удалить только начиная с первого символа «-«
например
‘=MCC+EA10-1Q100-X5:12
1Q100-X5:12

Цитата
Текст по столбцам, запишите макрорекодером
пример документа в приложении…

Спасибо :)  

Прикрепленные файлы

  • Wire_sample.xls (27 КБ)

Изменено: Oleksandr07.09.2017 17:12:46

 

Владимир

Пользователь

Сообщений: 8196
Регистрация: 21.12.2012

Стандартную функцию — Текст по столбцам, запишите макрорекодером.

«..Сладку ягоду рвали вместе, горьку ягоду я одна.»

 

Kuzmich

Пользователь

Сообщений: 7998
Регистрация: 21.12.2012

#3

07.09.2017 12:12:59

Цитата
как сделать макрос…
Код
Sub Tablica()
Dim i As Long
Dim iLastRow As Long
 iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
  For i = 2 To iLastRow
    Cells(i, 2) = Split(Cells(i, 1), "-")(1)
  Next
End Sub
 

Oleksandr

Пользователь

Сообщений: 14
Регистрация: 07.09.2017

#4

07.09.2017 12:17:41

Цитата
Владимир написал:
Стандартную функцию — Текст по столбцам, запишите макрорекодером.

в некоторых колонках встречается два раза символ «-» нужно удалить только начиная с первого символа «-«
например
‘=MCC+EA10-1Q100-X5:12
1Q100-X5:12

если использовать Текст по столбцам..то он воспринимает это как два разделителя…
а мне нужно удалить текст только с первого «-«

 

Oleksandr

Пользователь

Сообщений: 14
Регистрация: 07.09.2017

Кнопка цитирования не для ответа [МОДЕРАТОР]
Kuzmich, спасибо…но
в некоторых колонках встречается два раза символ «-» нужно удалить только начиная с первого символа «-»
например
‘=MCC+EA10-1Q100-X5:12
1Q100-X5:12

а мне нужно удалить текст только с первого «-«
этот макрос удалит и вторую часть получится…
‘=MCC+EA10-1Q100-X5:12
только 1Q100, а нужно 1Q100-X5:12  

 

Hugo

Пользователь

Сообщений: 23251
Регистрация: 22.12.2012

У split() есть параметр на сколько частей делить — делите на две!

 

kuklp

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

#7

07.09.2017 12:29:05

Код
Sub www()
    Dim i As Long
    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        Cells(i, 1) = Mid(Cells(i, 1), InStr(1, Cells(i, 1), "-") + 1)
    Next
End Sub

Я сам — дурнее всякого примера! …

 

kuklp

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

#8

07.09.2017 12:31:37

Или как Игорь подсказал:

Код
Sub www()
    Dim i As Long
    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        Cells(i, 1) = Split(Cells(i, 1), "-", 2)(1)
    Next
End Sub

Я сам — дурнее всякого примера! …

 

Oleksandr

Пользователь

Сообщений: 14
Регистрация: 07.09.2017

Ура работает…!!!
Спасибо  :)
а можно чтобы макрос редактировал не исходные данные а копировал отредактированные данные в соседнюю колонку…

 

kuklp

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

#10

07.09.2017 12:33:37

Да.

Код
Cells(i, 2) = Split(Cells(i, 1), "-", 2)(1)

Я сам — дурнее всякого примера! …

 

Oleksandr

Пользователь

Сообщений: 14
Регистрация: 07.09.2017

Спасибо!!! Все работает как и хотелось!!!  :)  

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Oleksandr, не жмите тупо на кнопку цитирования. Не для ответа она!

 

OksRy

Пользователь

Сообщений: 16
Регистрация: 27.09.2019

OksR

добрый день
Похожая ситуация : имеется выгрузка текста в  таблицу xls содержащий в столбце  G  пример текста:

Расчеты через ТУ 1027035510270314RUSBEREZOVSKIY4MAGAZIN FANTO по чеку 27.12.2019,1ZA5B0 по карте 619678++++++1192. ANP-5620 MCC5413

Язык VBA не знаю.  Обычно выкручивалась логической корректировкой аналогичных найденных макросов.  Этот не получается  :(
Помогите пожалуйста с макросом — удаление по столбцу G всех знаков СЛЕВА (может быть разное количество) до RUS    :)
Спасибо
 

 

Kuzmich

Пользователь

Сообщений: 7998
Регистрация: 21.12.2012

#14

28.01.2020 18:43:17

UDF

Код
Function iRUS(cell As String) As String
Dim n As Integer
  n = InStr(1, cell, "RUS")
  iRUS = Mid(cell, n)
End Function
 

OksRy

Пользователь

Сообщений: 16
Регистрация: 27.09.2019

OksR

#15

28.01.2020 19:57:47

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

в ЭТОМ ЖЕ СТРОЛБЦЕ текст сменился-переформатировался,

или что то еще при функциях не дорабатывала… ?

Удаление текста в ячейке до определенного символа.

bosse-sl

Дата: Суббота, 14.02.2015, 19:20 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 21

Необходимо в определенной ячейке (A13) удалить текст до символа «№» и следующего за ним пробела
Текст в ячейке: Заявка № 111; Заявки № 112-113
Через формулу получилось —

Код

=ПСТР(A13;ПОИСК(«№»;A13)+2;150)

Но нужно сделать через макрос

Сообщение отредактировал Serge_007Суббота, 14.02.2015, 19:27

 

Ответить

buchlotnik

Дата: Суббота, 14.02.2015, 19:23 |
Сообщение № 2

Группа: Заблокированные

Ранг: Участник клуба

Сообщений: 3442


Репутация:

929

±

Замечаний:
20% ±


2010, 2013, 2016 RUS / ENG

bosse-sl, можно и через макрос B) , только файлик приложите, в котором играться, а то модераторы будут недовольны (впрочем, я тоже)

 

Ответить

bosse-sl

Дата: Суббота, 14.02.2015, 19:29 |
Сообщение № 3

Группа: Пользователи

Ранг: Новичок

Сообщений: 21

Там нужно только из одной ячейки, а текст как и писал ЗАЯВКА № 111 или ЗАЯВКИ № 112-113

 

Ответить

Serge_007

Дата: Суббота, 14.02.2015, 19:34 |
Сообщение № 4

Группа: Админы

Ранг: Местный житель

Сообщений: 15894


Репутация:

2623

±

Замечаний:
±


Excel 2016

Необходимо в определенной ячейке (A13)

нужно сделать через макрос

Вам нужен макрос для обработки ОДНОЙ ЯЧЕЙКИ?!
Тут и формулы-то много, вручную гораздо быстрее сделать чем ее писать…


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

bosse-sl

Дата: Суббота, 14.02.2015, 19:37 |
Сообщение № 5

Группа: Пользователи

Ранг: Новичок

Сообщений: 21

Простите Сергей.
Для одного раза сделал бы, но это будет частью другого макроса и будет повторяться по несколько раз (десятков раз) в день.
Заранее спасибо

 

Ответить

buchlotnik

Дата: Суббота, 14.02.2015, 19:51 |
Сообщение № 6

Группа: Заблокированные

Ранг: Участник клуба

Сообщений: 3442


Репутация:

929

±

Замечаний:
20% ±


2010, 2013, 2016 RUS / ENG

Собственно, ПОИСК = InStr, ПСТР я бы заменил на ПРАВСИМВ, т.е. Right. Для передачи из A13 в B13 код такой:[vba]

Код

Sub trimmer()
     Dim i%
     i = InStr(1, [a13].Value, «№», vbTextCompare) + 2
     [b13].Value = Right([a13].Value, Len([a13].Value) — i + 1)
End Sub

[/vba]

К сообщению приложен файл:

2633296.xls
(35.5 Kb)

 

Ответить

Serge_007

Дата: Суббота, 14.02.2015, 20:06 |
Сообщение № 7

Группа: Админы

Ранг: Местный житель

Сообщений: 15894


Репутация:

2623

±

Замечаний:
±


Excel 2016

это будет частью другого макроса

[vba]

Код

[a13] = Mid([a13], Application.WorksheetFunction.Find(«№ «, [a13]) + 2, Len([a13]))

[/vba]


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

bosse-sl

Дата: Суббота, 14.02.2015, 20:13 |
Сообщение № 8

Группа: Пользователи

Ранг: Новичок

Сообщений: 21

Спасибо
buchlotnik почему то Ваш работает
А вот Сергея ругается Type mismatch подозреваю что на WorksheetFunction пробовал в другом месте, у меня Excel 2003 может из-за этого, но всё-равно спасибо

 

Ответить

Serge_007

Дата: Суббота, 14.02.2015, 20:15 |
Сообщение № 9

Группа: Админы

Ранг: Местный житель

Сообщений: 15894


Репутация:

2623

±

Замечаний:
±


Excel 2016

у меня Excel 2003 может из-за этого

Нет, из-за этого не будет ошибки


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

bosse-sl

Дата: Суббота, 14.02.2015, 20:20 |
Сообщение № 10

Группа: Пользователи

Ранг: Новичок

Сообщений: 21

Простите Сергей зря наговаривал разобрался, не ту переменную использовал вместо, было две одна — String , другая -Integer
Приношу извинения.

[offtop]Подскажите как закрыть тему?

Сообщение отредактировал bosse-slСуббота, 14.02.2015, 20:21

 

Ответить

Извлечение (вырезание) части строки с помощью кода VBA Excel из значения ячейки или переменной. Функции Left, Mid и Right, их синтаксис и аргументы. Пример.

Эта функция извлекает левую часть строки с заданным количеством символов.

Синтаксис функции Left:

Left(строка, длина)

  • строка — обязательный аргумент: строковое выражение, из значения которого вырезается левая часть;
  • длина — обязательный аргумент: числовое выражение, указывающее количество извлекаемых символов.

Если аргумент «длина» равен нулю, возвращается пустая строка. Если аргумент «длина» равен или больше длины строки, возвращается строка полностью.

Функция Mid

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

Синтаксис функции Mid:

Mid(строка, начало, [длина])

  • строка — обязательный аргумент: строковое выражение, из значения которого вырезается часть строки;
  • начало — обязательный аргумент: числовое выражение, указывающее положение символа в строке, с которого начинается извлекаемая часть;
  • длина — необязательный аргумент: числовое выражение, указывающее количество вырезаемых символов.

Если аргумент «начало» больше, чем количество символов в строке, функция Mid возвращает пустую строку. Если аргумент «длина» опущен или его значение превышает количество символов в строке, начиная с начального, возвращаются все символы от начальной позиции до конца строки.

Функция Right

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

Синтаксис функции Right:

Right(строка, длина)

  • строка — обязательный аргумент: строковое выражение, из значения которого вырезается правая часть;
  • длина — обязательный аргумент: числовое выражение, указывающее количество извлекаемых символов.

Если аргумент «длина» равен нулю, возвращается пустая строка. Если аргумент «длина» равен или больше длины строки, возвращается строка полностью.

Пример

В этом примере будем использовать все три представленные выше функции для извлечения из ФИО его составных частей. Для этого запишем в ячейку «A1» строку «Иванов Сидор Петрович», из которой вырежем отдельные компоненты и запишем их в ячейки «A2:A4».

Sub Primer()

Dim n1 As Long, n2 As Long

Range(«A1») = «Иванов Сидор Петрович»

‘Определяем позицию первого пробела

n1 = InStr(1, Range(«A1»), » «)

‘Определяем позицию второго пробела

n2 = InStr(n1 + 1, Range(«A1»), » «)

‘Извлекаем фамилию

Range(«A2») = Left(Range(«A1»), n1 1)

‘Извлекаем имя

Range(«A3») = Mid(Range(«A1»), n1 + 1, n2 n1 1)

‘Извлекаем отчество

Range(«A4») = Right(Range(«A1»), Len(Range(«A1»)) n2)

End Sub

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

Содержание:

  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.

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

Студворк — интернет-сервис помощи студентам

Доброго времени суток, друзья
Подскажите как возможно решить такие задачи через VBA:

Есть список в одном столбце пусть А (заполнено вниз по ячейкам А1, А2, А3) :

Жилая комната_№1
___________________
Спальная_№2
___________________
Кухня_№3

1.) Как удалить символы с начало строки и до определенного , в данном случае «№» ТО есть СЛЕВА ОТ ЭТОГО СИМВОЛА:

№1
___________________
№2
___________________
№3

2.) тоже самое но СПРАВА:

Жилая комната_№
___________________
Спальная_№
___________________
Кухня_№

3.) удалить с определенного символа , срез посередине — например с символов «я» и «№» :

Жилая №1
___________________
Спальная №2
___________________
Кухня №3

4.) удалить с определенного символа , срез по краям — например с символов «я» и «№» :

я_№
___________________
я_№
___________________
я_№

Вопрос:

Я пытаюсь удалить содержимое строки до определенного слова, содержащегося в строке. Например

"Emily has wild flowers. They are red and blue."

Я бы хотел использовать VBA, чтобы заменить это на

"They are red and blue."

т.е. удалить весь контент до слова “Они”. Я не знаю содержание строки и количество содержащихся в ней символов.

Я не уверен, как это сделать, и я бы очень признателен за вашу помощь!

Лучший ответ:

Ну вот:

Dim s As String
s = "Emily has wild flowers. They are red and blue."

Dim indexOfThey As Integer

indexOfThey = InStr(1, s, "They")


Dim finalString As String
finalString = Right(s, Len(s) - indexOfThey + 1)

Ответ №1

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

Sub Foo()
Dim strOrig As String
Dim strReplace As String
strOrig = "The Quick brown fox jumped over the lazy dogs"
strReplace = "jumped"

MsgBox (DropTextBefore(strOrig, strReplace))

End Sub

Public Function DropTextBefore(strOrigin As String, strFind As String)
Dim strOut As String
Dim intFindPosition As Integer
'case insensitive search
'could made it so that case sensitivity is a parameter but this gets the idea across.
If strOrigin <> "" And strFind <> "" Then
intFindPosition = InStr(UCase(strOrigin), UCase(strFind))
strOut = Right(strOrigin, Len(strOrigin) - (intFindPosition + Len(strFind) - 1))
Else
strOut = "Error Empty Parameter in function call was encountered."
End If
DropTextBefore = strOut
End Function

Ответ №2

Это отлично подействовало на меня:

Sub remove_until()

Dim i, lrowA, remChar As Long
Dim mString As String

lrowA = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

For i = 1 To lrowA

mString = Cells(i, 1).Value


If InStr(mString, "They") > 0 Then

remChar = Len(mString) - InStr(mString, "They") + 1

Cells(i, 2).Value = Left(mString, Len(mString) - remChar)

End If


Next

End Sub

Ответ №3

Если слово фиксировано, например “Они” в приведенном выше примере, вы можете просто сделать

  1. CTRL + H (Заменить)
  2. * Они (ваше слово со звездой)

в поле “Поиск”. Звездочка * является подстановочным символом, который можно назвать как-либо до или после (если добавлено в конце) слово.

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

Skip to content

Удаление символов или текста при помощи регулярных выражений

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

Вы когда-нибудь задумывались, насколько мощным был бы Excel, если бы кто-нибудь мог обогатить его набор инструментов регулярными выражениями? Мы не только подумали, но и поработали над этим :) А теперь вы можете добавить эту замечательную функцию RegEx в свои собственные книги и использовать регулярные выражения, чтобы удалить часть текста, соответствующего шаблону!

Ранее мы рассмотрели, как использовать регулярные выражения для замены текста в Excel. Для этого мы создали специальную функцию Regex Replace. Как оказалось, функция выходит за рамки своего основного предназначения и может не только заменять строки, но и удалять их. Как такое могло быть? С точки зрения Excel, удаление значения – это не что иное, как замена его пустой строкой, в чем функция Regex очень хороша!

  •  Функция VBA RegExp для удаления символов и текста в Excel
  • Удалить все совпадения или конкретное совпадение
  • Регулярное выражение для удаления определенных символов
  • Удаляем группы символов с помощью регулярного выражения
  • Регулярное выражение для удаления нечисловых символов
  • Регулярное выражение для удаления всего после пробела
  • Удаление текста после определенного символа
  • Регулярное выражение для удаления всего до пробела
  • Регулярное выражение для удаления всего перед символом
  • Регулярное выражение для удаления всего, кроме
  • Regex для удаления HTML-тегов в Excel
  • Инструмент удаления символов и текста Ablebits Regex
  • Как удалить текст в скобках с помощью регулярного выражения

Функция VBA RegExp для удаления символов и текста в Excel

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

Функция имеет следующий синтаксис:

RegExpReplace (текст; шаблон; замена; [instance_num]; [match_case])

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

Где:

  • Текст – текстовая строка для поиска.
  • Шаблон – регулярное выражение для поиска.
  • Замена – текст, на который нужно заменить. Чтобы удалить подстроки, соответствующие шаблону, используйте для замены пустую строку («»).
  • Instance_num (необязательно) – экземпляр, который нужно заменить. Если не указан, заменяются все найденные совпадения (по умолчанию).
  • Match_case (необязательно) – логическое значение, указывающее, следует ли учитывать регистр текста или игнорировать его. Для сопоставления с учетом регистра используйте ИСТИНА (по умолчанию); для нечувствительности к регистру – ЛОЖЬ.

Для получения дополнительной информации см. Функцию RegExpReplace .

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

RegExpReplace(текст, шаблон; «»; [instance_num]; [match_case])

В приведенных ниже примерах показаны различные способы применения этой базовой концепции.

Удалить все совпадения или конкретное совпадение

Функция RegExpReplace предназначена для поиска всех подстрок, соответствующих заданному регулярному выражению. То, какие вхождения следует удалять, определяется четвертым необязательным аргументом с именем instance_num.

По умолчанию это «все совпадения». Если аргумент instance_num опущен, все найденные совпадения удаляются. Чтобы удалить конкретное, укажите его порядковый номер.

Предположим, вы хотите удалить нумерацию в приведенных ниже строках. Все такие числа начинаются со знака решетки (#) и содержат ровно 5 цифр. Итак, мы можем идентифицировать их с помощью этого регулярного выражения:

Шаблон: #d{5}b

Граница слова b указывает, что соответствующая подстрока не может быть частью более длинной строки, например #10000001.

Чтобы удалить все совпадения, аргумент instance_num не определен:

=RegExpReplace(A5; $A$2; «»)

Чтобы исключить только первое вхождение, мы устанавливаем аргумент instance_num равным 1:

=RegExpReplace(A5; $A$2; «»; 1)

Обе эти формулы вы видите на скриншоте выше.

Регулярное выражение для удаления определенных символов

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

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

Шаблон: (|)|-|.|s

Формула будет для нашего примера такая:

=RegExpReplace(A5; “(|)|-|.|s”; “”)

Результатом этой операции является 10-значное число, например «1234567890».

Для удобства вы можете ввести регулярное выражение в отдельную ячейку и ссылаться на неё, используя абсолютную ссылку, например $A$2:

=RegExpReplace(A5; $A$2; «»)

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

Например, чтобы записать все номера телефонов в формате (123) 456-7890, формула примет следующий вид:

=»(«&ЛЕВСИМВ(B5; 3)&») «&ПСТР(B5; 4; 3)&»-«&ПРАВСИМВ(B5; 4)

Где B5 – ячейка, в которой записана предыдущая формула RegExpReplace.
Пример вы видите на скриншоте выше.

Удаляем группы символов с помощью регулярного выражения

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

Шаблон основан на инвертированных символьных классах – перед списком символов помещается этот значок ^, чтобы искать любой одиночный символ НЕ в скобках. Квантификатор + заставляет рассматривать последовательные символы как одно совпадение, так что замена выполняется для соответствующей подстроки, а не для каждого отдельного символа.

В зависимости от ваших потребностей выберите одно из следующих регулярных выражений.

Чтобы удалить не буквенно-цифровые символы, то есть все символы, кроме букв и цифр:

[^0-9a-zA-Zа-яА-Я]+

Чтобы удалить все символы, кроме буквцифр и пробелов:

[^0-9a-zA-Zа-яА-Я ]+

Чтобы удалить все символы, кроме буквцифр и подчеркивания, вы можете использовать W, обозначающий любой символ, НЕ являющийся буквенно-цифровым символом или подчеркиванием:

W+

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

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

[^0-9a-zA-Zа-яА-Я., ]+

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

Чтобы исправить это, вы можете вложить указанную выше функцию в СЖПРОБЕЛЫ, которая заменяет несколько пробелов одним.

=СЖПРОБЕЛЫ(RegExpReplace(A5; $A$2; «»))

Результат вы видите на скриншоте ниже.

Регулярное выражение для удаления нечисловых символов

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

Соответствует любому символу, который НЕ является цифрой:

D+

А вот так можно найти все нечисловые символы с помощью отрицательных классов:

[^0-9]+

или

[^d]+
В результате удалены все символы, кроме цифр:

Совет. Если ваша цель – удалить текст и разнести оставшиеся числа в отдельные ячейки или поместить их всех в одну ячейку, разделенную каким-то разделителем, используйте функцию RegExpExtract, как описано в статье «Как извлекать числа из строки с помощью регулярных выражений».

Регулярное выражение для удаления всего после пробела

Чтобы стереть все, что находится после пробела, используйте символ пробела – обычный или такой s, чтобы найти первый пробел. А затем примените  .*, чтобы найти любые символы после него.

Если у вас есть однострочные строки, которые содержат только нормальные пробелы (значение 32 в 7-битной системе ASCII), на самом деле не имеет значения, какое из следующих регулярных выражений вы используете. Если же в ячейке текст записан с переносами строки, то это имеет значение.

Чтобы удалить все после символа пробела, используйте это регулярное выражение:

Шаблон: .*

=RegExpReplace(A5; “.*”; «»)

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

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

Шаблон: s.*

=RegExpReplace(A5; «s.*»; «»)

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

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

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

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

Чтобы обрабатывать каждую строку текста отдельно:

Общий шаблон:   символ. *

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

Чтобы обработать все строки текста как одну строку:

Общий шаблон:    символ (.|n)*

Чтобы удалить что-либо после символа, включая новые строки, к регулярному выражению добавляется n.

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

,. *

,(.|n)*

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

Удалены все символы либо до конца каждой строки, либо до конца всего текста в ячейке.

Регулярное выражение для удаления всего до пробела

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

Удалите все до последнего пробела

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

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

Шаблон: «.* «

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

Шаблон: .*s

Особенно заметна разница на многострочных значениях.

Удалить все перед первым пробелом

Чтобы сопоставить что-либо до первого пробела в строке, вы можете использовать это регулярное выражение:

^[^] * +

С начала строки ^ мы сопоставляем ноль или несколько непробельных символов [^ ]*, за которыми сразу же следует один или несколько пробелов +. Последняя часть добавлена ​​для предотвращения потенциальных пробелов в результатах.

Чтобы удалить текст перед первым пробелом в каждой строке, формула записывается в режиме «все совпадения» по умолчанию (аргумент instance_num опущен):

=RegExpReplace(A5; “^[^ ]* +”; «»)

Чтобы удалить текст перед первым пробелом в первой строке и оставить все остальные строки нетронутыми, аргумент instance_num устанавливается в 1:

=RegExpReplace(A5; “^[^ ]* +”; «»; 1)

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

Регулярное выражение для удаления всего перед символом

Самый простой способ удалить весь текст перед определенным символом – использовать такое регулярное выражение:

Общий шаблон : ^[^символ]*символ

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

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

^[^:]*:

Чтобы избежать пробелов в начале результатов, добавьте в конец пробел s*. Это удалит все до первого двоеточия и обрежет все пробелы сразу после него:

^[^:]*:s*

=RegExpReplace(A5; “^[^:]*:s* ”; «»)

Регулярное выражение для удаления всего, кроме

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

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

[^a-zа-я.]+

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

=RegExpReplace(A5; «[^a-zа-я.]+»; «»)

Regex для удаления HTML-тегов в Excel

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

Учитывая, что теги html всегда помещаются в угловые скобки <>, вы можете найти их, используя одно из следующих регулярных выражений.

Отрицательный класс:

Шаблон: <[^>]*>

Здесь мы сопоставляем открывающую угловую скобку, за которой следует ноль или более вхождений любого символа, кроме закрывающей угловой скобки [^>]*, до ближайшей закрывающей угловой скобки.

Ленивый поиск:

<.*?>

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

Какой бы вариант вы бы ни выбрали, результат будет абсолютно одинаковым.

Например, чтобы удалить все теги html из строки в A5 и оставить текст, формула будет следующей:

=RegExpReplace(A5, «<.*?>», «»)

Это решение идеально подходит для однострочного текста (строки 5–9). Для нескольких строк (строки 10–12) результаты сомнительны — тексты из разных тегов сливаются в один. Это правильно или нет? Боюсь, это нелегко решить — все зависит от вашего понимания желаемого результата. Например, в B11 ожидается результат «A1»; в то время как в B10 вы можете захотеть, чтобы «значение1» и «значение2» ​​были разделены пробелом.

Чтобы удалить теги html и разделить оставшийся текст пробелами, вы можете поступить следующим образом:

  1. Заменить теги пробелами » «, а не пустыми строками:

=RegExpReplace(A5, «<.*?>», » «)

  1. Сократить несколько пробелов до одного символа пробела:

=RegExpReplace(RegExpReplace(A10; «<[^>]*>»; » «); » +»; » «)

  1. Обрезать начальные и конечные пробелы:

=СЖПРОБЕЛЫ(RegExpReplace(RegExpReplace(A5; «<[^>]*>»; » «); » +»; » «))

Результат будет примерно таким:

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

Инструмент удаления символов и текста Ablebits Regex

Если у вас была возможность использовать Ultimate Suite for Excel , вы, вероятно, уже обнаружили новые инструменты Regex, представленные в недавнем выпуске. Прелесть этих функций Regex на основе .NET заключается в том, что они, во-первых, поддерживают полнофункциональный синтаксис регулярных выражений, свободный от ограничений VBA RegExp, и, во-вторых, не требуют вставки какого-либо кода VBA в ваши книги, поскольку вся интеграция кода выполняется автоматически.

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

Как удалить текст в скобках с помощью регулярного выражения

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

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

Шаблон:  ((.*?))|([.*?])

Хитрость заключается в использовании ленивого квантификатора (*?) для поиска кратчайшей возможной подстроки. Первая группа ((.*?)) соответствует содержимому от открывающей круглой скобки до первой закрывающей скобки. Вторая группа ([.*?]) соответствует находящемуся от открывающей квадратной скобки до первой закрывающей скобки. Знак | действует как оператор ИЛИ.

Определив шаблон, давайте «скормим» его нашей функции Regex Remove. Вот каким образом:

  1. На вкладке «Ablebits Data» в группе «Text» щелкните «Regex Tools» .
  2. В появившейся слева панели выберите исходные ячейки с текстом, введите регулярное выражение, выберите параметр «Remove (Удалить и нажмите кнопку «Remove».

Чтобы получить результаты в виде формул, а не значений, установите флажок  Insert as a formula (Вставить как формулу).

Чтобы удалить текст в скобках из строк в A2: A5, мы настраиваем следующие параметры, как на скриншоте ниже:

В результате функция AblebitsRegexRemove вставляется в новый столбец рядом с вашими исходными данными.

Функцию также можно ввести непосредственно в ячейку через стандартное диалоговое окно «Вставить функцию», где она отнесена к категории AblebitsUDFs .

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

Например, чтобы обрезать лишние пробелы в результирующих строках, вы можете использовать функцию СЖПРОБЕЛЫ :

=СЖПРОБЕЛЫ(RegExpReplace(A5; $A$2; «»))

Вот как удалить текст в Excel с помощью регулярных выражений. Почти так же просто, как купить подписчиков в инстаграм. :)  Благодарю вас за чтение!

Сумма по цвету и подсчёт по цвету в Excel В этой статье вы узнаете, как посчитать ячейки по цвету и получить сумму по цвету ячеек в Excel. Эти решения работают как для окрашенных вручную, так и с условным форматированием. Если…
Проверка данных с помощью регулярных выражений В этом руководстве показано, как выполнять проверку данных в Excel с помощью регулярных выражений и пользовательской функции RegexMatch. Когда дело доходит до ограничения пользовательского ввода на листах Excel, проверка данных очень полезна. Хотите…
Поиск и замена в Excel с помощью регулярных выражений В этом руководстве показано, как быстро добавить пользовательскую функцию в свои рабочие книги, чтобы вы могли использовать регулярные выражения для замены текстовых строк в Excel. Когда дело доходит до замены…
Как извлечь строку из текста при помощи регулярных выражений В этом руководстве вы узнаете, как использовать регулярные выражения в Excel для поиска и извлечения части текста, соответствующего заданному шаблону. Microsoft Excel предоставляет ряд функций для извлечения текста из ячеек. Эти функции…
4 способа отладки пользовательской функции Как правильно создавать пользовательские функции и где нужно размещать их код, мы подробно рассмотрели ранее в этой статье.  Чтобы решить проблемы при создании пользовательской функции, вам скорее всего придется выполнить…

  • 1. Удалите символы слева, справа или в середине текстовых строк.
    • 1.1 Удалить первые n символов из текстовых строк
      • Используя формулы
      • Используя функцию, определяемую пользователем
    • 1.2 Удалить последние n символов из текстовых строк
      • Используя формулы
      • Используя функцию, определяемую пользователем
    • 1.3 Удалите первые, последние n символов или определенные символы позиции с помощью мощной функции
    • 1.4 Удалите первые n и последние n символов из текстовых строк с помощью формулы
  • 2. Удалите ненужные / специальные символы из текстовых строк.
    • 2.1 Удаление некоторых специальных символов из текстовых строк
      • Удалите несколько специальных символов из текстовых строк с помощью функции ЗАМЕНА
      • Удалите несколько специальных символов из текстовых строк с помощью функции, определяемой пользователем
      • Удалите несколько специальных символов из текстовых строк с помощью удивительной функции
    • 2.2 Удалить все числа из текстовых строк
      • Удалите числа из текстовых строк с помощью функции ЗАМЕНА
      • Удалите числа из текстовых строк с помощью функции TEXTJOIN
      • Удаление чисел из текстовых строк с помощью функции, определяемой пользователем
      • Удаляйте числа из текстовых строк с помощью удобной опции
    • 2.3 Удаление нечисловых символов из текстовых строк
      • Удалите нечисловые символы из текстовых строк с формулой в Excel 2016 и более ранних версиях
      • Удалите нечисловые символы из текстовых строк с помощью функции TEXTJOIN в Excel 2019, 2021, 365
      • Удалите нечисловые символы из текстовых строк с помощью функции, определяемой пользователем
      • Удалите нечисловые символы из текстовых строк с помощью простой функции
    • 2.4. Разделите текст и числа из одной ячейки на два столбца
      • Разделите текст и числа из одной ячейки на два столбца с помощью функции, определяемой пользователем
      • Разделите текст и числа из одной ячейки на два столбца с помощью простой функции
    • 2.5 Удаление символов разрыва строки из текстовых строк
      • Удалите символы разрыва строки из текстовых строк с помощью функции поиска и замены
      • Удалите символы разрыва строки из текстовых строк с помощью функции ЗАМЕНА
      • Удалите символы разрыва строки из текстовых строк с помощью кода VBA
      • Удалите символы разрыва строки из текстовых строк с помощью умной опции
    • 2.6 Удаление пробелов (начальных, конечных, дополнительных или всех) из текстовых строк
      • Удалите лишние пробелы (ведущие, конечные, лишние) из текстовых строк с помощью функции TRIM
      • Удалить все пробелы из текстовых строк
      • Удалите все виды пробелов из текстовых строк с помощью мощной функции
  • 3. Удалите символы / текст до или после определенного символа.
    • 3.1 Удаление текста до или после первого конкретного символа
      • Удалить текст перед первым конкретным символом с помощью формулы
      • Удалить текст после первого определенного символа с помощью формулы
    • 3.2 Удаление текста до или после N-го вхождения символа
      • Удалить текст перед N-м вхождением символа с формулой
      • Удалить текст после N-го вхождения символа с формулой
      • Удалить текст до или после N-го вхождения символа с помощью функции, определяемой пользователем
    • 3.3 Удаление текста до или после последнего появления символа
      • Удалить текст перед последним вхождением символа с формулой
      • Удалять текст после последнего вхождения символа с формулами
    • 3.4 Удалить текст между скобками
      • Удалите текст между скобками с помощью функции поиска и замены
      • Удалить текст между скобками с формулой
      • Удалите текст между скобками с помощью функции, определяемой пользователем
  • 4. Удалите слова из текстовых строк.
    • 4.1 Удалить первое или последнее слово из текстовой строки
      • Удалить первое слово из текстовой строки с помощью формулы
      • Удалить последнее слово из текстовой строки с помощью формулы
    • 4.2 Удаление повторяющихся символов или слов в ячейке
      • Удалите повторяющиеся символы в ячейке с помощью функции, определяемой пользователем
      • Удалите повторяющиеся слова в ячейке с помощью функции, определяемой пользователем
    • 4.3 Обрезать текстовую строку до N слов
      • Обрезать текстовую строку до N слов с помощью формулы
      • Обрезать текстовую строку до N слов с помощью функции, определяемой пользователем

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

Содержание:

1. Удалите символы слева, справа или в середине текстовых строк.

      • 1.1 Удалить первые n символов из текстовых строк
        • Используя формулы
        • Используя функцию, определяемую пользователем
      • 1.2 Удалить последние n символов из текстовых строк
        • Используя формулы
        • Используя функцию, определяемую пользователем
      • 1.3 Удалите первые, последние n символов или определенные символы позиции с помощью мощной функции
      • 1.4 Удалите первые n и последние n символов из текстовых строк с помощью формулы

2. Удалите ненужные / специальные символы из текстовых строк.

      • 2.1 Удаление некоторых специальных символов из текстовых строк
        • Удалите несколько специальных символов из текстовых строк с помощью функции ЗАМЕНА
        • Удалите несколько специальных символов из текстовых строк с помощью функции, определяемой пользователем
        • Удалите несколько специальных символов из текстовых строк с помощью удивительной функции
      • 2.2 Удалить все числа из текстовых строк
        • Удалите числа из текстовых строк с помощью функции ЗАМЕНА
        • Удалите числа из текстовых строк с помощью функции TEXTJOIN
        • Удаление чисел из текстовых строк с помощью функции, определяемой пользователем
        • Удаляйте числа из текстовых строк с помощью удобной опции
      • 2.3 Удаление нечисловых символов из текстовых строк
        • Удалите нечисловые символы из текстовых строк с формулой в Excel 2016 и более ранних версиях
        • Удалите нечисловые символы из текстовых строк с помощью функции TEXTJOIN в Excel 2019, 2021, 365
        • Удалите нечисловые символы из текстовых строк с помощью функции, определяемой пользователем
        • Удалите нечисловые символы из текстовых строк с помощью простой функции
      • 2.4. Разделите текст и числа из одной ячейки на два столбца
        • Разделите текст и числа из одной ячейки на два столбца с помощью функции, определяемой пользователем
        • Разделите текст и числа из одной ячейки на два столбца с помощью простой функции
      • 2.5 Удаление символов разрыва строки из текстовых строк
        • Удалите символы разрыва строки из текстовых строк с помощью функции поиска и замены
        • Удалите символы разрыва строки из текстовых строк с помощью функции ЗАМЕНА
        • Удалите символы разрыва строки из текстовых строк с помощью кода VBA
        • Удалите символы разрыва строки из текстовых строк с помощью умной опции
      • 2.6 Удаление пробелов (ведущих, конечных, дополнительных или всех) из текстовых строк
        • Удалите лишние пробелы (ведущие, конечные, лишние) из текстовых строк с помощью функции TRIM
        • Удалить все пробелы из текстовых строк
        • Удалите все виды пробелов из текстовых строк с помощью мощной функции

3. Удалите символы / текст до или после определенного символа.

  • 3.1 Удаление текста до или после первого конкретного символа
    • Удалить текст перед первым конкретным символом с помощью формулы
    • Удалить текст после первого определенного символа с помощью формулы
  • 3.2 Удаление текста до или после N-го вхождения символа
    • Удалить текст перед N-м вхождением символа с формулой
    • Удалить текст после N-го вхождения символа с формулой
    • Удаление текста до или после N-го символа с помощью функции, определяемой пользователем
  • 3.3 Удаление текста до или после последнего появления символа
    • Удалить текст перед последним вхождением символа с формулой
    • Удалять текст после последнего вхождения символа с формулами
  • 3.4 Удалить текст между скобками
    • Удалите текст между скобками с помощью функции поиска и замены
    • Удалить текст между скобками с формулой
    • Удалите текст между скобками с помощью функции, определяемой пользователем

4. Удалите слова из текстовых строк.

  • 4.1 Удалить первое или последнее слово из текстовой строки
    • Удалить первое слово из текстовой строки с помощью формулы
    • Удалить последнее слово из текстовой строки с помощью формулы
  • 4.2 Удаление повторяющихся символов или слов в ячейке
    • Удалите повторяющиеся символы в ячейке с помощью функции, определяемой пользователем
    • Удалите повторяющиеся слова в ячейке с помощью функции, определяемой пользователем
  • 4.3 Обрезать текстовую строку до N слов
    • Обрезать текстовую строку до N слов с помощью формулы
    • Обрезать текстовую строку до N слов с помощью функции, определяемой пользователем

Удалите символы слева, справа или в середине текстовых строк

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

1.1 Удалить первые n символов из текстовых строк

Если вам нужно удалить первые n символов из списка текстовых строк, следующие методы могут оказать вам услугу.

 Используя формулы

Обычно, чтобы удалить символы из начала текстовых строк, вы можете использовать функцию REPLACE или комбинацию функций RIGHT и LEN.

Функция REPLACE для удаления первых N символов:

=REPLACE(string, 1, num_chars, «»)

  • string: Текстовая строка, из которой вы хотите удалить символы;
  • num_chars: Количество символов, которые вы хотите удалить.

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

=REPLACE(A4, 1, 2, «»)

Функции RIGHT и LEN для удаления первых N символов:

=RIGHT(string, LEN(string) — num_chars)

  • string: Текстовая строка, из которой вы хотите удалить символы;
  • num_chars: Количество символов, которые вы хотите удалить.

Чтобы удалить первые 2 символа из ячеек, примените следующую формулу:

=RIGHT(A4,LEN(A4)-2)


 Используя функцию, определяемую пользователем

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

1. Удерживайте Alt + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий код в окно модуля.

Код VBA: удалить первые n символов из текстовых строк

Function removeFirstx(rng As String, cnt As Long)
'Updateby Extendoffice
removeFirstx = Right(rng, Len(rng) - cnt)
End Function

3. Затем вернитесь к рабочему листу и введите эту формулу: = removefirstx (A4,2) в пустую ячейку, а затем перетащите дескриптор заполнения вниз, чтобы получить нужные результаты, см. снимок экрана:

Внимание: В этой формуле: A4 это ячейка, из которой вы хотите удалить символы; Номер 2 указывает количество символов, которые вы хотите удалить из начала текстовой строки.


1.2 Удалить последние n символов из текстовых строк

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

 Используя формулу

Чтобы удалить последние n символов из текстовых строк, вы можете использовать формулу, основанную на функциях LEFT и LEN.

Функции LEFT и LEN для удаления последних N символов:

=LEFT(string, LEN(string) — num_chars)

  • string: Текстовая строка, из которой вы хотите удалить символы;
  • num_chars: Количество символов, которые вы хотите удалить.

Чтобы удалить 3 символа из конца текстовых строк, используйте эту формулу, а затем перетащите маркер заполнения, чтобы скопировать формулу в другие ячейки, см. Снимок экрана:

=LEFT(A4, LEN(A4) — 3)


 Используя функцию, определяемую пользователем

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

1. Удерживайте Alt + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий код в окно модуля.

Код VBA: удалить последние n символов из текстовых строк

Function removeLastx(rng As String, cnt As Long)
'Updateby Extendoffice
removeLastx = Left(rng, Len(rng) - cnt)
End Function

3. Затем вернитесь к рабочему листу и введите эту формулу: = removelastx (A4,3) в пустую ячейку, а затем перетащите дескриптор заполнения вниз, чтобы получить нужные результаты, см. снимок экрана:

Внимание: В этой формуле: A4 это ячейка, из которой вы хотите удалить символы; Номер 3 указывает количество символов, которые вы хотите удалить из конца текстовой строки.


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

Вам может быть сложно запоминать различные формулы, удалять символы слева, справа или в определенной позиции текстовых строк, Kutools for Excel поддерживает мощную функцию — Удалить по позиции. С помощью этого небольшого инструмента вы можете справиться с этими задачами несколькими щелчками мыши, не запоминая никаких формул.

После установки Kutools for Excel, пожалуйста, сделайте так:

1. Выделите ячейки, в которых нужно удалить символы, и нажмите Кутулс > Текст > Удалить по позиции, см. снимок экрана:

2. В Удалить по позиции диалоговом окне выполните следующие действия:

2.1 Удалите первые n символов из ячеек:

  • In Номера текстовое поле введите количество символов, которые вы хотите удалить из строк. В этом примере я удалю первые 2 символа.
  • Выберите Слева вариант в Позиция .
  • Затем нажмите Ok or Применить кнопку, чтобы получить результат, как показано на скриншоте ниже.

2.2 Удалить последние n символов из ячеек:

  • In Номера текстовое поле введите количество символов, которые вы хотите удалить из строк. В этом примере я удалю последние 3 символа.
  • Выберите Справа вариант в Позиция .
  • Затем нажмите Ok or Применить кнопку, чтобы получить результат, как показано на скриншоте ниже.

2.3 Удалить n символов из определенных позиций ячеек:

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

  • In Номера текстовое поле введите количество символов, которые вы хотите удалить из строк. В этом примере я уберу 3 символа из определенной позиции.
  • Выберите Указывать вариант и введите число, с которого вы хотите удалить символы, начинающиеся с, в текстовом поле Позиция раздел. Здесь я удалю символы из третьего символа.
  • Затем нажмите Ok or Применить кнопку, чтобы получить результат, как показано на скриншоте ниже.

Скачать и бесплатную пробную версию Kutools for Excel от Yhao сейчас!


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

Когда вам нужно удалить некоторые символы с обеих сторон текстовых строк в Excel, вы можете объединить функции MID и LEN, чтобы создать формулу для решения этой задачи.

=MID(string, left_chars + 1, LEN(string) — (left_chars + right_chars)

  • string: Текстовая строка, из которой вы хотите удалить символы;
  • left_chars: Количество символов, которые нужно удалить слева;
  • right_chars: Количество символов, которые нужно удалить справа.

Например, вам нужно удалить первые 7 символов и последние 5 символов из текстовых строк одновременно, введите следующую формулу в пустую ячейку:

=MID(A4, 7+1, LEN(A4) — (7+5))

Внимание: В этой формуле: A4 это ячейка, из которой вы хотите удалить символы; Номер 7 это количество символов, которое вы хотите удалить с левой стороны; Номер 5 — это количество символов, которое вы хотите удалить с правой стороны.

Затем перетащите маркер заполнения туда, где вы хотите применить эту формулу, и вы получите результат, как показано на скриншоте ниже:


Удалите ненужные / специальные символы из текстовых строк

При импорте данных из другого места в Excel на ваш рабочий лист может быть вставлено множество специальных или нежелательных символов. Чтобы удалить эти нежелательные символы, такие как # @ $% ^ &, пробелы, числа, нечисловые числа, разрывы строк и т. Д., В этом разделе будут представлены несколько полезных методов, которые могут вам помочь.

2.1 Удаление некоторых специальных символов из текстовых строк

Если в текстовых строках есть специальные символы, такие как% ^ & * (), чтобы удалить этот тип символов, вы можете применить следующие три уловки.

 Удалите несколько специальных символов из текстовых строк с помощью функции ЗАМЕНА

Обычно в Excel вы можете вложить несколько функций ЗАМЕНЫ, чтобы ничего не заменять каждый конкретный символ, общий синтаксис следующий:

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(string_cell, char1, «»), char2, «»), char3, «»)

  • string_cell: Ячейка содержит текстовую строку, из которой вы хотите удалить специальные символы;
  • символ1, символ2, символ3: Нежелательные символы, которые вы хотите удалить.

Теперь скопируйте или введите формулу ниже в пустую ячейку:

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, «#«, «»), «&«, «»), «*«, «»), «%«, «»)

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

Tips: Если есть другие символы, которые вы хотите удалить, вам просто нужно вложить больше функций ЗАМЕНА в формулу.


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

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

1. Удерживайте Alt + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий код в окно модуля.

Код VBA: удалить несколько специальных символов из текстовых строк

Function RemoveUnwantedChars(Str As String, xchars As String)
'Updateby Extendoffice
    For Index = 1 To Len(xchars)
        Str = Replace(Str, Mid(xchars, Index, 1), "")
    Next
    RemoveUnwantedChars = Str
End Function

3. Затем закройте окно кода и вернитесь на рабочий лист, введите эту формулу = RemoveUnwantedChars (A2; $ D $ 2) в пустую ячейку, куда нужно вывести результат, а затем перетащите дескриптор заполнения вниз, чтобы получить нужные результаты, см. снимок экрана:

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


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

Если вы установили Kutools for Excel, С его Удалить символы функция, вы можете удалить все виды символов, такие как числовые символы, буквенные символы, непечатаемые символы … из списка ячеек по мере необходимости.

После установки Kutools for Excel, пожалуйста, сделайте так:

1. Выберите диапазон ячеек, из которого вы хотите удалить специальные символы, а затем нажмите Кутулс > Текст > Удалить символы, см. снимок экрана:

2. В Удалить символы диалоговое окно:

  • Проверьте На заказ вариант под Удалить символы .
  • Затем введите специальные символы в текстовое поле, которое вы хотите удалить.
  • Затем нажмите Ok or Применить кнопку, чтобы сразу удалить указанные вами символы. Смотрите скриншот:

Скачать и бесплатную пробную версию Kutools for Excel от Yhao сейчас!


2.2 Удалить все числа из текстовых строк

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

 Удалите числа из текстовых строк с помощью функции ЗАМЕНА

В Excel вложенная функция ЗАМЕНА может помочь заменить все числа ничем, поэтому вы можете использовать приведенную ниже формулу для удаления всех чисел из ячеек:

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,1,»»),2,»»),3,»»),4,»»),5,»»),6,»»),7,»»),8,»»),9,»»),0,»»)

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


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

Если у вас есть Excel 2019, 2021 или 365, новая функция TEXTJOIN также может помочь удалить числа из текстовых строк.

Скопируйте следующую формулу в пустую ячейку, а затем нажмите клавиши Ctrl + Shift + Enter вместе, чтобы получить первый результат:

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

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

Внимание: Этот TEXTJOIN доступен только в Excel 2019, 2021 и Office 365.


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

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

1. Удерживайте Alt + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий код в окно модуля.

Код VBA: удалить числа из текстовых строк

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

3. Затем закройте и выйдите из окна кода, вернитесь на рабочий лист и введите эту формулу: = RemoveNumbers (A2) в пустую ячейку, затем перетащите маркер заполнения вниз к ячейкам, к которым вы хотите применить эту формулу, см. снимок экрана:


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

Если вы устали от сложных формул, позвольте мне показать вам простой инструмент — Kutools for ExcelАвтора Удалить символы. С помощью этой удобной функции вы можете выполнить эту задачу всего за несколько щелчков мышью.

После установки Kutools for Excel, пожалуйста, сделайте так:

1. Выберите диапазон ячеек, в котором вы хотите удалить числа, а затем щелкните Кутулс > Текст > Удалить символы.

2. В Удалить символы диалоговом окне выполните следующие действия:

  • Проверьте Числовой вариант под Удалить символы .
  • Затем нажмите Ok or Применить кнопку, чтобы немедленно удалить числа. Смотрите скриншот:

Скачать и бесплатную пробную версию Kutools for Excel от Yhao сейчас!


2.3 Удаление нечисловых символов из текстовых строк

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

 Удалите нечисловые символы из текстовых строк с формулой в Excel 2016 и более ранних версиях

Если вы используете Excel 2016 или более ранние версии, вам следует применить сложную формулу для выполнения этой задачи, скопируйте или введите приведенную ниже формулу в пустую ячейку:

=SUMPRODUCT(MID(0&A2, LARGE(INDEX(ISNUMBER(—MID(A2, ROW(INDIRECT(«1:»&LEN(A2))), 1)) * ROW(INDIRECT(«1:»&LEN(A2))), 0), ROW(INDIRECT(«1:»&LEN(A2))))+1, 1) * 10^ROW(INDIRECT(«1:»&LEN(A2)))/10)

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

Внимание: Если числа в текстовой строке начинаются с 0, 0 будет потерян.


 Удалите нечисловые символы из текстовых строк с помощью функции TEXTJOIN в Excel 2019, 2021, 365

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

Скопируйте или введите следующую формулу в пустую ячейку и нажмите Shift + Ctrl + Enter вместе, чтобы получить первый правильный результат:

=TEXTJOIN(«»,TRUE,IFERROR(MID(A2,ROW(INDIRECT(«1:100″)),1)+0,»»))

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

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


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

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

1. Удерживайте Alt + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий код в окно модуля.

Код VBA: удаление нечисловых символов из текстовых строк

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

3. Затем закройте и выйдите из окна кода, вернитесь на рабочий лист и введите эту формулу: = Удалить числовое значение (A2) в пустую ячейку, затем перетащите дескриптор заполнения вниз к ячейкам, где вы хотите применить эту формулу, будут извлечены только числа, как показано ниже:


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

Чтобы напрямую удалить нечисловые символы в диапазоне ячеек, Kutools for ExcelАвтора Удалить символы Утилита может сделать это всего за несколько кликов.

После установки Kutools for Excel, пожалуйста, сделайте так:

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

2. В Удалить символы диалоговое окно, установите следующие операции:

  • Проверьте Нечисловой вариант под Удалить символы .
  • Затем нажмите Ok or Применить кнопку, чтобы немедленно удалить все нечисловые символы. Смотрите скриншот:

Скачать и бесплатную пробную версию Kutools for Excel от Yhao сейчас!


2.4. Разделите текст и числа из одной ячейки на два столбца

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

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

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

1. Удерживайте Alt + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий код в окно модуля.

Код VBA: разделите текст и числа из текстовых строк на два столбца

Function SplitText(pWorkRng As Range, pIsNumber As Boolean) As String
'Updateby Extendoffice
Dim xLen As Long
Dim xStr As String
xLen = VBA.Len(pWorkRng.Value)
For i = 1 To xLen
    xStr = VBA.Mid(pWorkRng.Value, i, 1)
    If ((VBA.IsNumeric(xStr) And pIsNumber) Or (Not (VBA.IsNumeric(xStr)) And Not (pIsNumber))) Then
        SplitText = SplitText + xStr
    End If
Next
End Function

3. Затем закройте и выйдите из окна кода, вернитесь на рабочий лист и введите эту формулу: = SplitText (A2; ЛОЖЬ) в пустую ячейку, а затем перетащите дескриптор заполнения вниз к ячейкам, которые вы хотите заполнить этой формулой, чтобы получить весь текст, см. снимок экрана:

4. А затем продолжайте вводить эту формулу: = SplitText (A2; ИСТИНА) в другую ячейку и перетащите дескриптор заполнения вниз к ячейкам, которые вы хотите заполнить этой формулой, чтобы получить числа, см. снимок экрана:


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

Если у вас есть Kutools for Excel, Его Разделить клетки Утилита может помочь вам разделить ячейки на несколько столбцов или строк на основе любых разделителей, заданной ширины или текста и числа.

После установки Kutools for Excel, пожалуйста, сделайте так:

1. Выберите диапазон ячеек, который вы хотите разделить, и нажмите Кутулс > Слияние и разделение > Разделить клетки, см. снимок экрана:

2. В Разделить клетки диалоговое окно, выберите Разделить на столбцы вариант под Тип раздел, а затем проверьте Текст и номер из Разделить на раздел, см. снимок экрана:

3, Затем нажмите Ok кнопка и еще один Разделить клетки появится диалоговое окно, выберите ячейку для вывода разделенного текста и чисел, а затем щелкните значок OK кнопка. Теперь вы можете видеть, что текст и числа в выбранных ячейках разделены сразу на два столбца, как показано ниже:

Скачать и бесплатную пробную версию Kutools for Excel от Yhao сейчас!


2.5 Удаление символов разрыва строки из текстовых строк

Разрыв строки — это то, что позволяет вам иметь несколько строк в одной ячейке в Excel. Иногда, когда вы копируете данные с веб-сайта или разделяете содержимое ячейки с помощью Alt + Enter вручную, вы получите перевод строки или возврат каретки. В некоторых случаях вы можете удалить разрывы строк, чтобы сделать содержимое ячейки одной строкой, как показано на скриншоте ниже. Здесь я расскажу о некоторых способах решения этой задачи в Excel.

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

В Excel вы можете использовать Найти и заменить для удаления разрывов строк, сделайте следующее:

1. Выберите диапазон данных, из которого вы хотите удалить разрывы строк.

2, Затем нажмите Главная > Найти и выбрать > Замените (или нажмите Ctrl + H ключи), чтобы перейти Найти и заменить диалоговое окно, см. снимок экрана:

3. В выскочившем Найти и заменить диалоговом окне выполните следующие действия:

  • Поместите курсор в Найти то, что поле и нажмите Ctrl + J на клавиатуре вы можете ничего не увидеть, но вставлен символ разрыва строки.
  • В разделе Заменить оставьте это поле пустым, чтобы просто удалить разрывы строк, или нажмите клавишу Пробел баr один раз, чтобы заменить разрывы строк пробелами.

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


 Удалите символы разрыва строки из текстовых строк с помощью функции ЗАМЕНА

Вы также можете создать формулу на основе функций ПОДСТАВИТЬ и СИМВОЛ, чтобы удалить разрывы строк из текстовых строк.

Пожалуйста, примените формулу ниже, чтобы получить результат:

=SUBSTITUTE(A2,CHAR(10),»»)

Tips: Функция ПОДСТАВИТЬ находит и заменяет символ CHAR (10), который представляет символ разрыва строки, ничем. Если вы хотите, чтобы результат был разделен запятой и пробелом, вы можете использовать следующую формулу:

=SUBSTITUTE(A2,CHAR(10),», «)


 Удалите символы разрыва строки из текстовых строк с помощью кода VBA

Если вам удобно использовать код VBA, здесь вы также найдете код, выполните следующие действия:

1. Удерживайте Alt + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий код в окно модуля.

Код VBA: удаление разрывов строк из текстовых строк

Sub RemoveCarriage()
'Updateby Extendoffice
Dim Rng As Range
Dim WorkRng As Range
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
For Each Rng In WorkRng
    Rng.Value = Replace(Rng.Value, Chr(10), "")
Next
End Sub

3, Затем нажмите F5 нажмите клавишу для запуска этого кода, и появится окно подсказки, выберите диапазон, в котором вы хотите удалить разрывы строк, см. снимок экрана:

4. А затем нажмите OK Кнопка, все разрывы строк будут удалены из выбранного диапазона данных.


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

Здесь, Kutools for ExcelАвтора Удалить символы функция также может помочь вам с легкостью удалять разрывы строк.

После установки Kutools for Excel, пожалуйста, сделайте так:

1. Выберите диапазон ячеек, в котором вы хотите удалить разрывы строк, а затем щелкните Кутулс > Текст > Удалить символы.

2. В Удалить символы диалоговое окно, установите следующие операции:

  • Проверьте Непечатаемый вариант под Удалить символы .
  • Затем нажмите Ok or Применить кнопку, чтобы удалить все разрывы строк из выбранного диапазона данных. Смотрите скриншот:

Скачать и бесплатную пробную версию Kutools for Excel от Yhao сейчас!


2.6 Удаление пробелов (ведущих, конечных, дополнительных или всех) из текстовых строк

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

 Удалите лишние пробелы (ведущие, конечные, лишние) из текстовых строк с помощью функции TRIM

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

Введите следующую формулу в пустую ячейку:

=TRIM(A2)

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


 Удалить все пробелы из текстовых строк

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

Используя функцию ЗАМЕНА

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

=SUBSTITUTE(A2,» «,»»)

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


Используя функцию «Найти и заменить»

В самом деле, Найти и заменить Функция в Excel также может помочь избавиться от всех пробелов в выбранных ячейках, выполните следующие действия:

1. Выберите диапазон данных, из которого вы хотите удалить все пробелы.

2, Затем нажмите Главная > Найти и выбрать > Замените (или нажмите Ctrl + H ключи), чтобы перейти к Найти и заменить диалоговое окно, в открывшемся Найти и заменить диалоговом окне выполните следующие действия:

  • Нажмите Пробел в Найти то, что поле;
  • В разделе Заменить поле, оставьте это поле пустым.

3. А затем нажмите Заменить все кнопка, все пробелы в выбранных ячейках будут удалены сразу. Смотрите скриншот:


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

Kutools for Excel имеет мощную особенность — Удалить пробелыс помощью этой утилиты вы можете не только удалить начальные, конечные и лишние пробелы, но и все пробелы из выбранных диапазонов в одном диалоговом окне, что повысит продуктивность вашей работы.

После установки Kutools for Excel, пожалуйста, сделайте так:

1. Выберите диапазон данных, из которого вы удалите пробелы, а затем щелкните Кутулс > Текст > Удалить пробелы. Смотрите скриншот:

2. В Удалить пробелы диалоговом окне выберите один тип пространства, которое вы хотите удалить из Тип пространства:

  • Удалите начальные пробелы, выберите Ведущие места вариант;
  • Удалите конечные пробелы, выберите Конечные пробелы вариант;
  • Удалите начальные и конечные пробелы сразу, пожалуйста, выберите Начальные и конечные пробелы вариант;
  • Удалите все лишние пробелы, выберите Все лишние места вариант;
  • Удалите все пробелы, выберите Все пространства опцию.

3, Затем нажмите Ok or Применить кнопку, вы получите нужный результат.

Скачать и бесплатную пробную версию Kutools for Excel от Yhao сейчас!


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

В этом разделе я представлю некоторые операции по удалению текста или символов до или после первого, последнего или n-го появления определенного символа.

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

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

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

Чтобы удалить текст или символы перед первым конкретным символом, вы можете создать формулу на основе функций RIGHT, LEN и FIND, общий синтаксис:

=RIGHT(cell, LEN(cell)-FIND(«char«, cell))

  • ячейка: Ссылка на ячейку или текстовую строку, из которой вы хотите удалить текст;
  • колесница: Конкретный разделитель, на основе которого вы хотите удалить текст.

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

=RIGHT(A2,LEN(A2)-FIND(«,«,A2))

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


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

Чтобы удалить все, что находится после первого определенного символа, вы можете использовать функции LEFT и FIND для получения результата, общий синтаксис:

=LEFT(cell,FIND(«char«,cell)-1)

  • ячейка: Ссылка на ячейку или текстовую строку, из которой вы хотите удалить текст;
  • колесница: Конкретный разделитель, на основе которого вы хотите удалить текст.

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

=LEFT(A2,FIND(«,«,A2)-1)


3.2 Удаление текста до или после N-го вхождения символа

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

 Удалить текст перед N-м вхождением символа с формулой

Чтобы удалить текст перед N-м вхождением определенного символа, вам может помочь следующая формула, общий синтаксис:

=RIGHT(cell,LEN(cell)-FIND(«#»,SUBSTITUTE(cellchar«,»#»,N)))

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

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

=RIGHT(A2,LEN(A2)-FIND(«#»,SUBSTITUTE(A2,«,»#»,2)))

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

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


 Удалить текст после N-го вхождения символа с формулой

Чтобы удалить текст после N-го вхождения определенного разделителя, функции LEFT, SUBSTITUTE и FIND могут оказать вам услугу. Общий синтаксис:

=LEFT(cell, FIND(«#», SUBSTITUTE(cell, «char«, «#», N)) -1)

  • ячейка: Ссылка на ячейку или текстовую строку, из которой вы хотите удалить текст;
  • колесница: Конкретный разделитель, на основе которого вы хотите удалить текст;
  • N: Появление символа, после которого следует удалить текст.

Как только вы поймете основной синтаксис, скопируйте или введите приведенную ниже формулу в пустую ячейку:

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

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

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


 Удаление текста до или после N-го символа с помощью функции, определяемой пользователем

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

1. Удерживайте Alt + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий код в окно модуля.

Код VBA: удалить текст до или после N-го вхождения символа

Function RemoveTextOccurrence(Str As String, Delimiter As String, Occurrence As Integer, IsAfter As Boolean)
Dim xStr As String
Dim xStrLen, xF, xIntStart As Integer
xStr = Str
xStrLen = Len(xStr)
xIntStart = 1
For xF = 1 To Occurrence
xIntStart = InStr(xIntStart + 1, xStr, Delimiter, vbTextCompare)
If (xIntStart = 0) Or (xIntStart < 0) Then
    If IsAfter Then
    RemoveTextOccurrence = xStr
    Else
    RemoveTextOccurrence = ""
    End If
    Exit Function
End If
Next
If IsAfter Then
    RemoveTextOccurrence = Mid(Str, 1, xIntStart - 1)
Else
    RemoveTextOccurrence = Mid(Str, xIntStart + 1)
End If
End Function

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

Удалить текст перед вторым вхождением запятой:

=RemoveTextOccurrence(A2, «, «, 2, FALSE)

Удалить текст после второго вхождения запятой

=RemoveTextOccurrence(A2, «, «, 2, TRUE)


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

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

 Удалить текст перед последним вхождением символа с формулой

Чтобы удалить все символы перед последним вхождением символа, общий синтаксис:

=RIGHT(cell,LEN(cell)-SEARCH(«#»,SUBSTITUTE(cellchar«,»#»,LEN(cell)-LEN(SUBSTITUTE(cellchar«,»»)))))

  • ячейка: Ссылка на ячейку или текстовую строку, из которой вы хотите удалить текст;
  • колесница: Конкретный разделитель, на основе которого вы хотите удалить текст;

Теперь, если вам нужно удалить текст до последнего появления запятой, скопируйте или введите приведенную ниже формулу в пустую ячейку:

=RIGHT(A2,LEN(A2)-SEARCH(«#»,SUBSTITUTE(A2,«,»#»,LEN(A2)-LEN(SUBSTITUTE(A2,«,»»)))))

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

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


 Удалять текст после последнего вхождения символа с формулами

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

=LEFT(cell,FIND(«#»,SUBSTITUTE(cellchar«,»#»,LEN(cell)-LEN(SUBSTITUTE(cellchar«,»»))))-1)

  • ячейка: Ссылка на ячейку или текстовую строку, из которой вы хотите удалить текст;
  • колесница: Конкретный разделитель, на основе которого вы хотите удалить текст;

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

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

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


3.4 Удалить текст между скобками

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

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

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

1. Выберите список данных, в котором вы хотите удалить тексты между скобками.

2, Затем нажмите Главная > Найти и выбрать > Замените (или нажмите Ctrl + H ключей), чтобы перейти в диалоговое окно «Найти и заменить» в Найти и заменить диалоговом окне выполните следующие операции:

  • В разделе Найти то, что поле, тип (*) в текстовое поле;
  • В разделе Заменить поле, оставьте это поле пустым.

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

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


 Удалить текст между скобками с формулой

Помимо функции «Найти и заменить», вы также можете использовать формулу для решения этой задачи в Excel, общий синтаксис:

=SUBSTITUTE(text,MID(LEFT(text,FIND(«)»,text)),FIND(«(«,text),LEN(text)),»»)

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

Теперь скопируйте или введите следующую формулу в пустую ячейку, в которой вы хотите получить результат:

=SUBSTITUTE(A2,MID(LEFT(A2,FIND(«)»,A2)),FIND(«(«,A2),LEN(A2)),»»)

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

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

=IFERROR(SUBSTITUTE(A2,MID(LEFT(A2,FIND(«)»,A2)),FIND(«(«,A2),LEN(A2)),»»),A2)


 Удалите текст между скобками с помощью функции, определяемой пользователем

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

1. Удерживайте Alt + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий код в окно модуля.

Код VBA: удалить текст между скобками

Function remtxt(ByVal str As String) As String
'Updateby Extendoffice
  While InStr(str, "(") > 0 And InStr(str, ")") > InStr(str, "(")
    str = Left(str, InStr(str, "(") - 1) & Mid(str, InStr(str, ")") + 1)
  Wend
  remtxt = Trim(str)
End Function

3. Затем вернитесь к рабочему листу и введите эту формулу в пустую ячейку: = remtxt (A2), затем перетащите дескриптор заполнения вниз к ячейкам, в которых вы хотите применить эту формулу, весь текст во всех круглых скобках, включая круглые скобки, будет удален, как показано на скриншоте ниже:


Удалить слова из текстовых строк

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

4.1 Удалить первое или последнее слово из текстовой строки

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

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

Удалите первые слова из списка текстовых строк, вы можете создать простую формулу на основе функций RIGHT, LEN и FIND, общий синтаксис:

=RIGHT(text,LEN(text)-FIND(» «,text))

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

Теперь введите или скопируйте следующую формулу в пустую ячейку:

=RIGHT(A2,LEN(A2)-FIND(» «,A2))

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

Tips: Если вам нужно удалить первые N слов из ячеек, используйте следующую формулу:

=MID(TRIM(text),1+FIND(«~»,SUBSTITUTE(TRIM(text),» «,»~»,N)),255)

  • текст: Текстовая строка или ссылка на ячейку, из которой вы хотите удалить первые n слов;
  • N: Указывает, сколько слов вы хотите удалить из начала текстовой строки.

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

=MID(TRIM(A2),1+FIND(«~»,SUBSTITUTE(TRIM(A2),» «,»~»,2)),255)


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

Чтобы удалить последнее слово из текстовых строк, вы также можете использовать формулу для решения этой задачи, общий синтаксис:

=LEFT(TRIM(text),FIND(«~»,SUBSTITUTE(text,» «,»~»,LEN(TRIM(text))-LEN(SUBSTITUTE(TRIM(text),» «,»»))))-1)

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

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

=LEFT(TRIM(A2),FIND(«~»,SUBSTITUTE(A2,» «,»~»,LEN(TRIM(A2))-LEN(SUBSTITUTE(TRIM(A2),» «,»»))))-1)

Tips: Чтобы удалить последние N слов из списка ячеек, общий синтаксис:

=LEFT(text,FIND(«~»,SUBSTITUTE(text,» «,»~»,LEN(text)-LEN(SUBSTITUTE(text,» «,»»))-(N-1))))

  • текст: Текстовая строка или ссылка на ячейку, из которой вы хотите удалить последние n слов;
  • N: Указывает количество слов, которые вы хотите удалить из конца текстовой строки.

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

=LEFT(A2,FIND(«~»,SUBSTITUTE(A2,» «,»~»,LEN(A2)-LEN(SUBSTITUTE(A2,» «,»»))-(3-1))))


4.2 Удаление повторяющихся символов или слов в ячейке

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

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

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

1. Удерживайте Alt + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий код в окно модуля.

Код VBA: удалить повторяющиеся символы в ячейке

Function RemoveDupeschars(pWorkRng As Range) As String
'Updateby Extendoffice
Dim xValue As String
Dim xChar As String
Dim xOutValue As String
Set xDic = CreateObject("Scripting.Dictionary")
xValue = pWorkRng.Value
For i = 1 To VBA.Len(xValue)
    xChar = VBA.Mid(xValue, i, 1)
    If xDic.Exists(xChar) Then
    Else
        xDic(xChar) = ""
        xOutValue = xOutValue & xChar
    End If
Next
RemoveDupeschars = xOutValue
End Function

3. Затем закройте окно кода, вернитесь на рабочий лист и введите эту формулу = RemoveDupeschars (A2) в пустую ячейку, кроме ваших данных, а затем перетащите маркер заполнения в ячейки, которые вы хотите применить к этой формуле, см. снимок экрана:

ВниманиеA2 это ячейка данных, из которой вы хотите удалить повторяющиеся символы.

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


 Удалите повторяющиеся слова в ячейке с помощью функции, определяемой пользователем

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

1. Удерживайте Alt + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий код в окно модуля.

Код VBA: удаление повторяющихся слов в ячейке

Function RemoveDupeswords(txt As String, Optional delim As String = " ") As String
'Updateby Extendoffice
    Dim x
    With CreateObject("Scripting.Dictionary")
        .CompareMode = vbTextCompare
        For Each x In Split(txt, delim)
            If Trim(x) <> "" And Not .exists(Trim(x)) Then .Add Trim(x), Nothing
        Next
        If .Count > 0 Then RemoveDupeswords = Join(.keys, delim)
    End With
End Function

3. Затем закройте окно кода, вернитесь на рабочий лист и введите эту формулу = RemoveDupeswords (A2; «,») в пустую ячейку, кроме ваших данных, а затем перетащите маркер заполнения в ячейки, которые вы хотите применить к этой формуле, см. снимок экрана:

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

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


4.3 Обрезать текстовую строку до N слов

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

 Обрезать текстовую строку до N слов с помощью формулы

Чтобы обрезать текстовую строку до N слов, вы можете создать формулу на основе функций LEFT, FIND и SUBSTITUTE, общий синтаксис:

=LEFT(text,FIND(«~»,SUBSTITUTE(text,» «,»~»,N))-1)

  • текст: Текстовая строка или ссылка на ячейку, которую вы хотите обрезать;
  • N: Количество слов, которые вы хотите сохранить слева от данной текстовой строки.

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

=LEFT(A2,FIND(«~»,SUBSTITUTE(A2,» «,»~»,B2))-1)

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


 Обрезать текстовую строку до N слов с помощью функции, определяемой пользователем

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

1. Удерживайте Alt + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий код в окно модуля.

Код VBA: обрезать текстовую строку до N слов

Function GetNWords(StrWords As String, Num_of_Words As Integer) As String
'Updateby Extendoffice
Dim xArr
Dim xRes As String
Dim xF As Integer
xStr = StrWords
If (Num_of_Words < 1) Then
    GetNWords = ""
    Exit Function
End If
xArr = Split(xStr, " ")
xRes = ""
On Error Resume Next
For xF = 0 To UBound(xArr)
    If Trim(xArr(xF)) <> "" Then
    Num_of_Words = Num_of_Words - 1
        If xRes = "" Then
            xRes = Trim(xArr(xF))
        Else
            xRes = xRes & " " & Trim(xArr(xF))
        End If
    End If
    If Num_of_Words = 0 Then Exit For
Next
If Num_of_Words = 0 Then
    GetNWords = xRes & "..."
Else
    GetNWords = xRes & "..."
End If
End Function

3. Затем закройте и выйдите из окна кода, вернитесь на рабочий лист и введите эту формулу: = GetNWords (A2; B2) в пустую ячейку, а затем перетащите дескриптор заполнения вниз, чтобы применить эту формулу к другим ячейкам, сохраняется только первое определенное количество слов, как показано ниже:


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы и хранение данных; Разделить содержимое ячеек; Объедините повторяющиеся строки и сумму / среднее значение… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Избранные и быстро вставляйте формулы, Диапазоны, диаграммы и изображения; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Группировка сводной таблицы по номер недели, день недели и другое … Показать разблокированные, заблокированные ячейки разными цветами; Выделите ячейки, у которых есть формула / имя

вкладка kte 201905


Вкладка Office — предоставляет интерфейс с вкладками в Office и значительно упрощает вашу работу

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Понравилась статья? Поделить с друзьями:
  • Vba excel удалить строку по условию
  • Vba excel удалить строку в listbox
  • Vba excel удалить содержимое ячеек
  • Vba excel удалить пустые строки в диапазоне
  • Vba excel удалить примечание в ячейке