Оглавление
Изучите формулы и способы без формул для обрезки пробелов, удаления специальных символов (даже первых/последних N символов) и одинаковых текстовых строк до/после определенных символов из нескольких ячеек одновременно.
Удаление одной и той же части текста сразу из нескольких ячеек может быть не менее важным и сложным, чем его добавление. Даже если вы знаете некоторые способы, вы обязательно найдете новые в сегодняшней статье. Я делюсь множеством функций и их готовых формул и, как всегда, оставляю самую простую - без формул - напоследок ;)
Формулы для Google Sheets для удаления текста из ячеек
Я начну со стандартных функций для Google Sheets, которые удаляют текстовые строки и символы из ячеек. Универсальной функции для этого не существует, поэтому я приведу различные формулы и их комбинации для разных случаев.
Google Таблицы: удаление пробелов
Пробелы могут легко попасть в ячейки после импорта или при одновременном редактировании листа несколькими пользователями. На самом деле, лишние пробелы встречаются настолько часто, что в Google Sheets есть специальный инструмент Trim для удаления всех пробелов.
Просто выделите все ячейки Google Sheets, в которых нужно удалить пробелы, и выберите пункт Данные> Обрезать пробелы в меню электронных таблиц:
При нажатии на эту опцию все ведущие и последующие пробелы в выделении будут полностью удалены, а все лишние пробелы между данными будут сокращены до одного:
Удаление других специальных символов из текстовых строк в Google Sheets
Увы, в Google Sheets нет инструмента для "обрезки" других символов, кроме пробелов. Здесь приходится работать с формулами.
Совет. Или используйте вместо этого наш инструмент - Power Tools освободит ваш диапазон от любых символов, которые вы укажете в щелчке, включая пробелы.
Здесь я обращался с хэштегами перед номерами квартир и телефонами с тире и скобками между ними:
Я буду использовать формулы для удаления этих специальных символов.
В этом мне поможет функция SUBSTITUTE. Обычно она используется для замены одного символа другим, но вы можете обратить это в свою пользу и заменить ненужные символы... ну, ничем :) Другими словами, удалить их.
Давайте посмотрим, какой аргумент требуется функции:
SUBSTITUTE(text_to_search, search_for, replace_with, [occurrence_number])- текст_к_поиску это либо текст для обработки, либо ячейка, содержащая этот текст. Требуется.
- поиск_для это тот персонаж, который вы хотите найти и удалить. Требуется.
- заменять_на - символ, который вы вставите вместо ненужного символа. Требуется.
- номер_возникновения - если существует несколько экземпляров искомого символа, здесь вы можете указать, какой из них заменить. Это совершенно необязательно, и если вы опустите этот аргумент, все экземпляры будут заменены чем-то новым ( замена_для ).
Итак, давайте поиграем. Мне нужно найти хэштег ( # ) в A1 и замените его на "ничего", которое в электронных таблицах обозначается двойными кавычками ( "" ). Учитывая все это, я могу построить следующую формулу:
=SUBSTITUTE(A1, "#","")
Совет. Хэштег также заключен в двойные кавычки, поскольку именно так следует упоминать текстовые строки в формулах Google Sheets.
Затем скопируйте эту формулу в столбец, если Google Sheets не предлагает сделать это автоматически, и вы получите адреса без хэштегов:
Но как быть с тире и скобками? Нужно ли создавать дополнительные формулы? Вовсе нет! Если вы вложите несколько функций SUBSTITUTE в одну формулу Google Sheets, вы удалите все эти символы из каждой ячейки:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1, "#",""),"("",""),"")",""),"-",""))
Эта формула удаляет символы по одному, и каждый СУБСТИТУТ, начиная с середины, становится диапазоном для поиска следующего СУБСТИТУТА:
Совет. Более того, вы можете обернуть это в ArrayFormula и охватить весь столбец сразу. В этом случае измените ссылку на ячейку ( A1 ) к вашим данным в столбце ( A1:A7 ), а также:
=ArrayFormula(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1:A7, "#",""),""("",""),""),""),""),"-",""))))
Удаление определенного текста из ячеек в Google Sheets
Хотя для удаления текста из ячеек можно использовать вышеупомянутую функцию SUBSTITUTE для Google Sheets, я хотел бы показать еще одну функцию - REGEXREPLACE.
Его название - это аббревиатура от 'regular expression replace'. И я собираюсь использовать регулярные выражения для поиска строк, которые нужно удалить, и заменить их на ' ничего" ( "" ).
Совет. Если вы не заинтересованы в использовании регулярных выражений, я описываю гораздо более простой способ в конце этой статьи.
Совет. Если вы ищете способы поиска и удаления дубликатов в Google Sheets, посетите эту статью блога. REGEXREPLACE(text, regular_expression, replacement)
Как вы можете видеть, у функции есть три аргумента:
- текст - это место, где вы ищете текстовую строку для удаления. Это может быть сам текст в двойных кавычках или ссылка на ячейку/диапазон с текстом.
- регулярное_выражение - ваш шаблон поиска, состоящий из различных комбинаций символов. Вы будете искать все строки, которые соответствуют этому шаблону. В этом аргументе происходит все самое интересное, если можно так выразиться.
- замена - новую желаемую текстовую строку.
Предположим, что мои ячейки с данными также содержат название страны ( США ) в разных местах ячеек:
Как REGEXREPLACE поможет мне удалить его?
=REGEXREPLACE(A1,"(.*)US(.*)","$1 $2")
Вот как точно работает формула:
- он сканирует содержимое ячейки A1
- для поиска совпадений с этой маской: "(.*)US(.*)"
Эта маска указывает функции искать США независимо от того, какое количество других символов может предшествовать (.*) или следовать (.*) название страны.
И вся маска заключена в двойные кавычки в соответствии с требованиями функции :)
- последний аргумент - "$1 $2" - вот что я хочу получить вместо этого. $1 и $2 каждый из них представляет одну из этих двух групп персонажей - (.*) - из предыдущего аргумента. Вы должны упомянуть эти группы в третьем аргументе таким образом, чтобы формула могла вернуть все, что может стоять до и после США
Что касается США сам по себе, я просто не упоминаю его в 3-м аргументе - то есть, я хочу вернуть все из A1 без сайт США .
Совет. Существует специальная страница, на которую можно ссылаться для построения различных регулярных выражений и поиска текста в различных позициях ячеек.
Совет. Что касается оставшихся запятых, то функция SUBSTITUTE, описанная выше, поможет избавиться от них ;) Вы можете даже заключить REGEXREPLACE в SUBSTITUTE и решить все одной формулой:
=SUBSTITUTE(REGEXREPLACE(A1,"(.*)US(.*)","$1 $2"),","","")
Удаление текста до/после определенных символов во всех выделенных ячейках
Пример 1. Функция REGEXREPLACE для Google Sheets
Когда нужно избавиться от всего, что находится до и после определенных символов, также поможет REGEXREPLACE. Помните, что функция требует 3 аргумента:
REGEXREPLACE(text, regular_expression, replacement)И, как я уже упоминал выше, когда представлял функцию, именно второе нужно использовать правильно, чтобы функция знала, что найти и удалить.
Как же удалить адреса и оставить в ячейках только номера телефонов?
Вот формула, которую я буду использовать:
=REGEXREPLACE(A1,".*\n.*(\+.*)","$1")
- Вот регулярное выражение, которое я использую в этом случае: ".*\n.*(\+.*)"
В первой части - .*\n.* - Я использую обратная косая черта+n чтобы определить, что моя ячейка имеет более одной строки. Поэтому я хочу, чтобы функция удаляла все до и после перевода строки (включая его).
Вторая часть, заключенная в скобки (\+.*) говорит, что я хочу сохранить знак плюс и все, что за ним, нетронутым. Я беру эту часть в скобки, чтобы сгруппировать ее и сохранить на будущее.
Совет. Обратная косая черта используется перед плюсом, чтобы превратить его в искомый символ. Без нее плюс был бы просто частью выражения, которая обозначает некоторые другие символы (как, например, звездочка).
- Что касается последнего аргумента - $1 - он заставляет функцию возвращать только ту группу из второго аргумента: знак плюс и все, что за ним следует (\+.*) .
Аналогичным образом можно удалить все телефонные номера, но сохранить адреса:
=REGEXREPLACE(A1,"(.*\n).*","$1")
Только в этот раз вы говорите функции сгруппировать (и вернуть) все, что находится перед переводом строки, и очистить остальное:
Пример 2. RIGHT+LEN+FIND
Есть еще несколько функций Google Sheets, которые позволяют удалить текст до определенного символа. Это функции RIGHT, LEN и FIND.
Примечание. Эти функции помогут только в том случае, если записи, которые нужно сохранить, имеют одинаковую длину, как номера телефонов в моем случае. Если это не так, просто используйте вместо этого REGEXREPLACE или, еще лучше, более простой инструмент, описанный в конце.
Используя эту троицу в определенном порядке, я получу тот же результат и удалю весь текст перед символом - знаком плюс:
=RIGHT(A1,(LEN(A1)-(FIND("+",A1)-1)))
Позвольте мне объяснить, как работает эта формула:
- FIND("+",A1)-1 определяет номер позиции знака плюс в A1 ( 24 ) и вычитает 1, чтобы итог не включал сам плюс: 23 .
- LEN(A1)-(FIND("+",A1)-1) проверяет общее количество символов в A1 ( 40 ) и вычитает из него 23 (подсчитанные FIND): 17 .
- А затем RIGHT возвращает 17 символов из конца (справа) A1.
К сожалению, этот способ не поможет удалить текст после переноса строки в моем случае (очистить номера телефонов и сохранить адреса), так как адреса имеют разную длину.
Ну, ничего страшного, все равно инструмент в конце делает эту работу лучше ;)
Удаление первых/последних N символов из строк в Google Sheets
Если вам нужно удалить определенное количество различных символов из начала или конца ячейки, вам также помогут REGEXREPLACE и RIGHT/LEFT+LEN.
Примечание. Поскольку я уже представил эти функции выше, я буду краток в этом пункте и приведу несколько готовых формул. Или не стесняйтесь перейти к самому простому решению, описанному в самом конце.
Итак, как я могу стереть коды из этих телефонных номеров? Или, другими словами, удалить первые 9 символов из ячеек:
- Используйте REGEXREPLACE. Создайте регулярное выражение, которое будет находить и удалять все до 9-го символа (включая этот 9-й символ):
=REGEXREPLACE(A1,"(.{9})(.*)","$2")
.
Совет. Чтобы удалить последние N символов, просто поменяйте местами группы в регулярном выражении:
=REGEXREPLACE(A1,"(.*)(.{9})","$1")
- RIGHT/LEFT+LEN также подсчитывают количество символов для удаления и возврата оставшейся части из конца или начала ячейки соответственно:
=RIGHT(A1,LEN(A1)-9)
Совет. Чтобы удалить последние 9 символов из ячеек, замените RIGHT на LEFT:
=LEFT(A1,LEN(A1)-9)
- И последняя, но не менее важная функция - REPLACE. Вы говорите ей взять 9 символов, начиная слева, и заменить их ничем ( "" ):
=REPLACE(A1,1,9,"")
Примечание. Поскольку REPLACE требует начальной позиции для обработки текста, он не подойдет, если вам нужно удалить N символов из конца ячейки.
Способ удаления определенного текста в Google Sheets без формул - Дополнение Power Tools
Функции и все такое - это хорошо, когда у вас есть свободное время. Но знаете ли вы, что есть специальный инструмент, который охватывает все вышеупомянутые способы, и все, что вам нужно сделать, это выбрать нужную радиокнопку? :) Никаких формул, никаких дополнительных столбцов - лучшего помощника и пожелать нельзя ;D
Вам не нужно верить мне на слово, просто установите Power Tools и убедитесь в этом сами:
- Первая группа позволяет вам удаление нескольких подстрок или отдельных символов из любой позиции во всех выбранных ячейках одновременно:
Еще один инструмент от Power Tools позволяет удалить единицы времени и даты из временных меток. Он называется Split Date & Time:
Какое отношение инструмент разделения имеет к удалению единиц времени и даты? Чтобы удалить время из временных меток, выберите Дата поскольку это часть, которую вы хотите сохранить, а также отметить Заменить исходные данные , как на скриншоте выше.
Инструмент извлечет единицу даты и заменит ею всю временную метку. Или, другими словами, это дополнение для Google Sheets удалит единицу времени из временной метки:
Вы можете получить все эти и более 30 других средств экономии времени для электронных таблиц, установив дополнение из магазина Google. Первые 30 дней полностью бесплатны и полностью функциональны, так что у вас есть время решить, стоит ли оно вложений.
Если у вас есть вопросы, связанные с любой частью этой статьи, жду вас в разделе комментариев ниже!