Как формулой Excel вытащить текст в скобках
Далее будет приведена формула, позволяющая извлечь текст находящийся в круглых скобках, но в начале хотелось бы подчеркнуть, что Вы находитесь на сайте, основное назначение которого помощь в изучении Excel как «с нуля» так и продвинутый уровень. Обучение, советы, разъяснения формул и всего, что связано с Excel проводиться дистанционно по Skype.
Скорее всего, если Вы активно обрабатываете данные в Excel, а особенно разные списки, то у Вас возникала необходимость вытащить (извлечь) текст находящийся в скобках. Причем текстовых строк (ячеек) много, а текст в скобках находится иногда в начале, иногда в средине, а бывает, что вообще, в конце ячейки.
Применив формулу с этой страницы, Вы избавитесь от ручного труда и Вам не придется копировать и вставлять каждый фрагмент по отдельности. Формула реально сэкономит Вам массу сил и времени.
С помощью этой формулы можно извлечь текст (любую последовательность символов), находящийся между открывающейся и закрывающейся скобками.
Формула позволяющая извлечь текст из скобок
=ПСТР(B2;1+ПОИСК(«(«;B2);ПОИСК(«)»;B2)-ПОИСК(«(«;B2)-1)
Комментарии:
— «обрабатываемый» текст должен находиться в определенной ячейке (в примере это яч. B2)
— если в ячейке B2 не будет открывающей и закрывающей скобки, то формула вернет значение ошибки #ЗНАЧ!
— если в яч. B2 будет больше одной открывающей и/или закрывающей скобки, то формула вытащит все то, что находится между первой (слева-направо) открывающей скобкой и первой закрывающей скобкой
Пример текста (это афоризм, а в скобках указан автор)
Чтобы победить, надо ожидать, что победишь. (Ричард Бах)
и результат (формула извлекла текст из скобок)
Ричард Бах
Несмотря на то, что эта формула очень полезная и востребованная, но она может не учитывать ряд специфических нюансов. Например, может потребоваться достать из скобок не только текст, который находится между первой парой скобок, но и текст, находящийся во второй паре скобок или же Вам, наоборот, необходимо оставить только то, что не в скобках..
Все решения со всеми нюансами по объективным причинам выложить невозможно. Остались вопросы или формула не делает то, что Вам нужно? Оставьте сообщение в нижней части страницы, или обратитесь за помощью по программе Excel.
ExcelSkype.Ru – единственный сайт в русскоязычном Internet специализирующийся на дистанционном консультировании и обучении Excel. Помощь или обучение производится через Skype. Все контакты ТУТ.
В этом учебном материале по Excel мы рассмотрим примеры того, как извлечь текст между круглыми скобками.
Основная формула
=ПСТР(текст;ПОИСК(«(«;текст)+1;ПОИСК(«)»;текст)-ПОИСК(«(«;текст)-1) |
Описание
Для выделения текста между скобками, фигурными скобками, скобками и т.д. Можно использовать формулу, основанную на функции ПСТР, с помощью функции ПОИСК. В показанном примере формула C5 имеет следующий вид:
=ПСТР(B5;ПОИСК(«(«;B5)+1;ПОИСК(«)»;B5)-ПОИСК(«(«;B5)-1)+0 |
Пояснение
В основе этой формулы лежит функция ПСТР, которая извлекает из текста определенное количество символов, начиная с определенного места. Чтобы выяснить, с чего начать извлечение текста, мы используем это выражение:
Это находит левые круглые скобки и добавляет 1, чтобы получить позицию первого символа внутри круглых скобок. Чтобы выяснить, сколько символов нужно извлечь, мы используем это выражение:
ПОИСК(«)»;B5)-ПОИСК(«(«;B5)-1 |
Это определяет местонахождение вторых скобок в тексте и вычитает позицию первых скобок (без единицы), чтобы получить общее количество символов, которые необходимо извлечь. Используя эту информацию, ПСТР извлекает только текст внутри круглых скобок.
Наконец, поскольку в этом конкретном примере мы хотим получить число в качестве окончательного результата, мы добавляем ноль к текстовому значению, возвращаемому ПСТР:
Эта математическая операция заставляет Excel преобразовывать текстовые значения в числа. Если вам не нужно число в конце, этот шаг не требуется.
Пытаюсь вставить две формулы в одну, чтобы извлечь из текста цифры заключенные в скобки.
Эта формула извлекает цифры после скобки и далее лишнее.
=ПСТР(A4;ПОИСК(«(«;A4;1)+1;50)
Эта дополнительная формула убирает лишнее, но как эти формулы объединить в одну?
=ПОДСТАВИТЬ(C4;»)»;»»;1)*1
См файл.
=--ПСТР(A3;ПОИСК("(";A3)+1;ПОИСК(")";A3)-ПОИСК("(";A3)-1)
=-ПСТР(ЛЕВБ(A3;ПОИСК(")";A3));ПОИСК("(";A3);9)
Спасибо, помогающим!
Мне тоже удалось самостоятельно создать формулу, недостаток она больше ваших по длине.
=ПОДСТАВИТЬ(ПСТР(A3;ПОИСК(«(«;A3;1)+1;50);ПСТР(A3;ПОИСК(«)»;A3;1);50);»»)*1
Уважаемый gling, пожалуйста проверьте свою формулу ещё раз.
А что её проверять, в ней что то не так? Вопрос был
Цитироватькак эти формулы объединить в одну?
, на него и отвечал. А правильные формулы вам предложили и без меня., Могу прописать почти то же самое
=ПСТР(ЛЕВСИМВ(A3;ПОИСК(")";A3)-1);ПОИСК("(";A3)+1;9)
При том в файле вы просите
ЦитироватьИзвлекаться должны только цифры в скобках
не числа, значит и преобразовывать в числовой формат их не обязательно было. Если нужно было извлечь число из скобок, тогда не надо было писать про две формулы в одну и не цифры, а числа извлекать. Молодцы помогающие, они обладают даром экстрасенсов и прочитали ваши мысли, а я вот не угадал. Ничего в следующий раз и у меня получится.)))
Хорошо, конечно уметь писать формулы с функциями!!! А попроще не пробовали — 2 раза текст по столбцам — разделитель — сначала (, а потом ), а что не нужно — пропустить.
Проще, так проще, Наташа
ctrl+h — меняем на пусто «*(«, потом «)*». Сразу получаем цифры в столбце.
Я, как всегда, чертовски адекватен… Email: kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728, E332314026771
=ПСТР(Текст; Поиск_первой_позиции(«(«:Текст)+1,Поиск_второй _позиции(«)»;Тектс)-Поиск_первой_позиции(«(«;Тектс)-1)
Чтобы извлечь текст между скобками, вы можете использовать формулу, основанную на функции ПСТР () и функции ПОИСК ().
В показанном примере, формула в E7:
=ПСТР(D7;ПОИСК(«(«;D7)+1;ПОИСК(«)»;D7)-ПОИСК(«(«;D7)-1)
Основой этой формулы является функция ПСТР () , которая извлекает определенное количество символов из текста, начиная с определенного места.
Найти «Поиск_первой_позиции» с какой позиции начинать извлечение текста, мы используем это выражение:
ПОИСК(«(«;D7)+1
Начало позиции: 14+1=15
Функция ПОИСК () находит позицию скобку в тексте, а затем уберем саму скобку с первой позиции прибавив единицу.
Для нахождения «Поиск_второй _позиции» второй скобки, мы используем это выражение:
ПОИСК(«)»;D7)-1
Начало второй позиции: 18-1=17
Функция ПОИСК () находит позицию скобки в тексте, а затем уберем саму скобку с последней позиции отняв единицу.
Чтобы получить общее количество символов, которые должны быть извлечены надо найти разницу между Второй позицией и первой получив, количество символов для извлечения как в выражении:
ПОИСК(«)»;D7)-ПОИСК(«(«;D7)-1)
Вторая позиция, отнять первую, получим количество символов для извлечения
17 — 14 =3 2,4
И соберем всю формулу как в ячейке E7:
=ПСТР(D7;ПОИСК(«(«;D7)+1;ПОИСК(«)»;D7)-1-ПОИСК(«(«;D7))
=ПСТР(Текст; позиция первая скобка; позиция Вторая скобка)
=ПСТР(Текст;14+1;17-1-14)
Можно прибавить ноль в конце и получить в место текстового значения цифровое.
=ПСТР(D7;ПОИСК(«(«;D7)+1;ПОИСК(«)»;D7)-1-ПОИСК(«(«;D7))+0
Mikhail76 Пользователь Сообщений: 76 |
Добрый день. |
Msi2102 Пользователь Сообщений: 3134 |
Mikhail76, Покажите в примере как должно получиться |
Mikhail76 Пользователь Сообщений: 76 |
#3 16.06.2022 14:07:59
Во вложении. Прикрепленные файлы
|
||
surkenny Пользователь Сообщений: 2365 |
#4 16.06.2022 14:18:31 В PQ:
Прикрепленные файлы
|
||
memo Пользователь Сообщений: 1422 Excel 2013/2016 |
#5 16.06.2022 14:22:10 Вариант формулой. (Нужен офис не ниже 2013)
Прикрепленные файлы
|
||
Mikhail76 Пользователь Сообщений: 76 |
#6 16.06.2022 14:47:20
Добрый день. В исходнике нужно перенести данные из ячейки М1279 в L1279. Как будет выглядеть формула? Впервые с такой сталкиваюсь. |
||||
Jack Famous Пользователь Сообщений: 10846 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
Mikhail76, макрос подойдёт? Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
Msi2102 Пользователь Сообщений: 3134 |
#8 16.06.2022 15:27:40 Если офис 2019 и выше:
Прикрепленные файлы
Изменено: Msi2102 — 16.06.2022 15:42:20 |
||
Jack Famous Пользователь Сообщений: 10846 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
#9 16.06.2022 16:43:51
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
|
Mikhail76 Пользователь Сообщений: 76 |
|
Msi2102 Пользователь Сообщений: 3134 |
#11 16.06.2022 18:13:29
Тогда ещё вариант. Вводится как массивная
PS: хотя уже море вариантов на регулярках есть Прикрепленные файлы
|
||||
Jack Famous Пользователь Сообщений: 10846 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
Msi2102, строковые быстрее регулярок в этом случае, если что моей теме Андрей VG как раз сравнивал скорости (и функция на строковых — его) Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
Msi2102 Пользователь Сообщений: 3134 |
#13 17.06.2022 10:22:55
Я не про скорость, просто есть куча готовых и в принципе более универсальных вариантов, нужно было только поискать
Прикрепленные файлы
|
||||
Jack Famous Пользователь Сообщений: 10846 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
#14 17.06.2022 10:51:31
я не могу в качестве кода использовать то, принцип работы чего я не понимаю (и при это могу сделать понятный мне аналог). Надо сидеть и разбираться, что там имел ввиду автор и зачем. Msi2102, вот вы, например, почему System.Collections.ArrayList вместо словарей и вообще зачем он тут ведь задача отбора уникальных не стояла?… У меня же принцип простой: ищем первый разделитель, после него ищем второй. Если какой-то из низ не найден, то выходим. Если оба найдены, то берём всё, что между ними и повторяем. ТС не указал нюанс, что ему на самом деле не ВСЁ, что между скобок нужно, а только коды по понятной маске. Добавил в функцию возможность отфильтровать по маске. Или как в соседней теме: готовое решение от ноунейма, который просто ошибся Изменено: Jack Famous — 17.06.2022 10:57:10 Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
||
Msi2102 Пользователь Сообщений: 3134 |
#15 17.06.2022 11:24:23
Вы наверное неправильно поняли фразу в моем сообщении.
Я имел ввиду, что сам автор мог получше поискать
Вначале я написал на Scripting.Dictionary (кстати он быстрее), но на работе была тошниловка и решил добавить немного плюшек
А что там может не так работать?
|
||||||||||
Jack Famous Пользователь Сообщений: 10846 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
#16 17.06.2022 11:37:44
в примере ТС показал желаемый результат и это не ВСЕ значения из скобок, а только коды. У меня реализованы оба варианта — так универсальнее, в зависимости от потребности.
например, оно отбирает уникальные, а об этом ничего сказано не было. Тем более, что у вас это не опция (как у меня с маской), а единственный вариант работы функции.
как минимум, из-за отбора уникальных, это уже не так. К тому же, при вложенных скобках, наши варианты могут повести себя по-разному (не тестил, но так кажется)
плюшка в виде заведомо более медленного и не менее сложного [чем словари] варианта P.S.: If Not r <= 1 Then вместо If r или If r<>0 — тоже «для разнообразия»?)) Изменено: Jack Famous — 17.06.2022 11:38:21 Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
||||||||
Msi2102 Пользователь Сообщений: 3134 |
#17 17.06.2022 13:11:13
Почему, напишите так
и он выдаст все варианты
Нет, просто удаляю вариант если Внутри скобок пустота «()», если Ваш вариант, то при наличии () будут пустые ячейки
Оно конечно медленнее, но на сколько, сущие пустяки Изменено: Msi2102 — 17.06.2022 14:28:31 |
||||||||