Функция 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 выходит за пределы допустимого диапазона.