Excel найти начало строки

ПОИСК, ПОИСКБ (функции ПОИСК, ПОИСКБ)

Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel 2019 Excel 2019 для Mac Excel 2016 Excel 2016 для Mac Excel 2013 Excel 2010 Excel 2007 Excel для Mac 2011 Excel Starter 2010 Еще…Меньше

В этой статье описаны синтаксис формулы и использование функций ПОИСК и ПОИСКБ в Microsoft Excel.

Описание

Функции ПОИСК И ПОИСКБ находят одну текстовую строку в другой и возвращают начальную позицию первой текстовой строки (считая от первого символа второй текстовой строки). Например, чтобы найти позицию буквы «n» в слове «printer», можно использовать следующую функцию:

=ПОИСК(«н»;»принтер»)

Эта функция возвращает 4, так как «н» является четвертым символом в слове «принтер».

Можно также находить слова в других словах. Например, функция

=ПОИСК(«base»;»database»)

возвращает 5, так как слово «base» начинается с пятого символа слова «database». Можно использовать функции ПОИСК и ПОИСКБ для определения положения символа или текстовой строки в другой текстовой строке, а затем вернуть текст с помощью функций ПСТР и ПСТРБ или заменить его с помощью функций ЗАМЕНИТЬ и ЗАМЕНИТЬБ. Эти функции показаны в примере 1 данной статьи.

Важно: 

  • Эти функции могут быть доступны не на всех языках.

  • Функция ПОИСКБ отсчитывает по два байта на каждый символ, только если языком по умолчанию является язык с поддержкой БДЦС. В противном случае функция ПОИСКБ работает так же, как функция ПОИСК, и отсчитывает по одному байту на каждый символ.

К языкам, поддерживающим БДЦС, относятся японский, китайский (упрощенное письмо), китайский (традиционное письмо) и корейский.

Синтаксис

ПОИСК(искомый_текст;просматриваемый_текст;[начальная_позиция])

ПОИСКБ(искомый_текст;просматриваемый_текст;[начальная_позиция])

Аргументы функций ПОИСК и ПОИСКБ описаны ниже.

  • Искомый_текст    Обязательный. Текст, который требуется найти.

  • Просматриваемый_текст    Обязательный. Текст, в котором нужно найти значение аргумента искомый_текст.

  • Начальная_позиция    Необязательный. Номер знака в аргументе просматриваемый_текст, с которого следует начать поиск.

Замечание

  • Функции ПОИСК и ПОИСКБ не учитывают регистр. Если требуется учитывать регистр, используйте функции НАЙТИ и НАЙТИБ.

  • В аргументе искомый_текст можно использовать подстановочные знаки: вопросительный знак (?) и звездочку (*). Вопросительный знак соответствует любому знаку, звездочка — любой последовательности знаков. Если требуется найти вопросительный знак или звездочку, введите перед ним тильду (~).

  • Если значение find_text не найдено, #VALUE! возвращается значение ошибки.

  • Если аргумент начальная_позиция опущен, то он полагается равным 1.

  • Если start_num больше нуля или больше, чем длина аргумента within_text, #VALUE! возвращается значение ошибки.

  • Аргумент начальная_позиция можно использовать, чтобы пропустить определенное количество знаков. Допустим, что функцию ПОИСК нужно использовать для работы с текстовой строкой «МДС0093.МужскаяОдежда». Чтобы найти первое вхождение «М» в описательной части текстовой строки, задайте для аргумента начальная_позиция значение 8, чтобы поиск не выполнялся в той части текста, которая является серийным номером (в данном случае — «МДС0093»). Функция ПОИСК начинает поиск с восьмого символа, находит знак, указанный в аргументе искомый_текст, в следующей позиции, и возвращает число 9. Функция ПОИСК всегда возвращает номер знака, считая от начала просматриваемого текста, включая символы, которые пропускаются, если значение аргумента начальная_позиция больше 1.

Примеры

Скопируйте образец данных из следующей таблицы и вставьте их в ячейку A1 нового листа Excel. Чтобы отобразить результаты формул, выделите их и нажмите клавишу F2, а затем — клавишу ВВОД. При необходимости измените ширину столбцов, чтобы видеть все данные.

Данные

Выписки

Доход: маржа

маржа

Здесь «босс».

Формула

Описание

Результат

=ПОИСК(«и»;A2;6)

Позиция первого знака «и» в строке ячейки A2, начиная с шестого знака.

7

=ПОИСК(A4;A3)

Начальная позиция строки «маржа» (искомая строка в ячейке A4) в строке «Доход: маржа» (ячейка, в которой выполняется поиск — A3).

8

=ЗАМЕНИТЬ(A3;ПОИСК(A4;A3);6;»объем»)

Заменяет слово «маржа» словом «объем», определяя позицию слова «маржа» в ячейке A3 и заменяя этот знак и последующие пять знаков текстовой строкой «объем.»

Доход: объем

=ПСТР(A3;ПОИСК(» «;A3)+1,4)

Возвращает первые четыре знака, которые следуют за первым пробелом в строке «Доход: маржа» (ячейка A3).

марж

=ПОИСК(«»»»;A5)

Позиция первой двойной кавычки («) в ячейке A5.

5

=ПСТР(A5;ПОИСК(«»»»;A5)+1;ПОИСК(«»»»;A5;ПОИСК(«»»»;A5)+1)-ПОИСК(«»»»;A5)-1)

Возвращает из ячейки A5 только текст, заключенный в двойные кавычки.

босс

Нужна дополнительная помощь?

Содержание

  1. Microsoft Excel
  2. Как извлечь слова из строки таблицы Excel
  3. Извлечение первого слова из строки
  4. Извлечение последнего слова строки
  5. Извлечение всего, кроме первого слова строки
  6. ЛЕВСИМВ, ЛЕВБ (функции ЛЕВСИМВ, ЛЕВБ)
  7. Описание
  8. Синтаксис
  9. Пример
  10. Вернуть текст до найденного слова или символа
  11. Описание функции
  12. Пример 1
  13. Пример 2
  14. Пример 3
  15. Пример 4
  16. Как получить слово после последнего пробела
  17. Извлечение текста между двумя символами в Excel и Google Sheets
  18. Как извлечь текст между двумя символами в Excel
  19. Извлечь текст между двумя строками/словами в Excel
  20. Получить текст между двумя экземплярами одного и того же символа в Excel
  21. Формула Excel с учетом регистра для извлечения текста между символами
  22. Извлечение текста между символами в Excel 365
  23. Получить текст между двумя символами в Google Sheets

Microsoft Excel

трюки • приёмы • решения

Как извлечь слова из строки таблицы Excel

Формулы в этой статье полезны для извлечения слов из текста, содержащегося в ячейке. Например, вы можете создать формулу для извлечения первого слова в предложении.

Извлечение первого слова из строки

Чтобы извлечь первое слово из строки, формула должна найти позицию первого символа пробела, а затем использовать эту информацию в качестве аргумента для функции ЛЕВСИМВ. Следующая формула делает это: =ЛЕВСИМВ(A1;НАЙТИ(» «;A1)-1) .

Эта формула возвращает весь текст до первого пробела в ячейке A1. Однако у нее есть небольшой недостаток: она возвращает ошибку, если текст в ячейке А1 не содержит пробелов, потому что состоит из одного слова. Несколько более сложная формула решает проблему с помощью новой функции ЕСЛИОШИБКА, отображая все содержимое ячейки, если произошла ошибка:
=ЕСЛИОШИБКА(ЛЕВСИМВ(A1;НАЙТИ(» «;A1)-1);A1) .

Если вам нужно, чтобы формула была совместима с более ранними версиями Excel, вы не можете использовать ЕСЛИОШИБКА. В таком случае придется обойтись функцией ЕСЛИ и функцией ЕОШ для проверки на ошибку:
=ЕСЛИ(ЕОШ(НАЙТИ(» «;A1));A1;ЛЕВСИМВ(A1;НАЙТИ(» «;A1)-1))

Извлечение последнего слова строки

Извлечение последнего слова строки — более сложная задача, поскольку функция НАЙТИ работает только слева направо. Таким образом, проблема состоит в поиске последнего символа пробела. Следующая формула, однако, решает эту проблему. Она возвращает последнее слово строки (весь текст, следующий за последним символом пробела):
=ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(«*»;ПОДСТАВИТЬ(A1;» «;»*»;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;»»;»»)))))

Но у этой формулы есть такой же недостаток, как и у первой формулы из предыдущего раздела: она вернет ошибку, если строка не содержит по крайней мере один пробел. Решение заключается в использовании функции ЕСЛИОШИБКА и возврате всего содержимого ячейки А1, если возникает ошибка:
=ЕСЛИОШИБКА(ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(«*»;ПОДСТАВИТЬ(A1;» «;»*»;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;» «;»»)))));A1)

Следующая формула совместима со всеми версиями Excel:
=ЕСЛИ(ЕОШ(НАЙТИ(» «;A1));A1;ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(«*»;ПОДСТАВИТЬ(A1;»»;»*»;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;» «;»»))))))

Извлечение всего, кроме первого слова строки

Следующая формула возвращает содержимое ячейки А1, за исключением первого слова:
=ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(» «:A1;1)) .
Если ячейка А1 содержит текст 2008 Operating Budget, то формула вернет Operating Budget.

Формула возвращает ошибку, если ячейка содержит только одно слово. Следующая версия формулы использует функцию ЕСЛИОШИБКА, чтобы можно было избежать ошибки; формула возвращает пустую строку, если ячейка не содержит более одного слова:
=ЕСЛИОШИБКА(ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(» «;A1;1));»»)

А эта версия совместима со всеми версиями Excel:
=ЕСЛИ(ЕОШ(НАЙТИ(» «;A1));»»;ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(» «;A1;1)))

Источник

ЛЕВСИМВ, ЛЕВБ (функции ЛЕВСИМВ, ЛЕВБ)

В этой статье описаны синтаксис и использование функций ЛЕВСИМВ и ЛЕВБ в Microsoft Excel.

Описание

Функция ЛЕВСИМВ возвращает первый символ или несколько первых символов текстовой строки на основе заданного числа символов.

Функция ЛЕВБ возвращает первый символ или несколько первых символов текстовой строки на основе заданного числа байтов.

Эти функции могут быть доступны не на всех языках.

Функция ЛЕВБ отсчитывает по два байта на каждый символ, только если языком по умолчанию является язык с поддержкой двухбайтовой кодировки. В противном случае функция ЛЕВБ работает так же, как функция ЛЕВСИМВ, и отсчитывает по одному байту на каждый символ.

К языкам, поддерживающим БДЦС, относятся японский, китайский (упрощенное письмо), китайский (традиционное письмо) и корейский.

Синтаксис

Аргументы этих функций описаны ниже.

Текст Обязательный. Текстовая строка, содержащая символы, которые требуется извлечь.

Количество_знаков Необязательный. Количество символов, извлекаемых функцией ЛЕВСИМВ.

«Количество_знаков» должно быть больше нуля или равно ему.

Если «количество_знаков» превышает длину текста, функция ЛЕВСИМВ возвращает весь текст.

Если значение «количество_знаков» опущено, оно считается равным 1.

Количество_байт Необязательный. Количество символов, извлекаемых функцией ЛЕВБ.

Пример

Скопируйте образец данных из следующей таблицы и вставьте их в ячейку A1 нового листа Excel. Чтобы отобразить результаты формул, выделите их и нажмите клавишу F2, а затем — клавишу Enter. При необходимости измените ширину столбцов, чтобы видеть все данные.

Источник

Вернуть текст до найденного слова или символа

Описание функции

Функция полезна, когда необходимо вернуть символы от начала строки. В отличие от функции ЛЕВСИМВЛ задается не количество символов, а строка, до которой необходимо вернуть текст.

Функция =НАЧАЛОСТРОКИ(ТЕКСТ; НАЙТИ; [ Старт ]; [ Регистр ]) имеет 4 аргумента:

  • ТЕКСТ — Исходный текст (или ссылка на ячейку), в котором необходимо найти начало строки.
  • НАЙТИ — Текст, до которого будет возвращаться начало строки
  • [ Старт ] — Необязательный параметр. Позиция внутри исходного текста, с которой начинается поиск текста. По умолчанию параметр равен 1.
  • [ Регистр ] — Необязательный аргумент, указывающий необходимость учета регистра. По умолчанию равен 1 — регистр учитывается. Укажите значение 0 если не хотите учитывать регистр при сравнении.

Пример 1

Найти текст до слова СТОП. Обратите внимание не важно в какой части текста находится заданное слово.

Без применения данной функции, пришлось бы сооружать вот такую формулу: =ЛЕВСИМВ(B15;НАЙТИ(«СТОП»;B15)-1)

Пример 2

Еще один вариант вернуть первое слово в тексте — в качестве параметра НАЙТИ указать пробел.

Пример 3

Можно начинать поиск с заданной позиции (аргумент Старт ). Может понадобиться в случае если стоп-слово встречается не один раз.

Пример 4

В предыдущих примерах регистр искомого текста учитывался. Для того заглавные и строчные буквы НЕ учитывались при поиске, установите параметр Регистр = 0.

Источник

Как получить слово после последнего пробела

Получить слово до первого пробела достаточно просто:
=ПСТР( A1 ;1;НАЙТИ(» «; A1 )-1)
=MID(A1,1,FIND(» «,A1)-1)
Но куда чаще сложности возникают с получением слова(символа), находящегося на определенной позиции между пробелом. Я беру в качестве примера пробел, но на самом деле это может быть абсолютно любой символ. Например, для получения второго слова(т.е. между первым и вторым пробелом), можно составить такую формулу:
=ПСТР( A1 ;НАЙТИ(» «; A1 )+1;НАЙТИ(» «; A1 ;НАЙТИ(» «; A1 )+1)-НАЙТИ(» «; A1 )-1)
=MID(A1,FIND(» «,A1)+1,FIND(» «,A1,FIND(» «,A1)+1)-FIND(» «,A1)-1)
На мой взгляд, выглядит несколько закручено, хотя все не так уж сложно:

  • НАЙТИ(» «; A1 )+1 — ищем позицию первого пробела в ячейке A1
  • НАЙТИ(» «;A1;НАЙТИ(» «; A1 )+1) — ищем позицию второго пробела и затем из этой позиции вычитаем позицию первого пробела( -НАЙТИ(» «; A1 ) )

Но есть проблема — если второго пробела нет, то формула выдаст ошибку #ЗНАЧ! (#VALUE!) . Тогда придется еще и проверку на ошибку делать, что явно не добавит формуле элегантности. А если надо не второе слово, а третье, пятое? Поэтому я предпочитаю использовать такую формулу:
=ПОДСТАВИТЬ(ПРАВСИМВ(ПСТР(» «&ПОДСТАВИТЬ( A1 ;» «;ПОВТОР(» «;999));1;999*2);999);» «;»»)
=SUBSTITUTE(RIGHT(MID(» «&SUBSTITUTE(A1,» «,REPT(» «,999)),1,999*2),999),» «,»»)
На первый взгляд куда кошмарнее, чем первая. Но у неё есть ряд преимуществ:
— она не нуждается в проверке на отсутствие пробелов
— изменением одного числа можно получить не второе, а 3-е, 4-е и т.д. слово.

Разберем основные моменты использования этой формулы. Во-первых: формула вытаскивает второе слово от начала строки. Во-вторых: чтобы получить первое слово от начала строки, нужно в блоке 999*2 заменить 2 на 1:
=ПОДСТАВИТЬ(ПРАВСИМВ(ПСТР(» «&ПОДСТАВИТЬ( A1 ;» «;ПОВТОР(» «;999));1;999*1);999);» «;»»)
=SUBSTITUTE(RIGHT(MID(» «&SUBSTITUTE(A1,» «,REPT(» «,999)),1,999*1),999),» «,»»)
Чтобы получить 5-е слово — меняем на 5:
=ПОДСТАВИТЬ(ПРАВСИМВ(ПСТР(» «&ПОДСТАВИТЬ( A1 ;» «;ПОВТОР(» «;999));1;999*5);999);» «;»»)
=SUBSTITUTE(RIGHT(MID(» «&SUBSTITUTE(A1,» «,REPT(» «,999)),1,999*5),999),» «,»»)
Т.е. число — это позиция слова(или слов) между пробелами. А что будет, если мы укажем число больше, чем есть пробелов в строке?

А это как раз ТО, К ЧЕМУ ШЛИ — СЛОВО ПОСЛЕ ПОСЛЕДНЕГО ПРОБЕЛА
Если вдруг число будет больше, чем есть пробелов в строке — то мы получим слово после последнего пробела (т.е. первое слово с конца строки). Это значит, что если указать, например, *999 — в большинстве случаев получим как раз последнее слово.

Как это работает:
для примера возьмем текст «мама мыла раму» и формулу по получению второго слова от начала:
=ПОДСТАВИТЬ(ПРАВСИМВ(ПСТР(» «&ПОДСТАВИТЬ( A1 ;» «;ПОВТОР(» «;999));1;999*2);999);» «;»»)
=SUBSTITUTE(RIGHT(MID(» «&SUBSTITUTE(A1,» «,REPT(» «,999)),1,999*2),999),» «,»»)

  • Сначала при помощи функции ПОДСТАВИТЬ (SUBSTITUTE) мы заменяем все пробелы в тексте на 999 пробелов(999 получаем при помощи функции ПОВТОР (REPT) . Число может быть и меньше 999, но не должно быть меньше длины исходной строки. В итоге мы получим очень длинную строку, в которой каждое слово будет отделено от другого 999 пробелами. Что-то вроде такого(пробелов я поставил меньше, конечно):
    «мама____________________________мыла____________________________раму»
  • Далее при помощи функции ПСТР (MID) мы берем все слова от начала строки, до символа на позиции 999*2. Т.е. из текста выше мы получим слова «мама» и «мыла» и по 999 символов после каждого:
    «мама____________________________мыла____________________________»
  • Затем при помощи функции ПРАВСИМВ (RIGHT) получаем 999 символов справа от строки. Т.е. только наше слово и куча пробелов после него
    «мыла____________________________»
  • И напоследок та же функция ПОДСТАВИТЬ (SUBSTITUTE) убирает более не нужные нам пробелы, заменяя их все на пустую строку — «» .

Вроде бы достигли того, что нам нужно было. Но вдруг необходимо получить второе слово с конца строки? А если у нас этих слов десятки? Можно использовать некую модификацию приведенной выше формулы, но которая как раз возвращает слово с конца строки:
=ПОДСТАВИТЬ(ПСТР(ПРАВСИМВ(» «&ПОДСТАВИТЬ( A1 ;» «;ПОВТОР(» «;999));999*1);1;999);» «;»»)
=SUBSTITUTE(MID(RIGHT(» «&SUBSTITUTE(A1,» «,REPT(» «,999)),999*1),1,999),» «,»»)
Принцип тот же: если в блоке 999*1 заменить 1 на 5, то получим 5-е слово с конца строки.
Если необходимо выдергивать слова именно по пробелам, то лучше дополнить еще одной функцией — СЖПРОБЕЛЫ (TRIM) , чтобы отсечь лишние пробелы в начале и в конце строки и оставить только одиночные пробелы между словами:

Как видите — хоть формула и выглядит не так-то просто — она весьма универсальная: может и определенное слово вытащить, и к тому же еще и количество извлекаемых слов можно указать.

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

Тогда для получения второй строки( ТЦ Таганка и ТЦ Опус ) можно применить такую формулу:
=ПОДСТАВИТЬ(ПРАВСИМВ(ПСТР(СИМВОЛ(10)&ПОДСТАВИТЬ( C2 ;СИМВОЛ(10);ПОВТОР(СИМВОЛ(10);999));1;999*2);999);СИМВОЛ(10);»»)
СИМВОЛ(10) здесь означает перенос строки. Обычно эти переносы делаются с клавиатуры. Входим в режим редактирования ячейки, ставим курсор в нужное место строки и нажимаем Alt+Enter.
я для получения месяцев( Август 2015 г. и Сентябрь 2015 г. ) — такую:
=ПОДСТАВИТЬ(ПСТР(ПРАВСИМВ(«/»&ПОДСТАВИТЬ( C2 ;»/»;ПОВТОР(«/»;999));999*1);1;999);»/»;»»)
В этой формуле в качестве разделителя используется слеш «/».

Разбор основных параметров формулы для применения в своих файлах
По сути, после нескольких примеров, основной принцип должен быть понятен. Но все же на примере последней формулы напомню про основные моменты и что надо сделать, чтобы применить практически к любой ситуации по извлечению слов:
=ПОДСТАВИТЬ(ПСТР(ПРАВСИМВ(«/»&ПОДСТАВИТЬ( C2 ;»/»;ПОВТОР(«/»;999));999*1);1;999);»/»;»»)

  1. C2 — ячейка с текстом, последнее слово из которого надо извлечь.
  2. «/» — разделитель слов. Если для разделения слов используется не слеш, а запятая или точка — то во всей формуле, где встречается этот символ надо заменить его на нужный.
    Если лень прописывать этот символ внутри формулы несколько раз, его можно записать в отдельную ячейку(скажем, G1 ) и в формуле указать ссылку уже на эту ячейку:
    =ПОДСТАВИТЬ(ПСТР(ПРАВСИМВ( G1 &ПОДСТАВИТЬ( C2 ; G1 ;ПОВТОР( G1 ;999));999*1);1;999); G1 ;»»)
    Теперь для изменения символа надо будет изменить его один раз в ячейке G1 и формула «вытащит» нужное слово/строку, опираясь именно на этот символ.
  3. *1 — число 1 — позиция слова с конца строки, которое необходимо «достать». 1 — первое с конца(т.е. последнее), 2 — предпоследнее и т.д.

Зная эти основные моменты достаточно будет в своем файле просто скопировать формулу выше и подставить в неё ссылку на нужную ячейку и указать требуемый разделитель.

Слово после последнего пробела.xls (29,5 KiB, 3 760 скачиваний)

Статья помогла? Поделись ссылкой с друзьями!

Источник

Извлечение текста между двумя символами в Excel и Google Sheets

Полное руководство о том, как найти и извлечь текст из строки между двумя символами или словами в Excel и Google Sheets.

При работе с длинными строками часто может потребоваться извлечь из них определенную часть для более тщательного изучения. В Microsoft Excel и Google Sheets есть несколько способов получить текст между двумя символами или подстроками. В этой статье мы обсудим самые быстрые и эффективные из них.

Как извлечь текст между двумя символами в Excel

Чтобы извлечь текст между двумя разными символами, вы можете использовать эту общую формулу:

СРЕДНЯЯ(клеткаПОИСК(символ1, клетка) + 1, ПОИСК(char2, клетка) — ПОИСК(символ1, клетка) — 1)

Например, чтобы получить текст в круглых скобках из строки в A2, используйте следующую формулу:

=СРЕДН(A2, ПОИСК(«(«, A2)+1, ПОИСК(«)», A2) — ПОИСК(«(«, A2) -1)

Аналогичным образом вы можете извлечь текст между фигурными скобками, квадратными скобками, угловыми скобками и так далее.

Полезный совет! Если вы имеете дело с числами и хотите, чтобы результатом было число, а не числовая строка, то дополнительно выполните какое-нибудь арифметическое действие, которое не изменит результат, например, прибавьте 0 или умножьте на 1.

=СРЕДН(A2, ПОИСК(«(«, A2)+1, ПОИСК(«)», A2) — ПОИСК(«(«, A2) -1) *1

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

Как работает эта формула

В основе этой формулы лежит функция MID, которая извлекает заданное количество символов из строки, начиная с определенной позиции:

MID(текст, start_num, num_chars)

Текст это ячейка, содержащая исходную строку (A2).

Исходное положение (start_num) — это символ, который следует сразу за открывающей скобкой. Итак, вы находите позицию «(» с помощью функции ПОИСК и добавляете к ней 1:

Чтобы выяснить, сколько символов нужно извлечь (num_chars), вы определяете положение закрывающих скобок и вычитаете из него положение открывающих скобок. Кроме того, вы вычитаете 1, чтобы исключить вторые круглые скобки:

ПОИСК(«)», A2) — ПОИСК(«(«, A2) -1

Имея все необходимые данные, функция MID выдает именно то, что вам нужно — в нашем случае текст в скобках:

Поскольку MID является текстовой функцией, она всегда создает строку, даже если извлечение включает только числа. Чтобы получить число в качестве конечного результата, мы умножаем вывод MID на единицу или добавляем к нему ноль. Если вы извлекаете текст, эта операция не требуется.

Извлечь текст между двумя строками/словами в Excel

Чтобы втянуть текст между двумя строками или словами, формула очень похожа на ту, что обсуждалась выше. Требуется только пара различных настроек: чтобы удалить слова-разделители из конечного результата, вы добавляете и вычитаете длину самих слов, возвращаемых функцией LEN:

Например, для извлечения подстрок между словами «начало» и «конец» используется следующая формула:

=ЕСЛИОШИБКА(СРЕДН(A2, ПОИСК(«начало», A2) + ДЛСТР(«начало»), ПОИСК(«конец», A2) — ПОИСК(«начало», A2) — ДЛСТР(«начало»)), » «)

  • Чтобы избежать начальных и конечных пробелов в результатах, включите пробел после слова 1, такого как «начало», и перед словом 2, таким как «конец». Кроме того, вы можете использовать функцию TRIM, чтобы избавиться от лишних пробелов.
  • Если одно или оба указанных слова не найдены в исходной строке, формула вернет ошибку #ЗНАЧ! ошибка. Чтобы перехватить эту ошибку и заменить ее пустой строкой («»), используйте функцию ЕСЛИОШИБКА, как показано в приведенном выше примере.

Получить текст между двумя экземплярами одного и того же символа в Excel

Общая формула для извлечения текста из строки между двумя вхождениями одного и того же символа:

Например, чтобы извлечь текст, заключенный в двойные кавычки, из строки в ячейке A2, введите следующую формулу в ячейке B2:

=СРЕДН(A2, ПОИСК(«»»», A2) +1, ПОИСК(«»»», A2, ПОИСК(«»»»,A2) +1) — ПОИСК(«»»», A2) -1 )

Обратите внимание на то, как вы ищете двойную кавычку в Excel. Между внешними кавычками вводится еще один набор кавычек. Первая кавычка используется, чтобы избежать особого значения второй кавычки, так что «» между крайними кавычками означает одинарную двойную кавычку.

Другой способ поставить двойную кавычку («») в формулу Excel — использовать функцию СИМВОЛ с кодовым номером 34.

=MID(A2, ПОИСК(СИМВОЛ(34), A2) +1, ПОИСК(СИМВОЛ(34), A2, ПОИСК(СИМВОЛ(34),A2) +1) — ПОИСК(СИМВОЛ(34), A2) -1 )

Как работает эта формула

Первые два аргумента этой формулы MID не вызывают вопросов:

  • A2 — это текстовая строка для поиска, а
  • SEARCH(«»»», A2) +1 — начальный номер, т.е. позиция первой кавычки +1.

Самая сложная часть — вычисление количества символов для извлечения (num_chars):

Во-первых, мы находим позицию второй цитаты, вложив одну функцию ПОИСК в другую.

Из позиции 2-й цитаты (в А2 это 27) вычесть позицию 1-й цитаты (в А2 это 10), а затем вычесть 1, чтобы исключить из результата саму цитату:

ПОИСК(«»»», A2, ПОИСК(«»»»,A2) +1) — ПОИСК(«»»», A2) -1

Приведенная выше формула возвращает 16, что является последней недостающей частью головоломки, в которой нуждается функция MID:

=СРЕДНЕЕ(A2, 10+1, 16)

Проще говоря, MID ищет ячейку A2, начиная с символа после первой кавычки (10+1), и возвращает следующие 16 символов.

Формула Excel с учетом регистра для извлечения текста между символами

Как вы, наверное, знаете, в Microsoft Excel есть две функции для поиска строк: ПОИСК (без учета регистра) и НАЙТИ (с учетом регистра).

В ситуации, когда разделителем является буква в конкретном регистре, просто используйте НАЙТИ вместо ПОИСК. Чтобы проиллюстрировать разницу, давайте сравним две приведенные ниже формулы.

Предположим, вы хотите извлечь из строки в A2 число между двумя заглавными буквами «X».

Функция ПОИСК в этом случае работает некорректно, так как не различает «х» и «Х»:

=СРЕДН(A2, ПОИСК(«X», A2) +1, ПОИСК(«X», A2, ПОИСК(«X»,A2) +1) — ПОИСК(«X», A2) -1) +0

В результате извлекается текст между «x», а не между «X», который мы ищем:

В то время как функция НАЙТИ с учетом регистра работает прекрасно:

=СРЕДН(A2, НАЙТИ(«X», A2) +1, НАЙТИ(«X», A2, НАЙТИ(«X»,A2) +1) — НАЙТИ(«X», A2) -1) +0

И приносит именно тот результат, который нам нужен:

Извлечение текста между символами в Excel 365

В Excel 365 вы можете легко получить текст между символами, используя функции ТЕКСТПЕРЕД и ТЕКСТПОСЛЕ.

ТЕКСТПЕРЕД(ТЕКСТПОСЛЕ(клетка, символ1), char2)

Например, чтобы извлечь текст между скобками, формула проста:

=ТЕКСТПЕРЕД(ТЕКСТПОСЛЕ(A2, «(«), «)»)

Эта формула также хорошо работает для извлечения текста между двумя вхождениями одного и того же символа.

Например, чтобы получить текст в двойных кавычках, формула принимает следующий вид:

=ТЕКСТПЕРЕД(ТЕКСТПОСЛЕ(A2, «»»»), «»»»)

По умолчанию обе функции TEXTAFTER и TEXTBEFORE чувствительны к регистру. Чтобы отключить чувствительность к регистру, вы устанавливаете 4-й аргумент (match_mode) на 1 или ИСТИНА.

Например, приведенная ниже формула без учета регистра распознает как строчную букву «x», так и прописную букву «X» в качестве разделителя:

=ТЕКСТПЕРЕД(ТЕКСТПОСЛЕ(A2, «x», ,1), «x», ,1) +0

Как работает эта формула

Работая изнутри наружу, вы используете функцию TEXTAFTER для извлечения текста после открывающих скобок:

И передать возвращенную подстроку функции TEXTBEFORE, попросив ее найти закрывающие круглые скобки в этой подстроке и вернуть текст перед ней.

Получить текст между двумя символами в Google Sheets

Чтобы найти текст между двумя символами в Google Sheets, вам не нужно изобретать велосипед 🙂

Комбинации MID SEARCH, используемые в Excel, безупречно работают и в электронных таблицах Google.

Например, чтобы получить текст в квадратных скобках, используйте следующую формулу:

=СРЕДН(A2, ПОИСК(«[«, A2)+1, SEARCH(«]», А2) — ПОИСК(«[«А2)-1)

Чтобы извлечь текст между двумя запятыми, используйте следующую формулу:

Вот как можно извлечь текст между двумя символами или словами в электронных таблицах Microsoft Excel и Google. Я благодарю вас за чтение и надеюсь увидеть вас в нашем блоге на следующей неделе!

Источник

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

Прежде чем мы начнем обсуждать различные методы работы с подстроками в Excel, давайте уделим немного времени определению термина, чтобы мы могли начать с той же страницы. Итак, что такое подстрока? Проще говоря, это часть текстовой записи. Например, если вы наберете что-то вроде «AA-111» в ячейке, вы назовете это буквенно-цифровая строкаи любая часть строки, скажем, «AA», будет подстрока.

Хотя в Excel нет такой функции, как функция подстроки, существуют три текстовые функции (LEFT, RIGHT и MID) для извлечения подстроки заданной длины. Кроме того, есть функции НАЙТИ и ПОИСК для получения подстроки до или после определенного символа. И есть несколько других функций для выполнения более сложных операций, таких как извлечение чисел из строки, замена одной подстроки на другую, поиск частичного совпадения текста и т. д. Ниже вы найдете примеры формул для выполнения всего этого и многого другого. .

Microsoft Excel предоставляет три различные функции для извлечения текста заданной длины из ячейки. В зависимости от того, где вы хотите начать извлечение, используйте одну из следующих формул:

  • Функция LEFT — извлечь подстроку слева.
  • Функция ПРАВО — извлечь текст справа.
  • Функция MID — для извлечения подстроки из середины текстовой строки, начиная с указанной вами точки.

Как и в случае с другими формулами, функции работы с подстроками в Excel лучше всего изучать на примере, поэтому давайте рассмотрим несколько из них.

Чтобы извлечь текст слева от строки, вы используете функцию Excel LEFT:

СЛЕВА(текст, [num_chars])

Где текст адрес ячейки, содержащей исходную строку, и num_chars количество символов, которые вы хотите извлечь.

Например, чтобы получить первые 4 символа из начала текстовой строки, используйте следующую формулу:

=ЛЕВО(A2,4)
ЛЕВАЯ формула для извлечения подстроки из начала строки

Получить подстроку с конца строки (ВПРАВО)

Чтобы получить подстроку из правой части текстовой строки, воспользуйтесь функцией Excel ПРАВИЛЬНО:

ПРАВИЛЬНО(текст, [num_chars])

Например, чтобы получить последние 4 символа с конца строки, используйте следующую формулу:

=ВПРАВО(A2,4)
ПРАВИЛЬНАЯ формула для извлечения подстроки из конца строки

Если вы хотите извлечь подстроку, начинающуюся в середине строки, в указанной вами позиции, то MID — это функция, на которую вы можете положиться.

По сравнению с двумя другими текстовыми функциями, MID имеет несколько иной синтаксис:

MID(текст, start_num, num_chars)

Помимо текст (исходная текстовая строка) и num_chars (количество символов для извлечения), вы также указываете start_num (отправная точка).

В нашем примере набора данных, чтобы получить три символа из середины строки, начинающейся с 6-го символа, вы используете следующую формулу:

=СРЕДНЕЕ(A2,6,3)
Формула MID для извлечения текста из середины строки

Кончик. Вывод формул Right, Left и Mid всегда является текстом, даже если вы извлекаете число из текстовой строки. Если вы хотите оперировать результатом как числом, оберните формулу в функцию ЗНАЧЕНИЕ следующим образом:

= ЗНАЧЕНИЕ (СРЕДНЕЕ (A2,6,3))

Как показано в приведенных выше примерах, функции Left, Right и Mid прекрасно справляются с однородными строками. Когда вы имеете дело с текстовыми строками переменной длины, потребуются более сложные манипуляции.

Примечание. Во всех приведенных ниже примерах мы будем использовать функцию SEARCH без учета регистра, чтобы получить позицию символа. Если вам нужна формула с учетом регистра, используйте функцию НАЙТИ.

Как извлечь текст перед определенным символом

Чтобы получить подстроку, предшествующую заданному символу, нужно сделать две вещи: сначала определить позицию интересующего символа, а затем вытянуть все символы перед ним. Точнее, вы используете функцию ПОИСК, чтобы найти положение символа, и вычитаете 1 из результата, потому что вы не хотите включать сам символ в вывод. А затем вы отправляете возвращенный номер непосредственно на num_chars аргумент ЛЕВОЙ функции:

ОСТАВИЛ(клеткаПОИСК(«уголь«, клетка)-1)

Например, чтобы извлечь подстроку перед символом дефиса (-) из ячейки A2, используйте следующую формулу:

=ВЛЕВО(A2, ПОИСК(«-«,A2)-1)

Независимо от того, сколько символов содержит ваша строка Excel, формула извлекает только текст до первого дефиса:
Извлечение текста перед определенным символом

Чтобы получить текст после определенного символа, вы используете несколько иной подход: получите позицию символа с помощью ПОИСК или НАЙТИ, вычтите это число из общей длины строки, возвращаемой функцией ДЛСТР, и извлеките столько же символов из конца строки. Струна.

ПРАВИЛЬНО(клетка,ЛЕН(клетка)-ПОИСК(«уголь«, клетка))

В нашем примере мы будем использовать следующую формулу для извлечения подстроки после первого дефиса:

=ВПРАВО(A2,ДЛСТР(A2)-ПОИСК(«-«,A2))
Извлечение текста после определенного символа

Как извлечь текст между двумя экземплярами символа

Чтобы получить подстроку между двумя вхождениями определенного символа, используйте следующую общую формулу:

СРЕДНЯЯ(клеткаПОИСК(«уголь«, клетка)+1, ПОИСК («уголь«, клеткаПОИСК («чар», клетка)+1) — ПОИСК («уголь«, клетка)-1)

Первые два аргумента этой формулы MID предельно ясны:

Текст это ячейка, содержащая исходную текстовую строку.

Start_num (начальная точка) — простая формула ПОИСК возвращает позицию нужного символа, к которой вы добавляете 1, потому что хотите начать извлечение со следующего символа.

Num_chars (количество символов для извлечения) — самая сложная часть:

  • Во-первых, вы определяете положение второго вхождения символа, вкладывая одну функцию поиска в другую.
  • После этого вы вычитаете позицию 1-го вхождения из позиции 2-го вхождения и вычитаете 1 из результата, так как вы не хотите включать символ-разделитель в результирующую подстроку.

Например, чтобы извлечь текст, окруженный двумя дефисами, вы должны использовать эту формулу:

=СРЕДН(A2, ПОИСК(«-«,A2) + 1, ПОИСК(«-«,A2,ПОИСК(«-«,A2)+1) — ПОИСК(«-«,A2) — 1)

На скриншоте ниже показан результат:
Извлечение текста между двумя дефисами

Если вы хотите извлечь текст между 2-м и 3-м или 3-м и 4-м вхождением одного и того же символа, вы можете использовать более компактную комбинацию ПОИСК ПОДСТАВКИ, чтобы получить позицию символа, как описано в разделе Как найти N-е вхождение символа в строку. :

НАЙТИ(СИМВОЛ(1),ПОДСТАВИТЬ(клетка,персонаж,СИМВОЛ(1),N-е вхождение))

В нашем случае мы могли бы извлечь подстроку между 2-м и 3-м дефисом по следующей формуле:

=MID(A2, НАЙТИ(СИМВОЛ(1),ЗАМЕНИТЬ(A2,»-«,СИМВОЛ(1),2))+1, НАЙТИ(СИМВОЛ(1),ЗАМЕНИТЬ(A2,»-«,СИМВОЛ(1) ,3)) — НАЙТИ(СИМВОЛ(1),ПОДСТАВИТЬ(A2,»-«,СИМВОЛ(1),2))-1)
Извлечение подстроки между 2-м и 3-м дефисом

В ситуациях, когда вы не хотите извлекать подстроку, а хотите найти только ячейки, содержащие ее, вы используете функцию ПОИСК или НАЙТИ, как показано в приведенных выше примерах, но выполняете поиск внутри функции ЕСНИМ. Если ячейка содержит подстроку, функция поиска возвращает позицию первого символа, и если ISNUMBER получает любое число, она возвращает TRUE. Если подстрока не найдена, поиск приводит к ошибке, заставляя ISNUMBER возвращать FALSE.

IНОМЕР(ПОИСК(«подстрока«, клетка))

Предположим, у вас есть список британских почтовых индексов в столбце A, и вы хотите найти те, которые содержат подстроку «1ZZ». Чтобы это сделать, используйте эту формулу:

=ISNUMBER(ПОИСК(«1zz», A2))

Результаты будут выглядеть примерно так:
Поиск ячеек, содержащих определенную подстроку

Если вы хотите вернуть собственное сообщение вместо логических значений ИСТИНА и ЛОЖЬ, вложите приведенную выше формулу в функцию ЕСЛИ:

=ЕСЛИ(IЧИСЛО(ПОИСК(«1zz», A2)), «Да», «»)

Если ячейка содержит подстроку, формула возвращает «Да», в противном случае — пустую строку («»):
Формула для идентификации ячеек, содержащих определенную подстроку

Как вы помните, функция ПОИСК в Excel нечувствительна к регистру, поэтому вы используете ее, когда регистр символов не имеет значения. Чтобы ваша формула различала прописные и строчные буквы, выберите функцию НАЙТИ с учетом регистра.

Дополнительные сведения о том, как найти текст и числа в Excel, см. в разделе Если ячейка содержит примеры формул.

Как вы только что видели, Microsoft Excel предоставляет множество различных функций для работы с текстовыми строками. Если вы не уверены, какая функция лучше всего подходит для ваших нужд, передайте задание нашему Ultimate Suite for Excel. Имея эти инструменты в своем арсенале Excel, вы просто переходите к Данные об аблебитах вкладка > Текст группу и нажмите Извлечь:
Инструмент «Извлечь текст» в Excel

Теперь вы выбираете исходные ячейки и любые сложные строки, которые они содержат, извлечение подстроки сводится к этим двум простым действиям:

  1. Укажите, сколько символов вы хотите получить из начала, конца или середины строки; или выберите извлечение всего текста до или после заданного символа.
  2. Нажмите Вставить результаты. Сделанный!

Например, чтобы получить доменные имена из списка адресов электронной почты, выберите Все после текста переключатель и введите @ в поле рядом с ним. Чтобы извлечь имена пользователей, выберите Все перед текстом переключатель, как показано на скриншоте ниже.
Определите подстроку, которую вы хотите извлечь.

И через мгновение вы получите следующие результаты:
Части адресов электронной почты извлекаются в отдельные столбцы.

Помимо скорости и простоты, инструмент Извлечь текст имеет дополнительную ценность — он поможет вам изучить формулы Excel в целом и функции работы с подстроками в частности. Как? Установив флажок «Вставить как формулу» в нижней части панели, вы гарантируете, что результаты выводятся в виде формул, а не значений.

В этом примере, если вы выберете ячейки B2 и C2, вы увидите следующие формулы соответственно:

  • Чтобы извлечь имя пользователя:

    =ЕСЛИОШИБКА(СЛЕВА(A2,ПОИСК(«@»,A2)-1),»»)

  • Чтобы извлечь домен:

    =ЕСЛИОШИБКА(ПРАВО(A2, ДЛСТР(A2)- ПОИСК(«@»,A2) — ДЛСТР(«@») + 1),»»)

Сколько времени у вас ушло бы на то, чтобы вычислить эти формулы самостоятельно? 😉

Поскольку результаты представляют собой формулы, извлеченные подстроки будут обновляться автоматически, как только в исходные строки будут внесены какие-либо изменения. Когда в ваш набор данных добавляются новые записи, вы можете копировать формулы в другие ячейки, как обычно, без необходимости заново запускать инструмент «Извлечь текст».

Если вам интересно попробовать это, а также многие другие полезные функции, включенные в Ultimate Suite for Excel, вы можете загрузить ознакомительную версию.

Дополнительные формулы для подстрок в Excel

В этом уроке мы продемонстрировали некоторые классические формулы Excel для извлечения текста из строки. Как вы понимаете, может быть почти бесконечное количество вариаций этих базовых сценариев. Ниже вы найдете еще несколько примеров формул, в которых вам пригодятся функции Text.

Доступные загрузки

Функции работы с подстроками в Excel — практическая рабочая тетрадь (файл .xlsx)
Ultimate Suite — пробная версия (файл .exe)

Функции Excel для работы с элементами строк

Следующие функции находят и возвращают части текстовых строк или составляют большие строки из небольших: НАЙТИ (FIND), ПОИСК (SEARCH), ПРАВСИМВ (RIGHT), ЛЕВСИМВ (LEFT), ПСТР (MID), ПОДСТАВИТЬ (SUBSTITUTE), ПОВТОР (REPT), ЗАМЕНИТЬ (REPLACE), СЦЕПИТЬ (CONCATENATE).

Функции НАЙТИ и ПОИСК

Функции НАЙТИ (FIND) и ПОИСК (SEARCH) используются для определения позиции одной текстовой строки в другой. Обе функции возвращают номер символа, с которого начинается первое вхождение искомой строки. Эти две функции работают одинаково за исключением того, что функция НАЙТИ учитывает регистр букв, а функция ПОИСК допускает использование символов шаблона. Функции имеют следующий синтаксис:

=НАЙТИ(искомый_текст;просматриваемый_текст;нач_позиция)
=ПОИСК(искомый_текст;просматриваемый_текст;нач_позиция)

Аргумент искомый_текст задает текстовую строку, которую надо найти, а аргумент просматриваемый_текст — текст, в котором производится поиск. Любым из этих аргументов может быть строка символов, заключенная в двойные кавычки, или ссылка на ячейку. Необязательный аргумент нач_позиция задает позицию в просматриваемом тексте, с которой начинается поиск. Аргумент нач_позиция следует использовать в том случае, когда просматриваемый_текст содержит несколько вхождений искомого текста. Если данный аргумент опущен, Excel возвращает позицию первого вхождения.

Эти функции возвращают ошибочное значение, когда искомый_текст не содержится в просматриваемом тексте, либо нач_позиция меньши или равна нулю, либо нач_позиция превышает количество символов в просматриваемом тексте, либо нач_позиция больше позиции последнего вхождения искомого текста.

Например, чтобы определить позицию буквы «ж» в строке «Гаражные ворота», надо использовать формулу:

Эта формула возвращает 5.

Если точная последовательность символов искомого текста неизвестна, можно использовать функцию ПОИСК и включить в строку искомый_текст символы шаблона: знак вопроса (?) и звездочку (*). Знак вопроса соответствует одному произвольно набранному символу, а звездочка заменяет любую последовательность символов в указанной позиции. Например, чтобы найти позицию имен Анатолий, Алексей, Акакий в тексте, находящемся в ячейке А1, надо использовать формулу:

Функции ПРАВСИМВ и ЛЕВСИМВ

Функция ПРАВСИМВ (RIGHT) возвращает крайние правые символы строки аргумента, в то время как функция ЛЕВСИМВ (LEFT) возвращает первые (левые) символы. Синтаксис:

=ПРАВСИМВ(текст;количество_символов)
=ЛЕВСИМВ(текст;количество_символов)

Аргумент количество_символов задает число символов, извлекаемых из аргумента текст. Эти функции учитывают пробелы и поэтому, если аргумент текст содержит пробелы в начале или конце строки, в аргументах функций следует использовать функцию СЖПРОБЕЛЫ.

Аргумент количестов_символов должен быть больше или равен нулю. Если этот аргумент опускается, Excel считает его равным 1. Если количество_символов больше числа символов в аргументе текст, то возвращается весь аргумент.

Функция ПСТР

Функция ПСТР (MID) возвращает заданное число символов из строки текста, начиная с указанной позиции. Эта функция имеет следующий синтаксис:

=ПСТР(текст;нач_позиция;количество_символов)

Аргумент текст — это текстовая строка, содержащая извлекаемые символы, нач_позиция — это позиция первого символа, извлекаемого из текста (относительно начала строки), а количество_символов — это число извлекаемых символов.

Функции ЗАМЕНИТЬ и ПОДСТАВИТЬ

Эти две функции заменяют символы в тексте. Функция ЗАМЕНИТЬ (REPLACE) замещает часть текстовой строки другой текстовой строкой и имеет синтаксис:

=ЗАМЕНИТЬ(старый_текст;нач_позиция;количество_символов;новый_текст)

Аргумент старый_текст — это текстовая строка, а которой надо заменить символы. Следующие два аргумента задают символы, которые нужно заменить (относительно начала строки). Аргумент новый_текст задает вставляемую текстовую строку.

Например, ячейка А2 содержит текст «Вася Иванов». Чтобы поместить этот же текст в ячейку А3, заменив имя, надо в ячейку А3 вставить следующую функцию:

В функции ПОДСТАВИТЬ (SUBSTITUTE) начальная позиция и число заменяемых символов не задаются, а явно указывается замещаемый текст. Функция ПОДСТАВИТЬ имеет следующий синтаксис:

=ПОДСТАВИТЬ(текст;старый_текст;новый_текст;номер_вхождения)

Аргумент номер_вхождения является необязательным. Он предписывает Excel заменить только заданное вхождение строки старый_текст.

Например, ячейка А1 содержит текст «Ноль меньше восьми». Надо заменить слово «ноль» на «нуль».

Число 1 в этой формуле указывает, что надо изменить только первое «о» в строке ячейки А1. Если аргумент номер_вхождения опущен, Excel заменяет все вхождения строки старый_текст на строку новый_текст.

Функция ПОВТОР

Функция ПОВТОР (REPT) позволяет заполнить ячейку строкой символов, повторенной заданное количество раз. Синтаксис:

=ПОВТОР(текст;число_повторений)

Аргумент текст — это размноженная строка символов, заключенная в кавычки. Аргумент число_повторений указывает, сколько раз нужно повторить текст. Если аргумент число_повторений равен 0, функция ПОВТОР оставляет ячейку пустой, а если он не является целым числом, эта функция отбрасывает десятичные знаки после запятой.

Функция СЦЕПИТЬ

Функция СЦЕПИТЬ (CONCATENATE) является эквивалентом текстового оператора & и используется для объединения строк. Синтаксис:

=СЦЕПИТЬ(текст1;текст2;. )

В функции можно использовать до 30 аргументов.

Например, ячейка А5 содержит текст «первое полугодие», следующая формула возвращает текст «Всего за первое полугодие»:

=СЦЕПИТЬ(«Всего за «;А5)

В начало страницы

В начало страницы

Текстовые функции Excel

ФИО, номера банковских карт, адреса клиентов или сотрудников, комментарии и многое другое –все это является строками, с которыми многие сталкиваются, работая с приложением Excel. Поэтому полезно уметь обрабатывать информацию подобного типа. В данной статье будут рассмотрены текстовые функции в Excel, но не все, а те, которые, по мнению office-menu.ru, самые полезные и интересные:

Список всех текстовых функций Вы можете найти на вкладке «Формулы» => выпадающий список «Текстовые»:

Функция ЛЕВСИМВ

Возвращает подстроку из текста в порядке слева направо в заданном количестве символов.

Синтаксис: =ЛЕВСИМВ(текст; [количество_знаков])

  • текст – строка либо ссылка на ячейку, содержащую текст, из которого необходимо вернуть подстроку;
  • количество_знаков – необязательный аргумент. Целое число, указывающее, какое количество символов необходимо вернуть из текста. По умолчанию принимает значение 1.

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

Формула: =ЛЕВСИМВ(«Произвольный текст»;8) – возвращенное значение «Произвол».

Функция ПРАВСИМВ

Данная функция аналогична функции «ЛЕВСИМВ», за исключением того, что знаки возвращаются с конца строки.

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

Формула: =ПРАВСИМВ(«произвольный текст»;5) – возвращенное значение «текст».

Функция ДЛСТР

С ее помощью определяется длина строки. В качестве результата возвращается целое число, указывающее количество символов текста.

Синтаксис: =ДЛСТР(текст)

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

Функция НАЙТИ

Возвращает число, являющееся вхождением первого символа подстроки, искомого текста. Если текст не найден, то возвращается ошибка «#ЗНАЧ!».

Синтаксис: =НАЙТИ(искомый_текст; текст_для_поиска; [нач_позиция])

  • искомый_текст – строка, которую необходимо найти;
  • текст_для_поиска – текст, в котором осуществляется поиск первого аргумента;
  • нач_позиция – необязательный элемент. Принимает целое число, которое указывает, с какого символа текст_для_поиска необходимо начинать просмотр. По умолчанию принимает значение 1.

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

Из отрывка стихотворения великого поэта С.А.Есенина находим вхождение первого символа строки «птица». Поиск осуществляется с начала строки. Если в приведенном примере поиск осуществлялся бы с 40 символа, то функция в результате вернула ошибку, т.к. позиции вхождения не было найдено.

Функция ЗАМЕНИТЬ

Данная функция заменяет часть строки в заданном количестве символов, начиная с указанного по счету символа на новый текст.

Синтаксис: ЗАМЕНИТЬ(старый_текст; начальная_позиция; количество_знаков; новый_текст)

  • старый_текст – строка либо ссылка на ячейку, содержащую текст;
  • начальная_позиция – порядковый номер символа слева направо, с которого нужно производить замену;
  • количество_знаков – количество символов, начиная с начальная_позиция включительно, которые необходимо заменить новым текстом;
  • новый_текст – строка, которая подменяет часть старого текста, заданного аргументами начальная_позиция и количество_знаков.

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

Здесь в строке, содержащейся в ячейке A1, подменяется слово «старый», которое начинается с 19-го символа и имеет длину 6 символов, на слово «новый».

В случае обработки небольшого количества ячеек такой способ вполне приемлем. Но если обработать необходимо несколько тысяч различных строк, то процесс составления формул станет трудоемким. Поэтому переделаем рассмотренный пример, используя знания по тем функциям, которые уже описаны в начале статьи, а именно:

  • Аргумент «начальная_позиция» подменим функцией «НАЙТИ»;
  • В место аргумент «количество_знаков» вложим функцию «ДЛСТР».

В результате получим формулу: =ЗАМЕНИТЬ(A1;НАЙТИ(«старый»;A1);ДЛСТР(«старый»);»новый»)

Посмотрите на принтскрин окна функции. Возвращаемые результаты аргументов не поменялись, зато теперь их можно определять динамически, составив формулу один раз.

Функция ПОДСТАВИТЬ

Данная функция заменяет в тексте вхождения указанной подстроки на новый текст, чем схожа с функцией «ЗАМЕНИТЬ», но между ними имеется принципиальное отличие. Если функция «ЗАМЕНИТЬ» меняет текст, указанный посимвольно вручную, то функция «ПОДСТАВИТЬ» автоматически находит вхождения указанной строки и меняет их.

Синтаксис: ПОДСТАВИТЬ(текст; старый_текст; новый_текст; [номер_вхождения])

  • текст – строка или ссылка на ячейку, содержащую текст;
  • старый_текст – подстрока из первого аргумента, которую необходимо заменить;
  • новый_текст – строка для подмены старого текста;
  • номер_вхождения – необязательный аргумент. Принимает целое число, указывающее порядковый номер вхождения старый_текст, которое подлежит замене, все остальные вхождения затронуты не будут. Если оставить аргумент пустым, то будут заменены все вхождения.

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

Строка в ячейке A1 содержит текст, в котором имеются 2 подстроки «старый». Нам необходимо подставить на место первого вхождения строку «новый». В результате часть текста «…старый-старый…», заменяется на «…новый-старый…».

Если ли бы последний аргумент был опущен, то результатом бы стала строка «строка, содержащая новый-новый текст».

Функция ПСТР

ПСТР возвращает из указанной строки часть текста в заданном количестве символов, начиная с указанного символа.

Синтаксис: ПСТР(текст; начальная_позиция; количество_знаков)

  • текст – строка или ссылка на ячейку, содержащую текст;
  • начальная_позиция – порядковый номер символа, начиная с которого необходимо вернуть строку;
  • количество_знаков – натуральное целое число, указывающее количество символов, которое необходимо вернуть, начиная с позиции начальная_позиция.

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

Из текста, находящегося в ячейке A1 необходимо вернуть последние 2 слова, которые имеют общую длину 12 символов. Первый символ возвращаемой фразы имеет порядковый номер 12.

Аргумент количество_знаков может превышать допустимо возможную длину возвращаемых символов. Т.е. если в рассмотренном примере вместо количество_знаков = 12, было бы указано значение 15, то результат не изменился, и функция так же вернула строку «функции ПСТР».

Для удобства использования данной функции ее аргументы можно подменить функциями «НАЙТИ» и «ДЛСТР», как это было сделано в примере с функцией «ЗАМЕНИТЬ».

Функция СЖПРОБЕЛЫ

Данная функция удаляется все лишние пробелы: пробелы по краям и двойные пробелы между словами. После обработки строк функцией остаются только одиночные пробелы между словами.

Синтаксис: =СЖПРОБЕЛЫ(текст)

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

=СЖПРОБЕЛЫ( » Текст с лишними пробелами между словами и по краям « )

Результатом выполнения функции будет строка: «Текст с лишними пробелами между словами и по краям» .

Функция СЦЕПИТЬ

С помощью функции «СЦЕПИТЬ» можно объединить несколько строк между собой. Максимальное количество строк для объединения – 255.

Синтаксис: =СЦЕПИТЬ(текст1; [текст2]; …)

Функция должна содержать не менее одного аргумента

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

Функция возвратит строку: «Слово1 Слово2».

Не забывайте, что функция самостоятельно не добавляет пробелы между строками, поэтому добавлять их приходится самостоятельно.

Вместо использования данной функции можно применять знак амперсанда «&». Он так же объединяет строки. Например: «=»Слово1″&» «&«Слово2″».

Канал в Telegram

Работа со строками в Excel. Текстовые функции Excel

Часто в Excel приходится тем или иным образом обрабатывать текстовые строки. Вручную такие операции проделывать очень сложно когда кол-во строк составляет не одну сотню. Для удобства в Excel реализован не плохой набор функций для работы со строковым набором данных. В этой статье я коротко опишу необходимые функции для работы со строками категории «Текстовые» и некоторые рассмотрим на примерах.

Функции категории «Текстовые»

Итак, рассмотрим основные и полезные функции категории «Текстовые», с остальными можно ознакомиться самостоятельно.

  • БАТТЕКСТ (Значение) – функция преобразующая число в текстовый тип;
  • ДЛСТР (Значение) – вспомогательная функция, очень полезна при работе со строками. Возвращает длину строки, т.е. кол-во символов содержащихся в строке;
  • ЗАМЕНИТЬ (Старый текст, Начальная позиция, число знаков, новый текст) – заменяет указанное кол-во знаков с определенной позиции в старом тексте на новый;
  • ЗНАЧЕН (Текст) – преобразует текст в число;
  • ЛЕВСИМВ (Строка, Кол-во знаков) – очень полезная функция, возвращает указанное кол-во символов, начиная с первого символа;
  • ПРАВСИМВ (Строка, Кол-во знаков) – аналог функции ЛЕВСИМВ, с той лишь разницей, что возврат символов с последнего символа строки;
  • НАЙТИ (текст для поиска, текст в котором ищем, начальная позиция) – функция возвращает позицию, с которой начинается вхождение искомого текста. Регистр символов учитывается. Если необходимо не различать регистр символов, воспользуйтесь функцией ПОИСК. Возвращается позиция только первого вхождения в строке!
  • ПОДСТАВИТЬ (текст, старый текст, новый текст, позиция) – интересная функция, на первый взгляд похожа на функцию ЗАМЕНИТЬ, но функция ПОДСТАВИТЬ способна заменить на новую подстроку все вхождения в строке, если опущен аргумент «позиция»;
  • ПСТР (Текст, Начальная позиция, Кол-во знаков) – функция похожа на ЛЕВСИМВ, но способна возвратить символы с указанной позиции:
  • СЦЕПИТЬ (Текст1, Текст 2 …. Текст 30) – функция позволяет соединить до 30-ти строк. Так же, можно воспользоваться символом «&», выглядеть будет так «=”Текст1” & ”Текст2” & ”Текст3”»;

Это в основном часто используемые функции при работе со строками. Теперь рассмотрим пару примеров, которые продемонстрируют работу некоторых функций.

Пример 1
Дан набор строк:

Необходимо из этих строк извлечь даты, номера накладных, а так же, добавить поле месяц для фильтрации строк по месяцам.

Извлечем в столбец В номера накладных. Для этого найдем так называемый ключевой символ или слово. В нашем примере видно, что перед каждым номером накладной стоит «№», а длина номера накладной 6 символов. Воспользуемся функциями НАЙТИ и ПСТР. Пишем в ячейку B2 следующую формулу :

= ПСТР (A2; НАЙТИ («№»;A2)+1;6)

Разберем формулу. Из строки А2 с позиции следующей после найденного знака «№», мы извлекаем 6 символов номера.

Теперь извлечем дату. Тут все просто. Дата расположена в конце строки и занимает 8 символов. Формула для С2 следующая:

= ПРАВСИМВ (A2;8)

но извлеченная дата у нас будет строкой, чтоб преобразовать ее в дату необходимо после извлечения, текст перевести в число:

= ЗНАЧЕН ( ПРАВСИМВ (A2;8))

а затем, задать формат отображения в ячейке, как это сделать было описано в статье «Формат данных в Excel».

Ну и последнее, для удобства дальнейшей фильтрации строк, введем столбец месяц, который мы получим из даты. Только для создания месяца нам необходимо откинуть день и заменить его на «01». Формула для D2:

= ЗНАЧЕН ( СЦЕПИТЬ («01»; ПРАВСИМВ (A2;6))) или = ЗНАЧЕН («01″& ПРАВСИМВ (A2;6))

Задайте формат ячеке «ММММ ГГГГ». Результат:

Пример 2
В строке «Пример работы со строками в Excel» необходимо все пробелы заменить на знак «_», так же перед словом «Excel» добавить «MS».

Формула будет следующая:

=ПОДСТАВИТЬ(ЗАМЕНИТЬ(A1;ПОИСК(«excel»;A1);0;»MS «);» «;»_»)

Для того, чтоб понять данную формулу, разбейте ее на три столбца. Начните с ПОИСК, последней будет ПОДСТАВИТЬ.

Все. Если есть вопросы, задавайте, не стесняйтесь

Текстовые функции Excel в примерах

Excel предлагает большое количество функций, с помощью которых можно обрабатывать текст. Область применения текстовых функций не ограничивается исключительно текстом, они также могут быть использованы с ячейками, содержащими числа. В рамках данного урока мы на примерах рассмотрим 15 наиболее распространенных функций Excel из категории Текстовые.

Для объединения содержимого ячеек в Excel, наряду с оператором конкатенации, можно использовать текстовую функцию СЦЕПИТЬ. Она последовательно объединяет значения указанных ячеек в одной строке.

Если в Excel необходимо сделать все буквы строчными, т.е. преобразовать их в нижний регистр, на помощь придет текстовая функция СТРОЧН. Она не заменяет знаки, не являющиеся буквами.

Текстовая функция ПРОПИСН делает все буквы прописными, т.е. преобразует их в верхний регистр. Так же, как и СТРОЧН, не заменяет знаки, не являющиеся буквами.

Текстовая функция ПРОПНАЧ делает прописной первую букву каждого слова, а все остальные преобразует в строчные.

Каждая первая буква, которая следует за знаком, отличным от буквы, также преобразуется в верхний регистр.

В Excel Вы можете подсчитать количество знаков, содержащихся в текстовой строке, для этого воспользуйтесь функцией ДЛСТР. Пробелы учитываются.

ЛЕВСИМВ и ПРАВСИМВ

Текстовые функции ЛЕВСИМВ и ПРАВСИМВ возвращают заданное количество символов, начиная с начала или с конца строки. Пробел считается за символ.

Текстовая функция ПСТР возвращает заданное количество символов, начиная с указанной позиции. Пробел считается за символ.

Функция СОВПАД позволяет сравнить две текстовые строки в Excel. Если они в точности совпадают, то возвращается значение ИСТИНА, в противном случае – ЛОЖЬ. Данная текстовая функция учитывает регистр, но игнорирует различие в форматировании.

Если регистр для Вас не играет большой роли (так бывает в большинстве случаев), то можно применить формулу, просто проверяющую равенство двух ячеек.

Удаляет из текста все лишние пробелы, кроме одиночных между словами.

В случаях, когда наличие лишнего пробела в конце или начале строки сложно отследить, данная функция становится просто незаменимой. На рисунке ниже видно, что содержимое ячеек А1 и B1 абсолютно одинаково, но это не так. В ячейке А1 мы намеренно поставили лишний пробел в конце слова Excel. В итоге функция СОВПАД возвратила нам значение ЛОЖЬ.

Применив функцию СЖПРОБЕЛЫ к значению ячейки А1, мы удалим из него все лишние пробелы и получим корректный результат:

Функцию СЖПРОБЕЛЫ полезно применять к данным, которые импортируются в рабочие листы Excel из внешних источников. Такие данные очень часто содержат лишние пробелы и различные непечатаемые символы. Чтобы удалить все непечатаемые символы из текста, необходимо воспользоваться функцией ПЕЧСИМВ.

Функция ПОВТОР повторяет текстовую строку указанное количество раз. Строка задается как первый аргумент функции, а количество повторов как второй.

Текстовая функция НАЙТИ находит вхождение одной строки в другую и возвращает положение первого символа искомой фразы относительно начала текста.

Данная функция чувствительна к регистру…

… и может начинать просмотр текста с указанной позиции. На рисунке ниже формула начинает просмотр с четвертого символа, т.е. c буквы “r“. Но даже в этом случае положение символа считается относительно начала просматриваемого текста.

Текстовая функция ПОИСК очень похожа на функцию НАЙТИ, основное их различие заключается в том, что ПОИСК не чувствительна к регистру.

ПОДСТАВИТЬ

Заменяет определенный текст или символ на требуемое значение. В Excel текстовую функцию ПОДСТАВИТЬ применяют, когда заранее известно какой текст необходимо заменить, а не его местоположение.

Приведенная ниже формула заменяет все вхождения слова “Excel” на “Word”:

Заменяет только первое вхождение слова “Excel”:

Удаляет все пробелы из текстовой строки:

Заменяет символы, расположенные в заранее известном месте строки, на требуемое значение. В Excel текстовую функцию ЗАМЕНИТЬ применяют, когда известно где располагается текст, при этом сам он не важен.

Формула в примере ниже заменяет 4 символа, расположенные, начиная с седьмой позиции, на значение “2013”. Применительно к нашему примеру, формула заменит “2010” на “2013”.

Заменяет первые пять символов текстовой строки, т.е. слово “Excel”, на “Word”.

Вот и все! Мы познакомились с 15-ю текстовыми функциями Microsoft Excel и посмотрели их действие на простых примерах. Надеюсь, что данный урок пришелся Вам как раз кстати, и Вы получили от него хотя бы малость полезной информации. Всего доброго и успехов в изучении Excel!

Функции VBA для работы с текстом

  • ASC ()— эта функция позволяет вернуть числовой код для переданного символа. Например, ASC( «D» ) вернет 68. Эту функцию удобно использовать для того, чтобы определить следующую или предыдущую букву. Обычно она используется вместе с функцией Chr(), которая производит обратную операцию — возвращает символ по переданному его числовому коду.Варианты этой функции — AscB() и AscW():
    • AscB () — возвращает только первый байт числового кода для символа.
    • AscW () — возвращает код для символа в кодировке Unicode
  • Chr () — возвращает символ по его числовому коду. Может использоваться в паре с функцией Asc(), но чаще всего её применяют, когда нужно вывести служебный символ (например кавычки — » ), т.к. кавычки просто так в VBA-коде не ввести(нужно ставить двойные). Я обычно именно эту функцию и использую.

    Dim sWord As String sWord = Chr(34) & «Слово в кавычках» & Chr(34)

    Есть варианты этой функции — ChrB() и ChrW(). Работают аналогично таким же вариантам для функции Asc().
    InStr () и InStrRev ()— одна из самых популярных функций. Позволяет обнаружить в теле строковой переменной символ или последовательность символов и вернуть их позицию. Если последовательность не обнаружена, то возвращается 0.

    Dim sStr As String sStr = «w» If InStr(1, «Hello, World!», sStr, vbTextCompare) > 0 Then MsgBox «Искомое слово присутствует!» Else MsgBox «Искомое слово отсутствует!» End If

    Разница функций в том, что InStr() ищет указанное слово от начала строки, а InStrRev() с конца строки
    Left (), Right (), Mid ()— возможность взять указанное вами количество символов из существующей строковой переменной слева, справа или из середины соответственно.

    Dim sStr As String sStr = «Hello, World!» MsgBox Mid(sStr, 1, 5)

    Dim sStr As String sStr = «Hello, World!» MsgBox Replace(sStr, «Hello», «Bay»)

    Dim sStr As String sStr = «Hello, World!» MsgBox StrConv(«Hello, World!», vbUpperCase)

    В качестве второго параметра параметра могут применяться константы:

    • vbUpperCase: Преобразует все текстовые символы в ВЕРХНИЙ РЕГИСТР
    • vbLowerCase: Преобразует все текстовые символы в нижний регистр
    • vbProperCase: Переводит первый символ каждого слова в Верхний Регистр
    • *vbWide: Преобразует символы строки из однобайтовых в двухбайтовые
    • *vbNarrow: Преобразует символы строки из двухбайтовых в однобайтовые
    • **vbKatakana: Преобразует символы Hiragana в символы Katakana
    • **vbHiragana: Преобразует символы Katakana в символы Hiragana
    • ***vbUnicode: Преобразует строку в Юникод с помощью кодовой страницы системы по умолчанию
    • ***vbFromUnicode: Преобразует строку из Юникод в кодовую страницу системы по умолчанию

    * применимо для локализацией Дальнего востока
    ** применимо только для Японии
    *** не поддерживается операционными системами под управлением Macintosh

  • StrReverse () — «перевернуть» строку, разместив ее символы в обратном порядке. Функция работает только начиная от Excel 2000 и выше. Пример использования функции, а так же иные методы переворачивания слова можно посмотреть в этой статье: Как перевернуть слово?
  • Tab () — еще одна функция, которая используется для форматирования вывода на консоль. Размножает символы табуляции в том количестве, в котором вы укажете. Если никакое количество не указано, просто вставляет символ табуляции. Для вставки символа табуляции в строковое значение можно также использовать константу vbTab.
  • String () — позволяет получить строку из указанного количества символов (которые опять-таки указываются Вами). Обычно используются для форматирования вывода совместно с функцией Len().
  • На чтение 23 мин. Просмотров 18.4k.

    VBA String Functions

    Содержание

    1. Краткое руководство по текстовым функциям
    2. Введение
    3. Прочитайте это в первую очередь!
    4. Добавление строк
    5. Извлечение части строки
    6. Поиск в строке
    7. Удаление пробелов
    8. Длина строки
    9. Перевернуть текст
    10. Сравнение
    11. Сравнение строк с использованием сопоставления с шаблоном
    12. Заменить часть строки
    13. Преобразовать типы в строку (базовый)
    14. Преобразовать строку в число — CLng, CDbl, Val и т.д.
    15. Генерация строки элементов — функция строки
    16. Преобразовать регистр / юникод — StrConv, UCase, LCase
    17. Использование строк с массивами
    18. Форматирование строки
    19. Заключение

    Краткое руководство по текстовым функциям

    Текстовые операции Функции
    Добавить две или более строки Format or «&»
    Построить текст из массива Join
    Сравнить StrComp or «=»
    Сравнить — шаблон Like
    Преобразовать в текст CStr, Str
    Конвертировать текст в дату Просто: CDate 
    Дополнительно: Format
    Преобразовать текст в число Просто: CLng, CInt, CDbl, Val
    Дополнительно: Format
    Конвертировать в юникод, широкий, узкий StrConv
    Преобразовать в верхний / нижний регистр StrConv, UCase, LCase
    Извлечь часть текста Left, Right, Mid
    Форматировать текст Format
    Найти символы в тексте InStr, InStrRev
    Генерация текста String
    Получить длину строки Len
    Удалить пробелы LTrim, RTrim, Trim
    Заменить часть строки Replace
    Перевернуть строку StrReverse
    Разобрать строку в массив Split

    Введение

    Использование строк является очень важной частью VBA. Есть много типов манипуляций, которые вы можете делать со строками. К ним относятся такие задачи, как:

    • извлечение части строки
    • сравнение строк
    • преобразование чисел в текст
    • форматирование даты для включения дня недели
    • найти символ в строке
    • удаление пробелов
    • парсинг в массив
    • и т. д.  

    Хорошей новостью является то, что VBA содержит множество функций, которые помогут вам легко выполнять эти задачи.

    Эта статья содержит подробное руководство по использованию строки в VBA. Он объясняет строки в простых терминах с понятными примерами кода. Изложение в статье поможет легко использовать ее в качестве краткого справочного руководства.

    Если вы собираетесь использовать строки часто, я рекомендую вам прочитать первый раздел, так как он относится ко многим функциям. В противном случае вы можете прочитать по порядку или просто перейти в нужный раздел.

    Прочитайте это в первую очередь!

    Следующие два пункта очень важны при работе со строковыми функциями VBA.

    Исходная строка не изменяется

    Важно помнить, что строковые функции VBA не изменяют исходную строку. Они возвращают новую строку с изменениями, внесенными функцией. Если вы хотите изменить исходную строку, вы просто назначаете результат исходной строке. См. Раздел «Извлечение части строки» для примеров.

    Как использовать Compare

    Некоторые строковые функции, такие как StrComp (), Instr () и т.д. имеют необязательный параметр Compare. Он работает следующим образом:

    vbTextCompare: верхний и нижний регистры считаются одинаковыми

    vbBinaryCompare: верхний и нижний регистр считаются разными

    Следующий код использует функцию сравнения строк StrComp () для демонстрации параметра Compare.

    Sub Comp1()
    
        ' Печатает 0  : Строки совпадают
        Debug.Print StrComp("АБВ", "абв", vbTextCompare)
        ' Печатает -1 : Строки не совпадают
        Debug.Print StrComp("АБВ", "абв", vbBinaryCompare)
    
    End Sub
    

    Вы можете использовать параметр Option Compare вместо того, чтобы каждый раз использовать этот параметр. Опция сравнения устанавливается в верхней части модуля. Любая функция, которая использует параметр Compare, примет этот параметр по умолчанию. Два варианта использования Option Compare:

    • Oпция Compare Text: делает vbTextCompare аргументом сравнения по умолчанию
    Option Compare Text
    
    Sub Comp2()
        ' Соответствие строк - использует vbCompareText в качестве 'аргумента сравнения
        Debug.Print StrComp("АБВ", "абв")
        Debug.Print StrComp("ГДЕ", "где")
    End Sub
    
    • Опция Compare Binary: делает vbBinaryCompare аргументом сравнения по умолчанию.
    Option Compare Binary
    
    Sub Comp2()
        ' Строки не совпадают - использует vbCompareBinary в качестве 'аргумента сравнения
        Debug.Print StrComp("АБВ", "абв")
        Debug.Print StrComp("ГДЕ", "где")
    End Sub
    

    Если Option Compare не используется, то по умолчанию используется Option Compare Binary.

    Теперь, когда вы понимаете эти два важных момента о строке, мы можем продолжить и посмотреть на строковые функции индивидуально.

    Добавление строк

    VBA String Functions - Smaller

    Вы можете добавлять строки, используя оператор &. Следующий код показывает несколько примеров его использования.

    Sub Dobavlenie()
    
        Debug.Print "АБВ" & "ГДЕ"
        Debug.Print "Иван" & " " & "Петров"
        Debug.Print "Длинный " & 22
        Debug.Print "Двойной " & 14.99
        Debug.Print "Дата " & #12/12/2015#
    
    End Sub
    

    В примере вы можете видеть, что различные типы, такие как даты и числа, автоматически преобразуются в строки. Вы можете увидеть оператор +, используемый для добавления строк. Разница в том, что этот оператор будет работать только со строковыми типами. Если вы попытаетесь использовать его с другим типом, вы получите ошибку.

     Это даст сообщение об ошибке: «Несоответствие типов»
        Debug.Print "Длинный " + 22
    

    Если вы хотите сделать более сложное добавление строк, вы можете использовать функцию форматирования, описанную ниже.

    Извлечение части строки

    Функции, обсуждаемые в этом разделе, полезны при базовом извлечении из строки. Для чего-то более сложного можете посмотреть раздел, как легко извлечь любую строку без использования VBA InStr.

    Функция Параметры Описание Пример
    Left строка, длина Вернуть
    символы с
    левой стороны
    Left(«Иван
    Петров»,4)
    Right строка, длина Вернуть
    символы с
    правой
    стороны
    Right(«Иван
    Петров»,5)
    Mid строка, начало, длина Вернуть
    символы из
    середины
    Mid(«Иван
    Петров»,3,2)

    Функции Left, Right и Mid используются для извлечения частей строки. Это очень простые в использовании функции. Left читает символы слева, Right справа и Mid от указанной вами начальной точки.

    Sub IspLeftRightMid()
    
        Dim sCustomer As String
        sCustomer = "Иван Васильевич Петров"
    
        Debug.Print Left(sCustomer, 4)  '  Печатает: Иван
        Debug.Print Right(sCustomer, 6) '  Печатает: Петров
    
        Debug.Print Left(sCustomer, 15)  '  Печатает: Иван Васильевич
        Debug.Print Right(sCustomer, 17)  '  Печатает: Васильевич Петров
    
        Debug.Print Mid(sCustomer, 1, 4) ' Печатает: Иван
        Debug.Print Mid(sCustomer, 6, 10) ' Печатает: Васильевич
        Debug.Print Mid(sCustomer, 17, 6) ' Печатает: Петров
    
    End Sub
    

    Как упоминалось в предыдущем разделе, строковые функции VBA не изменяют исходную строку. Вместо этого они возвращают результат в виде новой строки.

    В следующем примере вы увидите, что строка Fullname не была изменена после использования функции Left.

    Sub PrimerIspolzovaniyaLeft()
    
        Dim Fullname As String
        Fullname = "Иван Петров"
    
        Debug.Print "Имя: "; Left(Fullname, 4)
        ' Исходная строка не изменилась
        Debug.Print "Полное имя: "; Fullname
    
     End Sub
    

    Если вы хотите изменить исходную строку, вы просто присваиваете ей возвращаемое значение функции.

    Sub IzmenenieStroki()
    
        Dim name As String
        name = "Иван Петров"
    
        ' Присвойте возвращаемую строку переменной имени
        name = Left(name, 4)
    
        Debug.Print "Имя: "; name
    
     End Sub
    

    Поиск в строке

    Функция Параметры Описание Пример
    InStr Текст1,
    текст2
    Находит
    положение
    текста
    InStr(«Иван
    Петров»,»в»)
    InStrRev Проверка
    текста,
    соответствие
    текста
    Находит
    позицию
    текста с конца
    InStrRev(«Иван Петров»,»в»)

    InStr и InStrRev — это функции VBA, используемые для поиска текста в тексте. Если текст поиска найден, возвращается позиция (с начала строки проверки) текста поиска. Когда текст поиска не найден, возвращается ноль. Если какой-либо текст имеет значение null, возвращается значение null.

    InStr Описание параметров

    InStr() Start[Необязат], String1, String2, Compare[Необязат]

    • Start [Необязательно — по умолчанию 1]: это число, указывающее начальную позицию поиска слева
    • String1: текст, в котором будем искать
    • String2: текст, который будем искать
    • Compare как vbCompareMethod: см. Раздел «Сравнить» для получения более подробной информации.

    Использование InStr и примеры

    InStr возвращает первую позицию в тексте, где найден данный текст. Ниже приведены некоторые примеры его использования.

    Sub PoiskTeksta()
    
        Dim name As String
        name = "Иван Петров"
    
        ' Возвращает 3 - позицию от первой 
        Debug.Print InStr(name, "а")
        ' Возвращает 10 - позиция первого "а", начиная с позиции 4
        Debug.Print InStr(4, name, "а")
        ' Возвращает 8
        Debug.Print InStr(name, "тр")
        ' Возвращает 6
        Debug.Print InStr(name, "Петров")
        ' Возвращает 0 - текст "ССС" не найдет
        Debug.Print InStr(name, "ССС")
    
    End Sub
    

    InStrRev Описание параметров

    InStrRev() StringCheck, StringMatch, Start[Необязат], Compare[Необязат]

    • StringCheck: текст, в котором будем искать
    • StringMatch: Текст, который будем искать
    • Start [Необязательно — по умолчанию -1]: это число, указывающее начальную позицию поиска справа
    • Compare как vbCompareMethod: см. Раздел «Сравнить» для получения более подробной информации.

    Использование InStrRev и примеры

    Функция InStrRev такая же, как InStr, за исключением того, что она ищет с конца строки. Важно отметить, что возвращаемая позиция является позицией с самого начала. Поэтому, если существует только один экземпляр элемента поиска, InStr () и InStrRev () будут возвращать одно и то же значение.

    В следующем коде показаны некоторые примеры использования InStrRev.

    Sub IspInstrRev()
    
        Dim name As String
        name = "Иван Петров"
    
        ' Обе возвращают 1 - позицию, только И
        Debug.Print InStr(name, "И")
        Debug.Print InStrRev(name, "И")
    
        ' Возвращает 11 - вторую в
        Debug.Print InStrRev(name, "в")
        ' Возвращает 3 - первую в с позиции 9
        Debug.Print InStrRev(name, "в", 9)
    
        ' Returns 1
        Debug.Print InStrRev(name, "Иван")
    
    End Sub
    

    Функции InStr и InStrRev полезны при работе с базовым поиском текста. Однако, если вы собираетесь использовать их для извлечения текста из строки, они могут усложнить задачу. Я написал о гораздо лучшем способе сделать это в своей статье Как легко извлечь любой текст без использования VBA InStr.

    Удаление пробелов

    Функция Параметры Описание Пример
    LTrim Текст Убирает
    пробелы слева
    LTrim(» Иван «)
    RTrim Текст Убирает
    пробелы
    справа
    RTrim(» Иван «)
    Trim Текст Убирает
    пробелы слева и справа
    Trim(» Иван «)

    Функции Trim — это простые функции, которые удаляют пробелы в начале или конце строки.

    Функции и примеры использования триммера Trim

    • LTrim удаляет пробелы слева от строки
    • RTrim удаляет пробелы справа от строки
    • Trim удаляет пробелы слева и справа от строки
    Sub TrimStr()
    
        Dim name As String
        name = "  Иван Петров  "
    
        ' Печатает "Иван Петров  "
        Debug.Print LTrim(name)
        ' Печатает "  Иван Петров"
        Debug.Print RTrim(name)
        ' Печатает "Иван Петров"
        Debug.Print Trim(name)
    
    End Sub
    

    Длина строки

    Функция Параметры Описание Пример
    Len Текст Возвращает
    длину строки
    Len («Иван Петров»)

    Len — простая функция при использовании со строкой. Она просто возвращает количество символов, которое содержит строка. Если используется с числовым типом, таким как long, он вернет количество байтов.

    Sub IspLen()
    
        Dim name As String
        name = "Иван Петров"
    
        ' Печатает 11
        Debug.Print Len("Иван Петров")
        ' Печатает 3
        Debug.Print Len("АБВ")
    
        ' Печатает 4 с Long - это размер 4 байта
        Dim total As Long
        Debug.Print Len(total)
    
    End Sub
    

    Перевернуть текст

    Функция Параметры Описание Пример
    StrReverse Текст Перевернуть
    текст
    StrReverse
    («Иван
    Петров»)

    StrReverse — еще одна простая в использовании функция. Он просто возвращает данную строку с обратными символами.

    Sub RevStr()
    
        Dim s As String
        s = "Иван Петров"
        ' Печатает: вортеП навИ
        Debug.Print StrReverse(s)
    
    End Sub
    

    Сравнение

    Функция Параметры Описание Пример
    StrComp Текст1, текст2 Сравнивает 2
    текста
    StrComp
    («Иван»,
    «Иван»)

    Функция StrComp используется для сравнения двух строк. Следующие подразделы описывают, как используется.

    Описание параметров

    StrComp()  String1, String2, Compare[Необязат]

    • String1: первая строка для сравнения
    • String2: вторая строка для сравнения
    • Compare как vbCompareMethod: см. Раздел «Сравнить» для получения более подробной информации.

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

    Возвращаемое значение Описание
    0 Совпадение строк
    -1 строка1 меньше строки2
    1 строка1 больше строки2
    Null если какая-либо строка равна нулю

    Использование и примеры

    Ниже приведены некоторые примеры использования функции StrComp.

    Sub IspStrComp()
    
       ' Возвращает  0
       Debug.Print StrComp("АБВ", "АБВ", vbTextCompare)
       ' Возвращает 1
       Debug.Print StrComp("АБВГ", "АБВ", vbTextCompare)
       ' Возвращает -1
       Debug.Print StrComp("АБВ", "АБВГ", vbTextCompare)
       ' Returns Null
       Debug.Print StrComp(Null, "АБВГ", vbTextCompare)
    
    End Sub
    

    Сравнение строк с использованием операторов

    Вы также можете использовать знак равенства для сравнения строк. Разница между сравнением equals и функцией StrComp:

    1. Знак равенства возвращает только true или false.
    2. Вы не можете указать параметр Compare, используя знак равенства — он использует настройку «Option Compare».  

    Ниже приведены некоторые примеры использования equals для сравнения строк.

    Option Compare Text
    
    Sub CompareIspEquals()
    
        ' Возвращает true
        Debug.Print "АБВ" = "АБВ"
        ' Возвращает true, потому что «Сравнить текст» установлен выше
        Debug.Print "АБВ" = "абв"
        ' Возвращает false
        Debug.Print "АБВГ" = "АБВ"
        ' Возвращает false
        Debug.Print "АБВ" = "АБВГ"
        ' Возвращает null
        Debug.Print Null = "АБВГ"
    
    End Sub
    

    Сравнение строк с использованием сопоставления с шаблоном

    Функция Параметры Описание Пример
    Like Текст, шаблон проверяет, имеет
    ли строка
    заданный
    шаблон
    «abX» Like «??X»
    «54abc5» Like «*abc#»
    Знак Значение
    ? Любой одиночный символ
    # Любая однозначная цифра (0-9)
    * Ноль или более символов
    [charlist] Любой символ в списке
    [!charlist] Любой символ не в списке символов

    Сопоставление с шаблоном используется для определения того, имеет ли строка конкретный образец символов. Например, вы можете проверить, что номер клиента состоит из 3 цифр, за которыми следуют 3 алфавитных символа, или в строке есть буквы XX, за которыми следует любое количество символов.

    Если строка соответствует шаблону, возвращаемое значение равно true, в противном случае — false.

    Сопоставление с образцом аналогично функции формата VBA в том смысле, что его можно использовать практически безгранично. В этом разделе я приведу несколько примеров, которые объяснят, как это работает. Это должно охватывать наиболее распространенные виды использования.

    Давайте посмотрим на базовый пример с использованием знаков. Возьмите следующую строку шаблона.

    [abc][!def]?#X*

     Давайте посмотрим, как работает эта строка

    [abc] — символ, который является или a, b или c
    [! def] — символ, который не является d, e или f
    ? любой символ
    # — любая цифра
    X — символ X
    * следуют ноль или более символов

     Поэтому следующая строка действительна
    apY6X

    а — один из символов a,b,c
    p — не один из символов d, e или f
    Y — любой символ
    6 — это цифра
    Х — это буква Х

    В следующих примерах кода показаны результаты различных строк с этим шаблоном.

    Sub Shabloni()
    
        ' ИСТИНА
        Debug.Print 1; "apY6X" Like "[abc][!def]?#X*"
        ' ИСТИНА - любая комбинация символов после x действительна
        Debug.Print 2; "apY6Xsf34FAD" Like "[abc][!def]?#X*"
        ' ЛОЖЬ - символ не из[abc]
        Debug.Print 3; "dpY6X" Like "[abc][!def]?#X*"
        ' ЛОЖЬ - 2-й символ e находится в [def]
        Debug.Print 4; "aeY6X" Like "[abc][!def]?#X*"
        ' ЛОЖЬ - A в позиции 4 не является цифрой
        Debug.Print 5; "apYAX" Like "[abc][!def]?#X*"
        ' ЛОЖЬ - символ в позиции 5 должен быть X
        Debug.Print 1; "apY6Z" Like "[abc][!def]?#X*"
    
    End Sub
    

    Реальный пример сопоставления с образцом

    Чтобы увидеть реальный пример использования сопоставления с образцом, ознакомьтесь с Примером 3: Проверьте, допустимо ли имя файла.

    Важное примечание о сопоставлении с образцом VBA

    Оператор Like использует двоичное или текстовое сравнение на основе параметра Option Compare. Пожалуйста, смотрите раздел Сравнение для более подробной информации.

    Заменить часть строки

    Функция Параметры Описание Пример
    Replace строка, найти, заменить,
    начать,
    считать,
    сравнивать
    Заменяет текст Replace
    («Ива»,»а»,»ан»)

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

    Replace описание параметров

    Replace()  Expression, Find, Replace, Start[Необязат], Count[Необязат], Compare[Необязат]

    • Expression: текст, в котором нужна замена символов
    • Find: текст для замены в строке выражения
    • Replace: строка для поиска замены текста поиска
    • Start [Необязательно — по умолчанию 1]: начальная позиция в строке
    • Count [Необязательно — по умолчанию -1]: количество замен. По умолчанию -1 означает все.
    • Compare как vbCompareMethod: см. Раздел «Сравнить» для получения более подробной информации.

    Использование и примеры

    В следующем коде показаны некоторые примеры использования функции замены.

    Sub PrimeriReplace()
    
        ' Заменяет все знаки вопроса (?) на точку с запятой (;)
        Debug.Print Replace("A?B?C?D?E", "?", ";")
        ' Заменить Петров на Иванов
        Debug.Print Replace("Евгений Петров,Артем Петров", "Петров", "Иванов")
        ' Заменить AX на AB
        Debug.Print Replace("ACD AXC BAX", "AX", "AB")
    
    End Sub
    

    На выходе:

    A;B;C;D;E
    Евгений Иванов,Артем Иванов
    ACD ABC BAB

    В следующих примерах мы используем необязательный параметр Count. Count определяет количество замен. Так, например, установка Count равной единице означает, что будет заменено только первое вхождение.

    Sub ReplaceCount()
    
        ' Заменяет только первый знак вопроса
        Debug.Print Replace("A?B?C?D?E", "?", ";", Count:=1)
        ' Заменяет первые три знака вопроса
        Debug.Print Replace("A?B?C?D?E", "?", ";", Count:=3)
    
    End Sub
    

    На выходе:

    A;B?C?D?E
    A;B;C;D?E

    Необязательный параметр Start позволяет вам вернуть часть строки. Позиция, которую вы указываете с помощью Start, — это место, откуда начинается возврат строки. Он не вернет ни одной части строки до этой позиции, независимо от того, была ли произведена замена или нет.

    Sub ReplacePartial()
    
        ' Использовать оригинальную строку из позиции 4
        Debug.Print Replace("A?B?C?D?E", "?", ";", Start:=4)
        ' Используйте оригинальную строку из позиции 8
        Debug.Print Replace("AA?B?C?D?E", "?", ";", Start:=8)
        ' Элемент не заменен, но по-прежнему возвращаются только последние '2 символа
        Debug.Print Replace("ABCD", "X", "Y", Start:=3)
    
    End Sub
    

    На выходе:

    ;C;D;E
    ;E
    CD

    Иногда вы можете заменить только заглавные или строчные буквы. Вы можете использовать параметр Compare для этого. Он используется во многих строковых функциях. Для получения дополнительной информации об этом проверьте раздел сравнения.

    Sub ReplaceCase()
    
        ' Заменить только заглавные А
        Debug.Print Replace("AaAa", "A", "X", Compare:=vbBinaryCompare)
        ' Заменить все А
        Debug.Print Replace("AaAa", "A", "X", Compare:=vbTextCompare)
    
    End Sub
    

    На выходе:

    XaXa
    XXXX

    Многократные замены

    Если вы хотите заменить несколько значений в строке, вы можете вкладывать вызовы. В следующем коде мы хотим заменить X и Y на A и B соответственно.

    Sub ReplaceMulti()
    
        Dim newString As String
    
        ' Заменить А на Х
        newString = Replace("ABCD ABDN", "A", "X")
        ' Теперь замените B на Y в новой строке
        newString = Replace(newString, "B", "Y")
    
        Debug.Print newString
    
    End Sub
    

    В следующем примере мы изменим приведенный выше код для выполнения той же задачи. Мы будем использовать возвращаемое значение первой замены в качестве аргумента для второй замены.

    Sub ReplaceMultiNested()
    
        Dim newString As String
    
        ' Заменить A на X, а B на Y
        newString = Replace(Replace("ABCD ABDN", "A", "X"), "B", "Y")
    
        Debug.Print newString
    
    End Sub
    

    Результатом обоих этих Subs является:
    XYCD XYDN

    Преобразовать типы в строку (базовый)

    Этот раздел о преобразовании чисел в строку. Очень важным моментом здесь является то, что в большинстве случаев VBA автоматически конвертируется в строку для вас. Давайте посмотрим на некоторые примеры:

    Sub AutoConverts()
    
        Dim s As String
        ' Автоматически преобразует число в строку
        s = 12.99
        Debug.Print s
    
        ' Автоматически преобразует несколько чисел в строку
        s = "ABC" & 6 & 12.99
        Debug.Print s
    
        ' Автоматически преобразует двойную переменную в строку
        Dim d As Double, l As Long
        d = 19.99
        l = 55
        s = "Значения: " & d & " " & l
        Debug.Print s
    
    End Sub
    

    Когда вы запустите приведенный выше код, вы увидите, что число было автоматически преобразовано в строки. Поэтому, когда вы присваиваете значение строке, VBA будет следить за преобразованием большую часть времени. В VBA есть функции преобразования, и в следующих подразделах мы рассмотрим причины их использования.

    Явное преобразование

    Функция Параметры Описание Пример
    CStr выражение Преобразует
    числовую
    переменную
    в строку
    CStr («45.78»)
    Str число Преобразует
    числовую
    переменную
    в строку
    Str («45.78»)

    В некоторых случаях вы можете захотеть преобразовать элемент в строку без необходимости сначала помещать его в строковую переменную. В этом случае вы можете использовать функции Str или CStr. Оба принимают выражение как функцию, и это может быть любой тип, например long, double, data или boolean.

    Давайте посмотрим на простой пример. Представьте, что вы читаете список значений из разных типов ячеек в коллекцию. Вы можете использовать функции Str / CStr, чтобы гарантировать, что они все хранятся в виде строк. Следующий код показывает пример этого:

    Sub IspStr()
    
        Dim coll As New Collection
        Dim c As Range
    
        ' Считать значения ячеек в коллекцию
        For Each c In Range("A1:A10")
            ' Используйте Str для преобразования значения ячейки в строку
            coll.Add Str(c)
        Next
    
        ' Распечатайте значения и тип коллекции
        Dim i As Variant
        For Each i In coll
            Debug.Print i, TypeName(i)
        Next
    
    End Sub
    

    В приведенном выше примере мы используем Str для преобразования значения ячейки в строку. Альтернативой этому может быть присвоение значения строке, а затем присвоение строки коллекции. Итак, вы видите, что использование Str здесь намного эффективнее.

    Multi Region

    Разница между функциями Str и CStr заключается в том, что CStr преобразует в зависимости от региона. Если ваши макросы будут использоваться в нескольких регионах, вам нужно будет использовать CStr для преобразования строк.

    Хорошей практикой является использование CStr при чтении значений из ячеек. Если ваш код в конечном итоге используется в другом регионе, вам не нужно вносить какие-либо изменения, чтобы он работал правильно.

    Преобразовать строку в число — CLng, CDbl, Val и т.д.

    Функция Возвращает Пример
    CBool Boolean CBool(«True»), CBool(«0»)
    CCur Currency CCur(«245.567»)
    CDate Date CDate(«1/1/2019»)
    CDbl Double CDbl(«245.567»)
    CDec Decimal CDec(«245.567»)
    CInt Integer CInt(«45»)
    CLng Long Integer CLng(«45.78»)
    CVar Variant CVar(«»)

    Вышеуказанные функции используются для преобразования строк в различные типы. Если вы присваиваете переменную этого типа, VBA выполнит преобразование автоматически.

    Sub StrToNumeric()
    
        Dim l As Long, d As Double, c As Currency
        Dim s As String
        s = "45.923239"
    
        l = s
        d = s
        c = s
    
        Debug.Print "Long is "; l
        Debug.Print "Double is "; d
        Debug.Print "Currency is "; c
    
    End Sub
    

    Использование типов преобразования дает большую гибкость. Это означает, что вы можете определить тип во время выполнения. В следующем коде мы устанавливаем тип на основе аргумента sType, передаваемого в функцию PrintValue. Поскольку этот тип может быть прочитан из внешнего источника, такого как ячейка, мы можем установить тип во время выполнения. Если мы объявим переменную как Long, то при выполнении кода она всегда будет длинной.

    Sub Test()
        ' Печатает  46
        PrintValue "45.56", "Long"
        ' Печатает 45.56
        PrintValue "45.56", ""
    End Sub
    
    Sub PrintValue(ByVal s As String, ByVal sType As String)
    
        Dim value
    
        ' Установите тип данных на основе строки типа
        If sType = "Long" Then
            value = CLng(s)
        Else
            value = CDbl(s)
        End If
        Debug.Print "Type is "; TypeName(value); value
    
    End Sub
    

    Если строка не является допустимым числом (т.е. Содержит символы, другие цифры), вы получаете ошибку «Несоответствие типов».

    Sub InvalidNumber()
    
        Dim l As Long
    
        ' Даст ошибку несоответствия типов
        l = CLng("45A")
    
    End Sub
    

    Функция Val

    Функция преобразует числовые части строки в правильный тип числа.

    Val преобразует первые встреченные числа. Как только он встречает буквы в строке, он останавливается. Если есть только буквы, то в качестве значения возвращается ноль. Следующий код показывает некоторые примеры использования Val

    Sub IspVal()
    
        ' Печатает 45
        Debug.Print Val("45 Новая улица")
    
        ' Печатает 45
        Debug.Print Val("    45 Новая улица")
    
        ' Печатает 0
        Debug.Print Val("Новая улица 45")
    
        ' Печатает 12
        Debug.Print Val("12 f 34")
    
    End Sub
    

    Val имеет два недостатка

    1. Не мультирегиональный — Val не распознает международные версии чисел, такие как запятые вместо десятичных. Поэтому вы должны использовать вышеуказанные функции преобразования, когда ваше приложение будет использоваться в нескольких регионах.
    2. Преобразует недопустимые строки в ноль — в некоторых случаях это может быть нормально, но в большинстве случаев лучше, если неверная строка вызывает ошибку. Затем приложение осознает наличие проблемы и может действовать соответствующим образом. Функции преобразования, такие как CLng, вызовут ошибку, если строка содержит нечисловые символы.

    Генерация строки элементов — функция строки

    Функция Параметры Описание Пример
    String число, символ Преобразует
    числовую
    переменную
    в строку
    String (5,»*»)

    Функция String используется для генерации строки повторяющихся символов. Первый аргумент — это количество повторений, второй аргумент — символ.

    Sub IspString()
    
        ' Печатает: AAAAA
        Debug.Print String(5, "A")
        ' Печатает: >>>>>
        Debug.Print String(5, 62)
        ' Печатает: (((ABC)))
        Debug.Print String(3, "(") & "ABC" & String(3, ")")
    
    End Sub
    

    Преобразовать регистр / юникод — StrConv, UCase, LCase

    Функция Параметры Описание Пример
    StrConv строка,
    преобразование, LCID
    Преобразует
    строку
    StrConv(«abc»,vbUpperCase)

    Если вы хотите преобразовать регистр строки в верхний или нижний регистр, вы можете использовать функции UCase и LCase для верхнего и нижнего соответственно. Вы также можете использовать функцию StrConv с аргументом vbUpperCase или vbLowerCase. В следующем коде показан пример использования этих трех функций.

    Sub ConvCase()
    
        Dim s As String
        s = "У Мэри был маленький ягненок"
    
        ' верхний
        Debug.Print UCase(s)
        Debug.Print StrConv(s, vbUpperCase)
    
        ' нижний
        Debug.Print LCase(s)
        Debug.Print StrConv(s, vbLowerCase)
    
        ' Устанавливает первую букву каждого слова в верхний регистр
        Debug.Print StrConv(s, vbProperCase)
    
    End Sub
    

    На выходе: 

    У МЭРИ БЫЛ МАЛЕНЬКИЙ ЯГНЕНОК
    У МЭРИ БЫЛ МАЛЕНЬКИЙ ЯГНЕНОК
    у мэри был маленький ягненок
    у мэри был маленький ягненок
    У Мэри Был Маленький Ягненок

    Другие преобразования

    Как и в случае, StrConv может выполнять другие преобразования на основе параметра Conversion. В следующей таблице приведен список различных значений параметров и того, что они делают. Для получения дополнительной информации о StrConv проверьте страницу MSDN.

    Постоянные Преобразует Значение
    vbUpperCase 1 в верхний регистр
    vbLowerCase 2 в нижнем регистре
    vbProperCase 3 первая буква
    каждого слова в
    верхнем регистре
    vbWide* 4 от узкого к
    широкому
    vbNarrow* 8 от широкого к
    узкому
    vbKatakana** 16 из Хираганы в
    Катакану
    vbHiragana 32 из Катаканы в
    Хирагану
    vbUnicode 64 в юникод
    vbFromUnicode 128 из юникода

    Использование строк с массивами

    Функция Параметры Описание Пример
    Split выражение,
    разделитель,
    ограничить,
    сравнить
    Разбирает
    разделенную
    строку в
    массив
    arr = Split(«A;B;C»,»;»)
    Join исходный
    массив,
    разделитель
    Преобразует
    одномерный
    массив в
    строку
    s = Join(Arr, «;»)

    Строка в массив с использованием Split

    Вы можете легко разобрать строку с разделителями в массив. Вы просто используете функцию Split с разделителем в качестве параметра. Следующий код показывает пример использования функции Split.

    Sub StrToArr()
    
        Dim arr() As String
        ' Разобрать строку в массив
        arr = Split("Иван,Анна,Павел,София", ",")
    
        Dim name As Variant
        For Each name In arr
            Debug.Print name
        Next
    
    End Sub
    

    На выходе:

    Иван
    Анна
    Павел
    София

    Если вы хотите увидеть некоторые реальные примеры использования Split, вы найдете их в статье Как легко извлечь любую строку без использования VBA InStr.

    Массив в строку, используя Join

    Если вы хотите построить строку из массива, вы можете легко это сделать с помощью функции Join. По сути, это обратная функция Split. Следующий код предоставляет пример использования Join

    Sub ArrToStr()
    
        Dim Arr(0 To 3) As String
        Arr(0) = "Иван"
        Arr(1) = "Анна"
        Arr(2) = "Павел"
        Arr(3) = "София"
    
        ' Построить строку из массива
        Dim sNames As String
        sNames = Join(Arr, ",")
    
        Debug.Print sNames
    
    End Sub
    

    На выходе:

    Иван, Анна, Павел, София

    Форматирование строки

    Функция Параметры Описание Пример
    Format выражение,
    формат,
    firstdayofweek,
    firstweekofyear
    Форматирует
    строку
    Format(0.5, «0.00%»)

    Функция Format используется для форматирования строки на основе заданных инструкций. В основном используется для размещения даты или числа в определенном формате. Приведенные ниже примеры показывают наиболее распространенные способы форматирования даты.

    Sub FormatDate()
    
        Dim s As String
        s = "31/12/2019 10:15:45"
    
        ' Печатает: 31 12 19
        Debug.Print Format(s, "DD MM YY")
        ' Печатает: Thu 31 Dec 2019
        Debug.Print Format(s, "DDD DD MMM YYYY")
        ' Печатает: Thursday 31 December 2019
        Debug.Print Format(s, "DDDD DD MMMM YYYY")
        ' Печатает: 10:15
        Debug.Print Format(s, "HH:MM")
        ' Печатает: 10:15:45 AM
        Debug.Print Format(s, "HH:MM:SS AM/PM")
    
    End Sub
    

    В следующих примерах представлены некоторые распространенные способы форматирования чисел.

    Sub FormatNumbers()
    
        ' Печатает: 50.00%
        Debug.Print Format(0.5, "0.00%")
        ' Печатает: 023.45
        Debug.Print Format(23.45, "00#.00")
        ' Печатает: 23,000
        Debug.Print Format(23000, "##,000")
        ' Печатает: 023,000
        Debug.Print Format(23000, "0##,000")
        ' Печатает: $23.99
        Debug.Print Format(23.99, "$#0.00")
    
    End Sub
    

    Функция «Формат» — довольно обширная тема, и она может самостоятельно занять всю статью. Если вы хотите получить больше информации, то страница формата MSDN предоставляет много информации.

    Полезный совет по использованию формата

    Быстрый способ выяснить используемое форматирование — использовать форматирование ячеек на листе Excel. Например, добавьте число в ячейку. Затем щелкните правой кнопкой мыши и отформатируйте ячейку так, как вам нужно. Если вы довольны форматом, выберите «Пользовательский» в списке категорий слева. При выборе этого вы можете увидеть строку формата в текстовом поле типа. Это формат строки, который вы можете использовать в VBA.

    VBA Format Function

    Заключение

    Практически в любом типе программирования вы потратите много времени на манипулирование строками. В этой статье рассматриваются различные способы использования строк в VBA.

    Чтобы получить максимальную отдачу, используйте таблицу вверху, чтобы найти тип функции, которую вы хотите использовать. Нажав на левую колонку этой функции, вы попадете в этот раздел.

    Если вы новичок в строках в VBA, то я предлагаю вам ознакомиться с разделом «Прочтите это в первую очередь» перед использованием любой из функций.

    Понравилась статья? Поделить с друзьями:
  • Excel найти наименьшее значение если
  • Excel найти наибольшее значение в столбце по условию
  • Excel найти минимум если
  • Excel найти минимальное значение в ячейке
  • Excel найти массив всех значений по условию