Excel как удалить текст в скобках
Например, пишем след. функцию в стандартном модуле:
И используем так:
1. на листе (где [A1] содержит "МБП (ТЕХ)")
Получается универсальная функция на все случаи жизни. остается только научиться писать "паттерны".
1. на листе (где [A1] содержит "МБП (ТЕХ)")
Получается универсальная функция на все случаи жизни. остается только научиться писать "паттерны".
Ну или следуя твоей логике (упрощения): "(.*()|(\).*)"
Ну или следуя твоей логике (упрощения): "(.*()|(\).*)"
Во первых, надо переписать макрос:
А во вторых, запускать так:
Это если с минимальными переделками исходного макроса. А если делать его универсальным, то делать надо так:
И что самое смешное, работает прекрасно. А жадный поиск так по-моему здесь как раз к месту.
И еще к разговору об универсальности.
1. Похоже, твой код позволяет выбирать одну маску за раз, а в моем проще работать с альтернативными масками. Но я наверняка просто не нашел как это делать в твоем решении.
2. Если третий параметр (intSection) ошибочный, то твой код возвращает нонсенс, а не ошибку.
Пожалуй, если рассматривать задачу, как оставить то, что внутри скобок (как у автора), то тут твой подход лучше. Я как-то зафиксировался на удалении всего, что за скобками, поэтому при эксперименте с примерами я видел все как в верхней части прилагаемой картинки :-) Остальные пункты пока в силе.
Кстати, как поживает твоя конкурсная работа? По-моему мы deadline забыли установить. Я тут играю с Solver и такое ощущение, что уже близок к относительно быстрому решению - 14 отрезков за 50 секунд. Правда еще не установил последний constraint
З.Ы. Конкретно в моей постановке задачи - скобки будут всегда, причем парные.это до кучи
Есть ли в формулах Excel регулярные выражения?
Правильно ли я понимаю?
^(.*) - ни одного или более символа
Если у вас есть несколько данных, и некоторые из них заключены в квадратные или круглые скобки, теперь вы хотите удалить текст в скобках, как показано на скриншотах ниже, как вы можете быстро решить эту проблему?
Удалить текст в круглых скобках на нескольких листах с помощью Kutools for Excel
Удалите скобки с помощью Kutools for Excel
Удалите текст в круглых скобках с помощью функции поиска и замены
Чтобы удалить текст, заключенный в скобки, вы можете найти их, а затем заменить их пустыми.
1. Нажмите Ctrl + H ключи для включения Найти и заменить диалог, в Найти то, что текстовое поле, тип (*) в него и перейдите к Заменить текстовое поле, тип () внутрь. Смотрите скриншот:
2. Затем нажмите Заменить все. Затем появляется диалоговое окно с напоминанием о количестве замен. Нажмите OK закрыть его.
Удалить текст в круглых скобках на нескольких листах с помощью Kutools for Excel
Если вы открыли несколько книг и вам нужно удалить весь текст в скобках в открытых книгах, вы можете использовать Kutools for Excelпродвинутый Найти и заменить для поиска и замены текста в книгах.
После бесплатная установка Kutools for Excel, сделайте следующее:
1. Нажмите Kutools > Навигация включить Навигация панель, затем щелкните Найти и заменить значок для перехода Найти и заменить раздел. Смотрите скриншоты:
3. Затем выберите Заменять и в Найти то, что текстовое поле, тип (*) в него и перейдите к Заменить текстовое поле, тип () в него и выберите Все книги под В раскрывающийся список, см. снимок экрана:
Наконечник: Если вы хотите заменить на определенных листах, вы можете проверить имена листов в Книги .
4. Нажмите Заменить все. Затем все тексты в скобках заменяются пустыми.
Работы С Нами Навигация панели, вы можете перечислить все имена открытых листов, имена диапазонов и добавить автоматический текст по своему усмотрению. Щелкните здесь, чтобы узнать больше о навигации.
Удалить содержимое в круглых скобках
Удалите скобки с помощью Kutools for Excel
Если вы хотите удалить скобки или скобки, вы можете использовать Kutools for ExcelАвтора Удалить символы.
После бесплатная установка Kutools for Excel, сделайте следующее:
1. Выберите диапазон данных, для которого нужно удалить скобки, и нажмите Kutools > Текст > Удалить символы. Смотрите скриншот:
2. в Удалить символы диалог, только проверка На заказ вариант, а затем введите () в текстовое поле, вы можете просмотреть результат в предварительный просмотр панель. Смотрите скриншот:
3. Нажмите Ok or Применить. Теперь все скобки выделения сняты.
Если у вас есть несколько данных, и некоторые из них заключены в квадратные или круглые скобки, теперь вы хотите удалить текст в скобках, как показано на скриншотах ниже, как вы можете быстро решить эту проблему?
Удалить текст в круглых скобках с помощью Find и функция замены
Удалите текст в скобках на нескольких листах с помощью Kutools for Excel
Удалите скобки с помощью Kutools for Excel
Удаление текста в скобках с помощью функции« Найти и заменить »
Чтобы удалить текст, заключенный в квадратные скобки, вы можете найти их, а затем заменить их пустыми.
1. Нажмите клавиши Ctrl + H , чтобы открыть диалоговое окно Найти и заменить , в текстовом поле Найти что введите (*) в него и перейдите в текстовое поле Заменить на , введите в него (). См. Снимок экрана:
2. Затем нажмите Заменить все . Затем появится диалоговое окно с напоминанием о количестве замен. Нажмите OK , чтобы закрыть его.
Удалите текст в круглых скобках на нескольких листах с помощью Kutools for Excel
Если вы открыли несколько книг и вам нужно удалить все текст в круглых скобках в открытых книгах, вы можете использовать расширенный Найти и заменить Kutools for Excel для поиска и замены текста в книгах.
Бесплатная загрузкаБесплатная полнофункциональная версия через 30 дней
После бесплатной установки Kutools for Excel, сделайте следующее:
1. Нажмите Kutools > Навигация , чтобы включить панель навигации , затем нажмите Найти и заменить , чтобы перейти в раздел Найти и заменить . См. Скриншоты:
3. Затем выберите вкладку Заменить и в текстовом поле Найти что введите в него (*) и перейдите к Заменить на текстовое поле, введите в него () и выберите Все книги в раскрывающемся списке Внутри , см. снимок экрана:
Совет. Если вы хотите заменить на определенных листах, вы можете проверить имена листов в списке Рабочие книги .
4. Нажмите Заменить все .. Затем все тексты в скобках заменяются пустыми.
С помощью панели Navigation вы можете перечислить имена всех открытых листов, имена диапазонов и добавить автоматический текст как тебе нравится. Щелкните здесь, чтобы узнать больше о навигации.
Удалить содержимое в круглых скобках
Удаление скобок с помощью Kutools for Excel
Если вы хотите удалить скобки или скобки, вы можете использовать Kutools для Excel : Удалить символы .
После бесплатной установки Kutools for Excel, пожалуйста, сделайте как показано ниже:
1. Выберите диапазон данных, который вы хотите удалить в скобках, и нажмите Kutools > Текст > Удалить символы . См. Снимок экрана:
2. В диалоговом окне Удалить символы установите только флажок Custom , а затем введите () в текстовое поле, вы можете просмотреть результат в Панель предварительного просмотра . См. Снимок экрана:
3. Нажмите ОК или Применить . Теперь все скобки выделения удалены.
При работе с текстовыми данными в Excel вам может потребоваться удалить текст до или после определенного символа или текстовой строки.
Например, если у вас есть данные об именах и обозначениях людей, вы можете удалить обозначение после запятой и оставить только имя (или наоборот, если вы сохраните обозначение и удалите имя).
Иногда это можно сделать с помощью простой формулы или быстрого поиска и замены, а иногда требуются более сложные формулы или обходные пути.
В этом уроке я покажу вам, как удалить текст до или после определенного символа в Excel (на разных примерах).
Итак, давайте начнем с нескольких простых примеров.
Удаление текста после символа с помощью функции поиска и замены
Если вы хотите быстро удалить весь текст после определенной текстовой строки (или перед текстовой строкой), вы можете сделать это с помощью «Найти и заменить» и подстановочных знаков.
Предположим, у вас есть набор данных, показанный ниже, и вы хотите удалить обозначение после символа запятой и оставить текст перед запятой.
Ниже приведены шаги для этого:
Вышеупомянутые шаги позволят найти запятую в наборе данных и удалить весь текст после запятой (включая запятую).
Поскольку это заменяет текст из выбранных ячеек, рекомендуется скопировать текст в другой столбец, а затем выполнить эту операцию поиска и замены или создать резервную копию ваших данных, чтобы у вас были исходные данные без изменений.
Как это работает?
Когда я использую его после запятой (в поле «Найти»), а затем нажимаю кнопку «Заменить все», он находит первую запятую в ячейке и считает ее совпадением.
Это связано с тем, что знак звездочки (*) считается соответствием всей текстовой строке, следующей за запятой.
Поэтому, когда вы нажимаете кнопку «Заменить все», она заменяет запятую и весь последующий текст.
Примечание . Этот метод работает хорошо, если в каждой ячейке есть только одна запятая (как в нашем примере). Если у вас несколько запятых, этот метод всегда найдет первую запятую, а затем удалит все после нее. Таким образом, вы не можете использовать этот метод, если хотите заменить весь текст после второй запятой и оставить первый как есть.
Если вы хотите удалить все символы перед запятой, измените запись в поле поиска, поставив перед запятой знак звездочки (* вместо *)
Удалить текст с помощью формул
Если вам нужно больше контроля над поиском и заменой текста до или после определенного символа, лучше использовать встроенные текстовые формулы в Excel.
Предположим, у вас есть приведенный ниже набор данных, из которого вы хотите удалить весь текст после запятой.
Ниже приведена формула для этого:
В приведенной выше формуле используется функция FIND (НАЙТИ), чтобы найти положение запятой в ячейке.
Этот номер позиции затем используется функцией LEFT для извлечения всех символов перед запятой. Поскольку мне не нужна запятая как часть результата, я вычел 1 из результирующего значения формулы поиска.
Это был простой сценарий.
Возьмем немного сложный.
Предположим, у меня есть этот набор данных ниже, из которого я хочу удалить весь текст после второй запятой.
Вот формула, которая сделает это:
Поскольку в этом наборе данных есть несколько запятых, я не могу использовать функцию FIND, чтобы получить позицию первой запятой и извлечь все, что находится слева от нее.
Мне нужно как-то узнать положение второй запятой, а затем извлечь все, что находится слева от второй запятой.
Для этого я использовал функцию SUBSTITUTE, чтобы заменить вторую запятую восклицательным знаком. Теперь это дает мне уникальный персонаж в камере. Теперь я могу использовать положение восклицательного знака, чтобы извлечь все, что находится слева от второй запятой.
Эта позиция восклицательного знака используется в функции LEFT для извлечения всего, что находится до второй запятой.
Все идет нормально!
Но что, если в наборе данных непоследовательное количество запятых.
В этом случае мне нужно как-то определить позицию последнего вхождения запятой, а затем извлечь все, что находится слева от нее.
Ниже приведена формула, которая сделает это
В приведенной выше формуле функция LEN используется для определения общей длины текста в ячейке, а также длины текста без запятой.
Когда я вычитаю эти два значения, получается общее количество запятых в ячейке.
Таким образом, это дало бы мне 3 для ячейки A2 и 2 для ячейки A4.
Это значение затем используется в формуле SUBSTITUTE для замены последней запятой восклицательным знаком. И затем вы можете использовать левую функцию для извлечения всего, что находится слева от восклицательного знака (где раньше была последняя запятая)
Как вы можете видеть в примерах, использование комбинации текстовых формул позволяет обрабатывать множество различных ситуаций.
Кроме того, поскольку результат связан с исходными данными, при изменении исходных данных результат будет автоматически обновляться.
Удаление текста с помощью заливки Flash
Он работает, выявляя закономерности, когда вы вручную вводите данные, а затем экстраполируете их, чтобы получить данные для всего столбца.
Поэтому, если вы хотите удалить текст до или после определенного символа, вам просто нужно показать flash fairy, как будет выглядеть результат (введя его вручную пару раз), и flash fill автоматически распознает узор и даст вам результаты.
Позвольте показать вам это на примере.
Ниже у меня есть набор данных, из которого я хочу удалить весь текст после запятой.
Вот шаги, чтобы сделать это с помощью Flash Fill:
Вышеупомянутые шаги дадут вам результат, как показано ниже:
Вы также можете использовать сочетание клавиш Control + E для Flash Fill после выбора ячеек в столбце результатов (столбец B в нашем примере)
Так что не забудьте еще раз проверить результаты Flash Fill.
И точно так же, как мы удалили весь текст после определенного символа с помощью флэш-заливки, вы можете использовать те же шаги, чтобы удалить текст перед определенным символом. просто покажите вручную в соседнем столбце flash fill, как результат должен выглядеть как мой Интернет, и он сделает все остальное.
Удалить текст с помощью VBA (пользовательская функция)
Вся концепция удаления текста до или после определенного символа зависит от нахождения позиции этого символа.
Как показано выше, найти последнее вхождение этого символа хорошим означает использовать смесь формул.
Если это то, что вам нужно делать довольно часто, вы можете упростить этот процесс, создав настраиваемую функцию с помощью VBA (называемую функциями, определяемыми пользователем).
После создания вы можете повторно использовать эту функцию снова и снова. Это также намного проще и проще в использовании (поскольку большая часть тяжелой работы выполняется кодом VBA в серверной части).
Ниже кода VBA, который можно использовать для создания настраиваемой функции в Excel:
For i = rLen To 1 Step -1
Вам необходимо поместить код VBA в обычный модуль редактора VB или в личную книгу макросов. Когда он у вас есть, вы можете использовать его как любую другую обычную функцию рабочего листа в книге.
Эта функция принимает 2 аргумента:
- Ссылка на ячейку, для которой вы хотите найти последнее вхождение определенного символа или текстовой строки.
- Символьная или текстовая строка, позицию которой вам нужно найти
Предположим, теперь у вас есть приведенный ниже набор данных, и вы хотите удалить весь текст после последней запятой и иметь только текст до последней запятой.
Ниже приведена формула, которая сделает это:
В приведенной выше формуле я указал, чтобы найти позицию последней запятой. Если вы хотите найти положение какого-либо другого символа или текстовой строки, вы должны использовать это как второй аргумент в функции.
Как видите, это намного короче и проще в использовании по сравнению с формулой с длинным текстом, которую мы использовали в предыдущем разделе.
Если вы поместите код VBA в модуль в книге, вы сможете использовать эту настраиваемую функцию только в этой конкретной книге. Если вы хотите использовать это во всех книгах в вашей системе, вам необходимо скопировать и вставить этот код в личную книгу макросов.
Вот некоторые из писем, которые вы можете использовать для быстрого удаления текста до или после определенного символа в Excel.
Если это простая одноразовая вещь, вы можете сделать это с помощью функции поиска и замены. что, если это немного сложнее, тогда вам нужно использовать комбинацию встроенных формул Excel или даже создать свою собственную формулу с помощью VBA.
Рассмотрим пример. Предположим, что у нас имеется список сотрудников компании и мы хотим отфильтровать только тех сотрудников, у которых фамилии начинаются на конкретную букву (к примеру, на букву «п»):
Для начала добавляем фильтр на таблицу (выбираем вкладку Главная -> Редактирование -> Сортировка и фильтр или нажимаем сочетание клавиш Ctrl + Shift + L).
Для фильтрации списка воспользуемся символом звездочки, а именно введем в поле для поиска «п*» (т.е. фамилия начинается на букву «п», после чего идет произвольный текст):
Фильтр определил 3 фамилии удовлетворяющих критерию (начинающиеся с буквы «п»), нажимаем ОК и получаем итоговый список из подходящих фамилий:
В общем случае при фильтрации данных мы можем использовать абсолютно любые критерии, никак не ограничивая себя в выборе маски поиска (произвольный текст, различные словоформы, числа и т.д.).
К примеру, чтобы показать все варианты фамилий, которые начинаются на букву «к» и содержат букву «в», то применим фильтр «к*в*» (т.е. фраза начинается на «к», затем идет произвольный текст, потом «в», а затем еще раз произвольный текст).
Или поиск по «п?т*» найдет фамилии с первой буквой «п» и третьей буквой «т» (т.е. фраза начинается на «п», затем идет один произвольный символ, затем «т», и в конце опять произвольный текст).
Применение в функциях
Как уже говорилось выше, подстановочные знаки в Excel могут использоваться в качестве критерия при сравнении текста в различных функциях Excel (например, СЧЁТЕСЛИ , СУММЕСЛИ , СУММЕСЛИМН , ГПР, ВПР и другие).
Повторим задачу из предыдущего примера и подсчитаем количество сотрудников компании, фамилии которых начинаются на букву «п».
Воспользуемся функцией СЧЁТЕСЛИ, которая позволяет посчитать количество ячеек соответствующих указанному критерию.
В качестве диапазона данных укажем диапазон с сотрудниками (A2:A20), а в качестве критерия укажем запись «п*» (т.е. любая фраза начинающаяся на букву «п»):
Как и в первом примере, в результате мы получили ровно 3 фамилии.
Однако не все функции поддерживают применение подстановочных знаков. Некоторые из них (к примеру, функция НАЙТИ) любой символ воспринимают как текст, даже несмотря на то, что он может быть служебным.
С помощью функции НАЙТИ найдем в тексте позицию вхождения вопросительного знака и звездочки:
Обратным примером служит аналогичная функция ПОИСК, в которой мы должно четко указать что ищем именно служебный символ:
Как видим результат у функций получился одинаковым, однако обращение к подстановочным знакам разное.
Удалить символы в начале ячейки (слева)
Формулы выше требуют создания дополнительного столбца. Чтобы сэкономить время, если исходные данные не нужны, мной были разработаны функции !SEMTools , удаляющие символы прямо на месте.
Если не уверены до конца в том, что делаете, рекомендуется все же перестраховываться, создавая дополнительный столбец.
«Отрезаем» несколько символов слева в ячейках столбца
Удалить символы в конце ячейки (справа):
Процедура потребуется, когда у вас массив фраз, в котором нужно обрезать последние буквы в конце строки, и вы уверены на 100% в их количестве.
Выделите диапазон, на панели !SEMTools в меню УДАЛИТЬ -> Символы -> обрезать выберите «с начала ячейки». В появившемся диалоговом окошке вбейте количество символов, которое хотите удалить, и нажмите ОК.
Читайте также: