Оглавление
Следующая часть нашей работы с текстом в электронных таблицах посвящена извлечению. Узнайте, как извлекать различные данные - текст, символы, числа, URL-адреса, адреса электронной почты, дату и время и т.д. - из различных позиций в нескольких ячейках Google Sheets одновременно.
Формулы Google Sheets для извлечения текста и чисел из строк
Формулы в Google Sheets - это все. В то время как некоторые формулы добавляют текст & цифры и удаляют различные символы, некоторые из них также извлекают текст, цифры, отдельные символы и т.д.
Извлечение данных по позиции: первый/последний/средний N символов
Самые простые функции, с которыми проще всего иметь дело, когда вы собираетесь извлечь данные из ячеек Google Sheets, - это LEFT, RIGHT и MID. Они получают любые данные по позиции.
Извлечение данных из начала ячеек в Google Sheets
Вы можете легко вытащить первые N символов с помощью функции LEFT:
LEFT(string,[number_of_characters])- строка это текст, из которого вы хотите извлечь данные.
- количество_символов это количество символов, которые нужно извлечь, начиная слева.
Вот самый простой пример: давайте уберем коды стран из телефонных номеров:
Как вы видите, коды стран занимают 6 символов в начале ячеек, поэтому нужная вам формула имеет вид:
=LEFT(A2,6)
Совет. ArrayFormula позволит получить сразу 6 символов из всего диапазона:
=ArrayFormula(LEFT(A2:A7,6))
Извлечение данных из конца ячеек в Google Sheets
Чтобы извлечь из ячеек последние N символов, используйте функцию RIGHT:
RIGHT(string,[number_of_characters])- строка это все еще текст (или ссылка на ячейку), из которого нужно извлечь данные.
- количество_символов это также количество символов, которые нужно взять справа.
Давайте узнаем названия стран из тех же телефонных номеров:
Они занимают всего 2 символа, и это именно то, что я упоминаю в формуле:
=ПРАВО(A2,2)
Совет. ArrayFormula также поможет вам извлечь данные из конца всех ячеек Google Sheets одновременно:
=ArrayFormula(RIGHT(A2:A7,2))
Извлечение данных из середины ячеек в Google Sheets
Если существуют функции для извлечения данных из начала и конца ячеек, то должна существовать и функция для извлечения данных из середины. И да - такая функция есть.
Это называется MID:
MID(string, starting_at, extract_length)- строка - текст, из которого вы хотите убрать среднюю часть.
- начальная_дата - позиция символа, с которого вы хотите начать получение данных.
- длина_извлечения - количество символов, которые необходимо вытащить.
На примере тех же телефонных номеров найдем сами телефонные номера без кодов стран и их сокращений:
Поскольку коды стран заканчиваются 6-м символом, а 7-й - это тире, я буду вытаскивать числа, начиная с 8-й цифры. И в итоге получу 8 цифр:
=MID(A2,8,8)
Совет. Изменив одну ячейку на весь диапазон и обернув ее в ArrayFormula, вы получите результат для каждой ячейки сразу:
=ArrayFormula(MID(A2:A7,8,8))
Извлечение текста/чисел из строк
Иногда извлечение текста по позиции (как показано выше) не подходит. Необходимые строки могут находиться в любой части ячеек и состоять из разного количества символов, что вынуждает вас создавать различные формулы для каждой ячейки.
Но Google Sheets не были бы Google Sheets, если бы в них не было других функций, помогающих извлекать текст из строк.
Давайте рассмотрим несколько возможных способов, которые предлагают электронные таблицы.
Извлечение данных до определенного текста - LEFT+SEARCH
Когда вы хотите извлечь данные, предшествующие определенному тексту, используйте LEFT + SEARCH:
- СЛЕВА используется для возврата определенного количества символов из начала ячеек (слева от них)
- ПОИСК ищет определенные символы/строки и получает их положение.
Объедините их - и LEFT вернет количество символов, предложенное SEARCH.
Вот пример: как извлечь текстовые коды перед каждым "ea"?
Это формула, которая поможет вам в подобных случаях:
=LEFT(A2,SEARCH("ea",A2)-1)
Вот что происходит в формуле:
- ПОИСК("ea",A2) ищет 'ea' в A2 и возвращает позицию, с которой начинается 'ea' для каждой ячейки - 10.
- Так что 10-я позиция - это место, где находится 'e'. Но поскольку мне нужно все, что находится прямо перед 'ea', мне нужно вычесть 1 из этой позиции. Иначе 'e' также будет возвращено. Так что в итоге я получаю 9.
- СЛЕВА просматривает A2 и получает первые 9 символов.
Извлечение данных после текста
Существуют также средства, позволяющие получить все, что находится после определенной текстовой строки. Но в этот раз ПРАВИЛО не поможет. Вместо него в ход идет REGEXREPLACE.
Совет. REGEXREPLACE использует регулярные выражения. Если вы не готовы работать с ними, есть гораздо более простое решение, описанное ниже. REGEXREPLACE(text, regular_expression, replacement)
- текст это строка или ячейка, в которую вы хотите внести изменения
- регулярное_выражение это комбинация символов, обозначающая часть текста, которую вы ищете
- замена это то, что вы хотите получить вместо этого текст
Итак, как использовать его для извлечения данных после определенного текста - 'ea' в моем примере?
Легко - с помощью этой формулы:
=REGEXREPLACE(A2,"(.*)ea(.*)","$2")
Позвольте мне объяснить, как именно работает эта формула:
- A2 это ячейка, из которой я извлекаю данные.
- "(.*)ea(.*)" это мое регулярное выражение (или вы можете назвать его маской). я ищу 'ea' и заключаю все остальные символы в скобки. есть 2 группы символов - все, что до 'ea' - первая группа (.*), а все, что после 'ea' - вторая (.*). вся маска сама заключена в двойные кавычки.
- "$2" это то, что я хочу получить - вторую группу (отсюда ее номер 2) из предыдущего аргумента.
Совет. Все символы, используемые в регулярных выражениях, собраны на этой специальной странице.
Извлечение чисел из ячеек Google Sheets
Что если вы хотите извлечь только числа, когда их положение и все, что идет до & после не имеет значения?
Маски (они же регулярные выражения) также помогут. На самом деле, я возьму ту же функцию REGEXREPLACE и изменю регулярное выражение:
=REGEXREPLACE(A2,"[^[:цифра:]]", "")
- A2 это ячейка, из которой я хочу получить эти числа.
- "[^[:digit:]]" это регулярное выражение, которое принимает все, кроме цифр. Символ ^caret - это то, что делает исключение для цифр.
- "" заменяет все, кроме числовых символов, на "ничего". Или, другими словами, удаляет их полностью, оставляя в ячейках только числа. Или, извлекает числа :)
Извлечение текста без учета цифр и других символов
Аналогичным образом можно убрать из ячеек Google Sheets только буквенные данные. Сокращение для регулярного выражения, обозначающего текст, называется соответственно - альфа:
=REGEXREPLACE(A2,"[^[:alpha:]]", "")
Эта формула берет все, кроме букв (A-Z, a-z), и буквально заменяет их на "ничто". Или, говоря по-другому, убирает только буквы.
Способы извлечения данных из ячеек Google Sheets без формул
Если вы ищете простой способ извлечения различных типов данных без использования формул, вы пришли по адресу. Наше дополнение Power Tools содержит именно те инструменты, которые необходимы для этой работы.
Извлечение различных типов данных с помощью надстроек Power Tools
Первый инструмент, с которым я хотел бы вас познакомить, называется Extract. Он делает именно то, что вы искали в этой статье - извлекает различные типы данных из ячеек Google Sheets.
Удобные настройки
Все случаи, о которых я рассказал выше, решаются не только с помощью дополнения. Инструмент удобен для пользователя поэтому все, что вам нужно сделать, это выбрать диапазон, который вы хотите обработать, и поставить галочки в нужных чекбоксах. Ни формул, ни регулярных выражений.
Помните второй пункт этой статьи с REGEXREPLACE и регулярными выражениями? Вот как все просто для дополнения:
Дополнительные опции
Как вы можете видеть, есть несколько дополнительные опции (просто флажки), которые вы можете быстрое включение/выключение для получения наиболее точного результата:
- Получение строк только требуемого регистра текста.
- Вытащите все вхождения из каждой ячейки и поместите их в одну ячейку или отдельные столбцы.
- Вставьте новый столбец с результатом справа от исходных данных.
- Очистите извлеченный текст из исходных данных.
Извлечение различных типов данных
Power Tools не только извлекает данные до/после/между определенными текстовыми строками и первыми/последними N символами, но также извлекает следующее:
- Числа вместе с их десятичными знаками с сохранением разделителей десятичных и тысячных дробей:
Извлечение любой строки данных отовсюду
Также есть возможность установить свой собственный точный шаблон и использовать его для извлечения. Экстракт по маске и его символы подстановки - * и ? - делают свое дело:
- Например, вы можете выделить все, что находится между скобками, с помощью следующей маски: (*)
- Или получить те SKU, которые имеют только 5 цифр в своем идентификаторе: SKU?????
- Или, как показано на скриншоте ниже, вытащите все после каждого "ea" в каждой ячейке: ea*
Извлечение даты и времени из временных меток
В качестве бонуса, есть небольшой инструмент, который извлекает дату и время из временных меток - он называется Split Date & Time.
Хотя он был создан в первую очередь для разделения временных меток, он вполне способен получить одну из нужных единиц по отдельности:
Просто выберите один из флажков в зависимости от того, что вы хотите извлечь - дату или время - из временных меток в Google Sheets и нажмите кнопку Сплит Нужная единица будет скопирована в новый столбец (или заменит исходные данные, если вы установите последний флажок):
Этот инструмент также является частью дополнения Power Tools, поэтому, установив его для получения любых данных из ячеек Google Sheets, вы полностью с ним справитесь. Если нет, пожалуйста, оставьте комментарий, и мы вам поможем :)