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

 

BobbyJo

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

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

Уважаемые знатоки, подскажите решение
Пример:
$%Раз, два, три$%четыре, пять$%шесть, семь{}
Надо удалить все что идет от последнего $% до {}
Чтобы получить:
$%Раз, два, три$%четыре, пять

 

Это очень похоже на проблему нахождения последнего пробела в ячейке — здесь на форуме это где-то было. Найдя позицию можно с помощью функции ЛЕВСИМВ получить нужный результат.
В VBA — это проще простого с помощью функции INSTRREV.

С уважением,
Федор/Все_просто

 

BobbyJo

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

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

На первый взгляд обычная замена.. но стандартной заменой заменяет с первого знака $% до {} а надо с последнего.

 

Все_просто

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

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

#4

26.10.2014 23:23:11

Я немного о другом пишу. Так и быть, напишу формулу: в ячейке A1 — $%Раз, два, три$%четыре, пять$%шесть, семь{}, в ячейке А2 — $%.
Это находит позицию:

Код
=НАЙТИ("@";ПОДСТАВИТЬ(A1;A2;"@";(ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;A2;"")))/ДЛСТР(A2)))-1

А это итоговая формула:

Код
=ПСТР(A1;1;НАЙТИ("@";ПОДСТАВИТЬ(A1;A2;"@";(ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;A2;"")))/ДЛСТР(A2)))-1) 

Изменено: Все_просто26.10.2014 23:25:19

С уважением,
Федор/Все_просто

 

BobbyJo

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

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

Мне надо от $% до {}. В формуле только @

 

Добавим книгу для пущей явности.

С уважением,
Федор/Все_просто

 

Kuzmich

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

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

#7

27.10.2014 00:11:47

UDF

Код
Function iStroka(iRange As Range) As String
    iStroka = Left(iRange, Len(iRange) - 2 - Len(Split(iRange, "$%")(UBound(Split(iRange, "$%")))))
End Function

 
 

BobbyJo

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

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

Спасибо,частично подходит. Удаляет все знаки от $%. Но в идеале надо чтоб удаляло до {}

 

Kuzmich

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

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

=iStroka(A1) получается $%Раз, два, три$%четыре, пять

 

BobbyJo

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

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

 

Сергей

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

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

#11

27.10.2014 07:22:00

ну и еще одной формулой

Код
=ЛЕВСИМВ(A1;ПОИСК("/";ПОДСТАВИТЬ(A1;"$";"/";ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;"$";""))))-1) 

Лень двигатель прогресса, доказано!!!

 

Kuzmich

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

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

#12

27.10.2014 11:49:58

Цитата
куда надо udf вводить?

В модуль (в редакторе VB) Insert — Module

 

BobbyJo

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

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

Все ваши формулы удаляют от но не до. Мне надо текст от $%  до {}

 

vikttur

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

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

=предложенная_формула&»{}»
Но ведь в первом сообщении показан пример не «до», а «включительно». Что нужно?
Почему помогающие прикрепляют файлы, а у автора нет ни одного? Покажите на примере

 

JayBhagavan

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

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

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

#15

27.10.2014 18:27:07

Код
=ЛЕВБ(ПОДСТАВИТЬ(A1;"$%";"@";(ДЛСТР(ЛЕВБ(A1;ПОИСК("{}";A1)-1))-ДЛСТР(ПОДСТАВИТЬ(ЛЕВБ(A1;ПОИСК("{}";A1)-1);"$%";)))/2);ПОИСК("@";ПОДСТАВИТЬ(A1;"$%";"@";(ДЛСТР(ЛЕВБ(A1;ПОИСК("{}";A1)-1))-ДЛСТР(ПОДСТАВИТЬ(ЛЕВБ(A1;ПОИСК("{}";A1)-1);"$%";)))/2))-1)

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

19 / 8 / 7

Регистрация: 26.12.2013

Сообщений: 167

1

Удаление текста между символами

18.03.2015, 11:21. Показов 11465. Ответов 10


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

Для примера:
Есть текст

Здесь <находится> текст, который <нужно> обработать>

. Из него надо удалить все, что находится между < и > (сами скобки тоже). Должно получится

Здесь текст, который обработать>

Думал сделать это через подстановочный знак *, не получилось почему то.



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

18.03.2015, 11:21

10

5942 / 3154 / 698

Регистрация: 23.11.2010

Сообщений: 10,524

18.03.2015, 11:24

2

Найти <*>
Заменить на пусто



0



19 / 8 / 7

Регистрация: 26.12.2013

Сообщений: 167

18.03.2015, 11:37

 [ТС]

3

Fairuza, надо сделать формулой



0



15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

18.03.2015, 11:58

4

Функция на VBA устроит? Формулой можно удалить один фрагмент, больше — вряд ли.



1



15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

18.03.2015, 14:40

5

Вот, пока не забыл



1



19 / 8 / 7

Регистрация: 26.12.2013

Сообщений: 167

19.03.2015, 17:58

 [ТС]

6

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



0



0 / 0 / 0

Регистрация: 12.01.2016

Сообщений: 2

18.01.2019, 23:09

7

а как сделать, чтобы вместо <> были скобки () ?



0



Казанский

15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

19.01.2019, 00:38

8

S-A-S-C-H, в смысле, заменить «<«, «>» на «(«, «)»? Функция ПОДСТАВИТЬ или Ctrl+h.
Или удалить текст между скобками? Тогда в функции

Visual Basic
1
  re.Pattern = "(.*?) ?"



1



0 / 0 / 0

Регистрация: 12.01.2016

Сообщений: 2

19.01.2019, 00:58

9

удалить текст между скобками; спасибо, красота!



0



0 / 0 / 0

Регистрация: 01.09.2019

Сообщений: 1

01.09.2019, 20:25

10

Спасибо! Работает!



0



0 / 0 / 0

Регистрация: 31.03.2022

Сообщений: 1

31.03.2022, 18:48

11

Спасибо тебе мил человек, дай Бог тебе всего



0



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

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

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

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

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

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

Содержание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вот пример:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

С помощью Visual Basic

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

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

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

Код Visual Basic:

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

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

Next i   E

nd Function

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

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

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

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

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

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

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

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

Это не так просто без VBA, но есть еще способ.

Либо (как предлагает yu_ominae) просто используйте формулу, подобную этой, и заполните ее автоматически:

=IFERROR(SUBSTITUTE(A2,MID(LEFT(A2,FIND("}",A2)),FIND("{",A2),LEN(A2)),""),A2)

Другим способом были бы итеративные вычисления (зайдите в настройки -> формулы -> отметьте кнопку «включить итеративные вычисления»)
Чтобы сделать это сейчас в одной ячейке, вам нужна 1 вспомогательная ячейка (для моего примера мы будем использовать C1) и используйте формулу как это в B2 и автозаполнение:

=IF($C$1,A2,IFERROR(SUBSTITUTE(B2,MID(LEFT(B2,FIND("}",B2)),FIND("{",B2),LEN(B2)),""),B2))

Поместите «1» в C1, и все формулы в B:B покажут значения A:A. Теперь перейдите к C1 и нажмите клавишу Del несколько раз (вы увидите «{}»- части исчезают), пока все не будет выглядеть так, как вы этого хотите.

РЕДАКТИРОВАТЬ: Чтобы сделать это через VBA, но без регулярных выражений, вы можете просто поместить это в модуль:

Public Function DELBRC(ByVal str As String) As String
  While InStr(str, "{") > 0 And InStr(str, "}") > InStr(str, "{")
    str = Left(str, InStr(str, "{") - 1) & Mid(str, InStr(str, "}") + 1)
  Wend
  DELBRC = Trim(str)
End Function

а затем в рабочем листе непосредственно используйте:

=DELBRC(A2)

Если у вас остались какие-либо вопросы, просто спросите;)

Содержание:

  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.

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

Как удалить в Excel все между двумя словами?
Например, чтобы из значения «у лукоморья дуб зеленый, златая цепь на дубе том» убралось все между словами «лукоморья» и «дубе», т.е. «у лукоморья дубе том»

задан 18 апр 2020 в 8:44

Row Reverse's user avatar

1

используй функции левсим(), правсим(), поиск() и длстр() для нарезки фразы, поиска слов и расчета длины фразы/слов. Твой пример решается кодом ниже (A2 — это ячейка с первоначальной фразой):

=ЛЕВСИМВ(A2;ПОИСК("лукоморья";A2;1)+ДЛСТР("лукоморья"))&ПРАВСИМВ(A2;ДЛСТР(A2)-ПОИСК("дубе";A2;1)+1)

ответ дан 18 апр 2020 в 8:59

Oliv's user avatar

OlivOliv

683 бронзовых знака

3

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

Подтягиваем первые 2 слова и 2 последних вместе с пробелами

=REGEXEXTRACT(A36; "^(([^s]+s){2}).*((s[^s]+){2})$")

Колонка A и C всегда будет содержать требуемое значение, не зависимо от содержания строки.

ответ дан 18 апр 2020 в 9:53

Gedweb's user avatar

GedwebGedweb

2,13613 серебряных знаков22 бронзовых знака

=ЗАМЕНИТЬ(A1;НАЙТИ("у лукоморья";A1)+12;99;"дубе том")

Здесь 99 — не меньше длины текста.

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

ответ дан 18 апр 2020 в 12:21

vikttur_Stop_RU_war_in_UA's user avatar

Удалить все что между знаками < и >

virus555

Дата: Суббота, 17.05.2014, 22:41 |
Сообщение № 1

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

Ранг: Прохожий

Сообщений: 2


Репутация:

0

±

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


Excel 2010

Мне нужна помощь допилить функцию:

[vba]

Код

Function МояФункция(Arg1 As Range)
          Arg1.Replace What:=»<*>», Replacement:=»», LookAt:=xlPart, _
          SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
          ReplaceFormat:=False
End Function

[/vba]

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

Я начал решать это проблему в соседнем форуме (http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=57238&%3BFID=1) но там видимо все на выходных.

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

7618200.xlsm
(21.9 Kb)

Сообщение отредактировал virus555Суббота, 17.05.2014, 22:49

 

Ответить

virus555

Дата: Воскресенье, 18.05.2014, 00:26 |
Сообщение № 2

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

Ранг: Прохожий

Сообщений: 2


Репутация:

0

±

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


Excel 2010

В общем нашел такой код, который выполняет мою задачу:

[vba]

Код

Function StripTags(ByVal html As String) As String
     Dim text As String
     Dim accumulating As Boolean
     Dim n As Integer
     Dim c As String

     text = «»
     accumulating = True

     n = 1
     Do While n <= Len(html)

         c = Mid(html, n, 1)
         If c = «<» Then
             accumulating = False
         ElseIf c = «>» Then
             accumulating = True
         Else
             If accumulating Then
                 text = text & c
             End If
         End If

         n = n + 1
     Loop

     StripTags = text
End Function

[/vba]

 

Ответить

tsap

Дата: Воскресенье, 18.05.2014, 14:21 |
Сообщение № 3

Группа: Проверенные

Ранг: Участник

Сообщений: 60


Репутация:

6

±

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


2013

Вариант на регулярных выражениях

[vba]

Код

Function МояФункция(Arg1 As Range)
Dim s As String
Dim RegEx As Object

s = Arg1.Value
Set RegEx = CreateObject(«vbscript.regexp»)
With RegEx
        .Global = True
        .IgnoreCase = True
        .MultiLine = True
        .Pattern = «<[^>]+>»
End With

МояФункция = RegEx.Replace(s, «»)
Set RegEx = Nothing

End Function

[/vba]
(взят отсюда:)

Показать скрытое содержание
http://stackoverflow.com/questions/16924311/remove-text-between-specific-tags-in-microsoft-excel


Сообщение отредактировал tsapВоскресенье, 18.05.2014, 14:23

 

Ответить

Alex_ST

Дата: Понедельник, 19.05.2014, 10:36 |
Сообщение № 4

Группа: Друзья

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

Сообщений: 3176


Репутация:

604

±

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


2003

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

Ну ведь Вы же забыли присвоить значение самой функции МояФункция, вот и выполняется действие над аргументом, а не вывод значения в ячейку, куда эта UDF вписана
[vba]

Код

Function МояФункция(Arg1 As Range)
          МояФункция = Arg1.Replace What:=»<*>», Replacement:=»», LookAt:=xlPart, _
          SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
          ReplaceFormat:=False
End Function

[/vba]



С уважением,
Алексей
MS Excel 2003 — the best!!!

Сообщение отредактировал Alex_STПонедельник, 19.05.2014, 10:37

 

Ответить

Download PC Repair Tool to quickly find & fix Windows errors automatically

While working with Microsoft Excel sheets, you might need to remove the first few characters, or last few characters, or both from the text. Removing the first few characters from a column of texts is useful when you need to remove titles (Eg. Dr., Lt.). Similarly, removing the last few characters could be useful while removing phone numbers after names. In this article, spaces are counted as characters.

This post will show you how to remove the first or last few characters or certain position characters from the text in Microsoft Excel. We will cover the following topics:

  1. Remove the first few characters from a column of texts
  2. Remove the last few characters from a column of texts
  3. Remove both the first few & last few characters from a column of texts.

Remove the first few characters from a column of texts

The syntax to remove the first few characters from a column of texts is:

=RIGHT(<First cell with full text>, LEN(<First cell with full text>)-<Number of characters to be removed>)

Where <First cell with full text> is cell location of the first cell in the column with the full texts. <Number of characters to be removed> are the number of characters which you intend to remove from the left side of the text.

Eg. If we have a column with full text from cell A3 to A7 and need the text after removing the first 2 characters in column C, the formula would be:

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

Remove text before or after a specific character in Excel

Write this formula in cell C3. Hit Enter, and it will display the text in cell A3 without the first 2 characters in cell C3. Click anywhere outside the cell C3 and then back in the cell C3 to highlight the Fill option. Now drag the formula to cell C7. This will give the texts without the first 2 characters in column C for the initial texts in columns A.

Remove the last few characters from a column of texts

The syntax to remove the last few characters from a column of texts is:

=LEFT(<First cell with full text>, LEN(<First cell with full text>)-<Number of characters to be removed>)

In this formula, <First cell with full text> is cell location of the first cell in the column with the full texts. <Number of characters to be removed> are the number of characters which you intend to remove from the right side of the text.

Eg. Let us consider a case in which we have a column with full texts from cell A3 to A7 and need the text after removing the last 9 characters in column D; the formula would be:

=LEFT(A3, LEN(A3)-9)

Remove last few characters

Now, write this formula in cell D3. Hit Enter, and it will display the text in cell A3 without the last 9 characters in cell D3. Click anywhere outside the cell D3 and then back in the cell D3 to highlight the Fill option. Now drag the formula to cell D7. This will give the texts without the last 9 characters in column D for the initial texts in columns A.

Remove both the first few & last few characters from a column of texts

If you intend to remove both the first few and last few characters from a column of texts, the syntax of the formula would be as follows:

=MID(<First cell with full text>,<Number of characters to be removed from the left side plus one>,LEN(<First cell with full text>)-<Total number of characters you intend to remove>)

Eg. If we have a column with full texts in column A from cell A3 to A7 and need the texts without the first 2 characters and last 9 characters in column E from cell E3 to E7, the formula would become:

=MID(A3,3,LEN(A3)-11)

Remove both first and last few characters

Write this formula in cell E3. Hit Enter, and it will display the text in cell A3 without the first 2 and last 9 characters in cell E3.Click anywhere outside the cell E3 and then back in the cell E3 to highlight the Fill option. Now drag the formula to cell E7. This will give the texts without the first 2 and last 9 characters in column E for the initial texts in columns A.

I hope this post helps you remove the first or last few characters or certain position characters from the text in Microsoft Excel.

Ezoic

Karan is a B.Tech, with several years of experience as an IT Analyst. He is a passionate Windows user who loves troubleshooting problems and writing about Microsoft technologies.

Значение в ячейке A2 — «Blabla_Donkey_Rhino». Мне нужна формула, которая удаляет текст между двумя подчеркиваниями и одним из подчеркиваний, чтобы вернуть значение «Blabla_Rhino»

В ячейке

A2

Blabla_Donkey_Rhino

Desired Output

Blabla_Rhino

2 ответа

Лучший ответ

Если альтернатива «заменить» vba вам не нужна, вы можете попробовать просто объединить начальную и конечную части текста, используя что-то вроде этого:

=LEFT(A2,FIND("_",A2))&RIGHT(A2,LEN(A2)-FIND("_",A2,FIND("_",A2)+1))

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

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

=LEFT(A2,FIND("_",A2))&RIGHT(A2,LEN(A2)-FIND("_",A2,FIND("_",A2)+1)+1)


0

FocusWiz
2 Июл 2018 в 19:20

VBA этот простой UDF

Function firstAndThird(str as string) as string
    firstAndThird = split(str,"_")(0) & "_" & split(str,"_")(2)
End Function

Поместите код в модуль и вызовите с листа:

=firstAndThird(A2)

enter image description here


Если у вас Office 365 Excel, вы можете использовать TEXTJOIN в качестве формулы массива:

=TEXTJOIN("_",,TRIM(MID(SUBSTITUTE(A2,"_",REPT(" ",99)),{1,198},99)))

Формула массива подтвердите, нажав Ctrl-Shift-Enter вместо Enter при выходе из режима редактирования.

enter image description here


0

Scott Craner
2 Июл 2018 в 20:06

Понравилась статья? Поделить с друзьями:
  • Удалить текст в ячейке excel после символами
  • Удалить текст в ячейках excel vba
  • Удалить текст в рисунке word
  • Удалить текст в word от закладки до закладки
  • Удалить таблицу оставив содержимое word