Функция TEXTBEFORE в Excel

Функция TEXTBEFORE в Excel возвращает текст перед заданной подстрокой или разделителем. В случаях, когда в тексте встречается несколько разделителей, функция TEXTBEFORE может вернуть текст перед n-м вхождением разделителя.

Что делает функция TEXTBEFORE в Excel?

Функция TEXTBEFORE в Excel извлекает текст перед разделителем.

Возвращаемое значение

Извлеченный текст.

Аргументы

  • text — текстовая строка для извлечения.
  • delimiter — символы, разделяющие текст.
  • instance_num — [необязательный] Экземпляр разделителя в тексте. По умолчанию 1.
  • match_mode — [необязательный] Чувствительность к регистру. 0 = включено, 1 = отключено. По умолчанию 0.
  • match_end — [необязательно] Рассматривать конец текста как разделитель. 0 = выключено, 1 = включено. По умолчанию 0.
  • if_not_found — [необязательный] Значение, которое будет возвращено, если совпадений не найдено. #Н/Д — значение по умолчанию.

Синтаксис

=TEXTBEFORE(text, delimiter, [instance_num], [match_mode], [match_end], [if_not_found])

Примечания по использованию

Функция TEXTBEFORE извлекает текст, стоящий перед заданным разделителем. Когда в тексте появляется несколько разделителей, функция может возвращать текст, предшествующий n-му экземпляру разделителя. В отличие от функции TEXTSPLIT , выходом TEXTBEFORE является одно значение.

TEXTBEFORE принимает шесть аргументов; требуются только первые два. Первый аргумент text — это текстовая строка для обработки. Второй аргумент, delimiter, — это подстрока, используемая в качестве разделителя при извлечении текста. Требуются как текст , так и delimiter. Третий аргумент, номер_экземпляра , представляет собой целое число, представляющее n-й экземпляр разделителя в тексте (т. е. чтобы извлечь текст перед вторым экземпляром, используйте 2 для номера_экземпляра).

Если не указан, instance_num по умолчанию равен 1. Четвертый аргумент — match_mode., который управляет чувствительностью к регистру при поиске разделителя. По умолчанию TEXTBEFORE чувствителен к регистру, а match_mode равен нулю (0). Поставьте 1, чтобы отключить чувствительность к регистру. Пятый аргумент, match_end , позволяет TEXTBEFORE обрабатывать конец текстовой строки как разделитель.

По умолчанию match_end равно 0, а TEXTBEFORE не будет рассматривать конец текстовой строки как разделитель. Установите match_end в 1, чтобы TEXTBEFORE использовал конец текстовой строки как разделитель. Последний аргумент — это if_not_found , пользовательское значение, которое возвращается, когда TEXTBEFORE не соответствует ни одному тексту. По умолчанию TEXTBEFORE возвращает #N/A. Примеры см. ниже.

Используйте TEXTBEFORE для извлечения текста перед разделителем,  TEXTAFTER для извлечения текста после  разделителя и TEXTSPLIT для извлечения всего текста, разделенного разделителями.

Основное использование

Чтобы извлечь текст, стоящий перед определенным символом или подстрокой, укажите текст и символы, используемые в качестве  разделителя,  в двойных кавычках («»). Например, чтобы извлечь фамилию из «Jones, Bob», укажите запятую в двойных кавычках («,») в качестве разделителя :

=TEXTBEFORE("Jones,Bob",",") // returns "Jones"

В качестве разделителя можно использовать более одного символа . Например, чтобы извлечь первый размер в текстовой строке «12 футов x 20 футов», используйте «x» в качестве  разделителя:

=TEXTBEFORE("12 ft x 20 ft"," x ") // returns "12 ft"

Обратите внимание, что мы включаем пробел до и после x, поскольку все три символа действуют как разделители.

Текст перед разделителем n

Чтобы извлечь текст перед n-м вхождением delimiter , укажите значение instance_num . Приведенные ниже формулы извлекают текст перед первым и вторым вхождением символа дефиса («-«):

=TEXTBEFORE("ABX-112-Red-Y","-",1) // returns "ABX"
=TEXTBEFORE("ABX-112-Red-Y","-",2 // returns "ABX-112"

TEXTBEFORE вернет #N/A, если указанный экземпляр не найден.

Текст перед разделителем -n

TEXTBEFORE поддерживает отрицательные значения для instance_num , что позволяет возвращать текст перед последним вхождением разделителя , например:

=TEXTBEFORE("ABX-112-Red-Y","-",-1) // returns "ABX-112-Red"
=TEXTBEFORE("ABX-112-Red-Y","-",-2) // returns "ABX-112"

Если  instance_num  выходит за пределы диапазона, TEXTBEFORE возвращает ошибку #N/A.

Совпадение с концом текста

Обычно TEXTBEFORE не рассматривает конец текстовой строки как разделитель. Например, приведенная ниже формула по умолчанию возвращает #Н/Д, поскольку четвертый разделитель отсутствует:

=TEXTBEFORE("ABX-123-Red-XYZ","-",4) // returns #N/A

Если мы включим match_end , указав 1, формула будет вести себя так, как будто после «XYZ» существует разделитель:

=TEXTBEFORE("ABX-123-Red-XYZ","-",4,,1) // returns "XYZ"

По сути, это позволяет TEXTBEFORE извлекать любой текст после последнего разделителя. Будьте осторожны в ситуациях, когда разделитель не может быть найден. Если  параметр match_end  включен, а instance_num равен 1, TEXTBEFORE вернет всю строку, если разделитель не найден.

Несколько разделителей

Чтобы предоставить TEXTBEFORE в Excel несколько разделителей одновременно, вы можете использовать константу массива, например {«x»,»y»}, где x и y представляют разные разделители. Одним из применений этой функции является обработка несогласованных разделителей в исходном тексте. Например, на листе ниже запятая появляется с («,») и без («,») пробела. При предоставлении константы массива {«, «,»} для delimiter оба варианта обрабатываются правильно:

=TEXTBEFORE(B4,{", ",","})

Чувствительность к регистру

По умолчанию TEXTBEFORE чувствителен к регистру при поиске  разделителя. Это поведение управляется  аргументом match_mode  ,  логическим значением, которое включает и отключает чувствительность к регистру. По умолчанию  match_mode  имеет значение FALSE. В приведенном ниже примере разделитель отображается как «x» и «X» (верхний и нижний регистр «x»).

Формула в D4 устанавливает  для match_mode значение  TRUE, что отключает чувствительность к регистру и позволяет TEXTBEFORE сопоставлять обе версии разделителя:

=TEXTBEFORE(B4," x ",,TRUE) // disable case-sensitivity

Примечание: вы можете использовать 1 и 0 вместо TRUE и FALSE для аргумента match_mode.

Примечания

  • По умолчанию TEXTBEFORE в Excel чувствителен к регистру.
  • TEXTBEFORE вернет ошибку #N/A, если разделитель не найден.
  • TEXTBEFORE вернет #VALUE! ошибка, если текст пустой
  • TEXTBEFORE вернет #N/A, если instance_num  выходит за пределы допустимого диапазона.
Автор А. Днепров

Обучаю основам работы с офисными программами.

Функция TEXTBEFORE в Excel
Копирование и вставка содержимого в Powerpoint