Строковые функции Excel VBA: LEFT, RIGHT, MID, LEN, REPLACE, INSTR, INSTRREV

На чтение
15 мин
Дата обновления
10.03.2025
Формат:Самостоятельно с наставником
Системный аналитик с нуля: тариф PRO
Курс "Системный аналитик с нуля: тариф PRO" поможет вам стать востребованным специалистом в области аналитики и разработки систем. Вы получите не только глубокие теоретические знания, но и ценные практические навыки, такие как создание и анализ требований, проектирование систем и взаимодействие с командой разработки. Участвуя в реальных проектах и выполняя практические задания, вы сможете создать впечатляющее портфолио и получить поддержку экспертов, а также сертификат, который подтвердит ваши новые компетенции!
95760 ₽239400 ₽
7980 ₽/мес рассрочка
Подробнее

Строковые функции Excel VBA:

Строковые функции Excel VBA для поиска и замены текста с примерами: LEFT, RIGHT, MID, LEN, REPLACE, Функции InStr и InStrRev

———————————— ——————-

Содержание:

Функция LEFT (рабочий лист/VBA)

Функция RIGHT (рабочий лист/VBA)

Функция MID (рабочий лист/VBA)

Функция LEN (рабочий лист/VBA)

Функция REPLACE (рабочий лист)

Функция REPLACE (VBA)

InStr & Функции InStrRev (VBA)

——————————- ————————

В Excel vba String относится к последовательности смежных символов в кавычках, а именно. «Это строковое выражение в кавычках в vba». Эти символы буквально интерпретируются как символы в том смысле, что они представляют сами символы, а не их числовые значения. Строка может включать буквы, цифры, пробелы и знаки препинания. Строковое выражение может иметь в качестве своих элементов строку из смежных символов, функцию, возвращающую строку, строковую переменную, строковую константу или вариант строки. В этом разделе подробно обсуждается использование строковых функций Excel VBA для управления текстовыми строками с помощью кода vba. Также см. Связанную ссылку: Строковые функции Excel VBA: SPLIT, JOIN, CONCATENATE .

Функция LEFT (рабочий лист/VBA)

Функция Excel LEFT может использоваться как как функция рабочего листа, так и как Функция VBA. Функция LEFT возвращает указанное количество символов в текстовой строке, начиная с первого или крайнего левого символа. Используйте эту функцию для извлечения подстроки из левой части текстовой строки. Синтаксис: LEFT (текстовая_строка, символьные_числа) . Необходимо упомянуть аргумент text_string , который представляет собой текстовую строку, из которой вы хотите извлечь указанное количество символов. Аргумент char_numbers является необязательным (при использовании в качестве функции рабочего листа), он указывает количество символов, извлекаемых из текстовой строки. Значение char_numbers должно быть равно или больше нуля; если она больше, чем длина текстовой строки, функция LEFT вернет текстовую строку полностью; если опущено, по умолчанию будет 1. При использовании в качестве функции VBA необходимо указать оба аргумента, и если text_string содержит Null, функция также возвращает Null.

Функция ПРАВО (рабочий лист/VBA)

Функция Excel RIGHT может использоваться как функция рабочего листа, так и функция VBA. Функция RIGHT возвращает указанное количество символов в текстовой строке, начиная с последнего или самого правого символа. Используйте эту функцию для извлечения подстроки из правой части текстовой строки. Синтаксис: RIGHT (текст_строка, символьные_числа) . Необходимо упомянуть аргумент text_string , который представляет собой текстовую строку, из которой вы хотите извлечь указанное количество символов. Аргумент char_numbers является необязательным (при использовании в качестве функции рабочего листа), он указывает количество символов, извлекаемых из текстовой строки. Значение char_numbers должно быть равно или больше нуля; если она больше, чем длина текстовой строки, функция RIGHT вернет текстовую строку полностью; если опущено, по умолчанию будет равно 1. При использовании в качестве функции VBA необходимо указать оба аргумента, и если text_string содержит Null, функция также возвращает Null.

Функция MID (рабочий лист/VBA)

Функция Excel MID может использоваться как функция рабочего листа, так и функция VBA. Функция MID возвращает указанное количество символов в текстовой строке, начиная с указанной позиции (т. Е. Начиная с указанного номера символа). Используйте эту функцию для извлечения подстроки из любой части текстовой строки. Синтаксис: MID (текстовая_строка, начальное_число, символьные_числа) . Аргумент text_string — это текстовая строка, из которой вы хотите извлечь указанное количество символов. Аргумент start_number указывает номер символа, с которого следует начать извлечение подстроки, при этом первым символом в текстовой строке является start_number 1 и увеличивается вправо. Аргумент char_numbers указывает количество символов, извлекаемых из текстовой строки.

Если start_number больше, чем длина текстовой строки, возвращается пустая строка (нулевой длины); если он меньше, чем длина текстовой строки, но вместе с char_numbers (т.е. start_number PLUS char_numbers) он больше, чем длина текстовой строки, функция MID вернет текстовую строку полностью от позиции start_number до конца текстовой строки.

Использование функции MID как функции рабочего листа , если для char_numbers указано отрицательное значение, MID вернет #VALUE! значение ошибки; если start_number меньше 1, MID вернет #VALUE! значение ошибки. Все аргументы необходимо указать при использовании функции рабочего листа.

Использование функции MID в качестве функции VBA: Аргумент char_numbers является необязательным при использовании в качестве функции VBA, а если он опущен, функция вернет текстовую строку полностью от позиции start_number до конца текстовой строки. Все остальные аргументы необходимо указать при использовании в качестве функции vba. Если text_string содержит Null, функция также возвращает Null.

Функция LEN (рабочий лист/VBA)

Функция LEN в Excel может использоваться как как функция рабочего листа, так и как функция VBA. Функция LEN рабочего листа возвращает количество символов в текстовой строке. Используйте эту функцию, чтобы получить длину текстовой строки. Синтаксис: LEN (текстовая_строка) . Необходимо упомянуть аргумент text_string , который представляет собой текстовую строку, длину которой вы хотите получить в количестве символов. Обратите внимание, что пробелы также считаются символами. Функция LENB рабочего листа возвращает количество байтов, используемых для представления символов в текстовой строке — каждый символ считается 1 байтом, кроме случаев, когда язык DBCS [а именно. Японский, китайский (упрощенный), китайский (традиционный) и корейский] установлен в качестве языка по умолчанию, при этом символ считается как 2 байта. Синтаксис: LENB (текст_строка) .

Пока с использованием LEN как функция VBAСинтаксис: Len (text_string) или Len (variable_name) — вы можете использовать текстовую строку или имя переменной, и функция вернет значение типа Long, представляющее количество символов, содержащихся в строке, или количество байтов, необходимых для хранения переменной. Использование функции vba Len для переменной типа вариант будет рассматривать переменную как строку и возвращать количество содержащихся в ней символов. Text_string или переменная, содержащая Null, также вернет Null. Функция vba Len возвращает количество символов в строке, где переменная имеет подтип String или Variant, а переменная имеет подтип numeric, функция возвращает количество байтов, используемых для хранения переменной.

Пример — использование функций Left, Right, Mid и Len в коде vba.

Sub Left_Right_Mid_Len ()
‘с использованием функций vba Left, Right, Mid & Len.

Dim str As String, strLeft As String, strRight As String, strMid As String

str = «Джеймс Бонд»

strLeft = Left (str, 7)

‘возвращает «Джеймс Б», то есть первые 7 символов (пробел считается отдельным символом).

MsgBox strLeft

strLeft = Left (str, 15)

‘возвращает «Джеймс Бонд», все символы в ячейке A1, потому что число 15, указанное в функции, превышает длину строки в 10 символов..

MsgBox strLeft

strRight = Right (str, 7)

‘возвращает «es Bond «, которые представляют собой последние 7 символов (пробел считается отдельным символом).

MsgBox strRight

strRight = Right (str, 15)

‘возвращает «Джеймс Бонд», все символы в ячейке A1, потому что число 15, указанное в функции, превышает длину строки в 10 символов.

MsgBox strRight

strMid = Mid (str, 2, 6)

‘Возвращает «ames B» . Начинается со второго символа т.е. «a», а затем указывает, что 6 символов должны быть возвращены, начиная с «a».

MsgBox strMid

strMid = Mid (str, 2, 15)

‘Возвращает «Эймс Бонд». Возвращает все символы, начиная со второго символа (позиция start_number) «a», поскольку указанные символы из 15 плюс начальное число 2 (то есть всего 17) превышают длину строки в 10 символов.

MsgBox strMid

strMid = Mid (str, 2)

‘Возвращает «Эймс Бонд». Возвращает все символы, начиная со второго символа (позиция start_number) «a», поскольку второй аргумент (char_numbers) опущен.

MsgBox strMid

strMid = Mid (str, 12, 2)

‘Возвращает пустую строку (нулевой длины), поскольку начальное число 12 превышает длину строки в 10 символов.

MsgBox strMid

‘Возвращает 10 — длину строки, измеряемую количеством символов.

MsgBox Len (str)

‘Возвращает 10 — длину строки, измеряемую ее количеством символов.

MsgBox Len ( «Джеймс Бонд»)

End Sub

Пример — Использование функции vba Len — типы переменных.

Sub Len_vbaFunc ()
‘с использованием функции vba Len — типы переменных

‘—————————

‘ в обоих случаях возвращает 3 — количество символов в строке:

MsgBox Len («bad»)

MsgBox Len («245»)

‘возвращает 10 — количество символов в строке, включая пробел:

MsgBox Len («James Bond»)

‘—————————

‘ переменная варианта типа обрабатывается как строка

Dim vVar As Variant

vVar = 245

‘возвращает 2, указывая переменную subtype Integer:

MsgBox VarType (vVar)

‘Возвращает 3, количество символов, содержащихся в переменной — функции Len обрабатывают вариантную переменную как строку:

MsgBox Len (vVar)

‘—————— ———-

‘переменная типа string

Dim strVar As String

strVar = » Джеймс Бонд «

‘возвращает 8, указывая подтип переменной String:

M sgBox VarType (strVar)

‘Возвращает 10, количество символов, содержащихся в переменной типа String:

MsgBox Len (strVar)

‘—————————

‘ переменная типа integer

Dim iVar As Integer

iVar = 245

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

MsgBox Len (iVar)

‘переменная типа long

Dim lVar As Long

lVar = 245

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

MsgBox Len (lVar)

‘переменная типа single

Dim sVar As Single

sVar = 245,567

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

MsgBox Len (sVar)

‘переменная типа double

Dim dVar As Double

dVar = 245.567

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

MsgBox Len (dVar)

‘————— ————

End Sub

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

Sub Mid_Len_OddNoCharacters ()
‘ Использование функций LEN и MID для определения символов, появляющихся в нечетных позициях в текстовой строке
Sheets («Sheet1»). Активировать
Dim str As String, strOdd, i As Integer
‘присвоить текстовую строку в ячейке A2 («HELLO») переменной (str)
str = ActiveSheet.Range («A2»). Value
‘цикл через каждый символ — функция vba Len определяет длину или количество символов в текстовой строке
For i = 1 To Len (str)
‘проверить позицию нечетного числа
If i Mod 2 = 1 Then
‘ вернуть символ в позиции нечетного числа и добавить его в строковая переменная srtOdd
‘Функция vba Mid извлекает 1 символ из str, начиная с символа с номером i
strOdd = strOdd & Mid (str, i, 1)
End If
Next
MsgBox strOdd
‘введите строку (переменную srtOdd), содержащую нечетные позиции символы в ячейке A3 («HLO»)
Range («A3»). Value = strOdd
End Sub

Пример — использование функций LEFT, LEN и MID для возврата инициалов полного имени.

Sub Left_Mid_Len_InitialsOfName ()
‘Использование функций LEFT, LEN и MID для возврата urn инициалы полного имени.
‘возвращать инициалы из текстовой строки, содержащей полное имя, состоящее из нескольких слов
‘ рассматривать строку, содержащую имя, отчество (имена) и фамилию, имеющие между пробелами — вернуть инициалы полного имени, где после каждого инициала ставится точка и пробел.


Sheets («Sheet1»). Активировать
Dim strName As String, strInitials As String
Dim i As Integer
‘назначить переменную strName текстовой строке — имя, отчество (имена) и фамилию с между пробелами:
‘strName = «Alec Thomas Stone Hanson»
strName = ActiveSheet.Range («A6»). Value
‘цикл по каждому символу:
For i = 1 To Len (strName)
‘ если первый символ
Если i = 1, то
‘, если первый символ не является пробелом, он будет начальным:
If Left (strName, i) «» Затем
‘добавить точку после первого начального
strInitials = Left (st rName, 1) & «.»
End If
‘if NOT first character
Else
‘если любому символу после первого символа предшествует пробел, он будет начальным:
Если Mid (strName, i — 1, 1) = «» And Mid (strName , i, 1) «» Then
‘определяет, если первый начальный
If Len (strInitials)
‘добавить точку после первого инициала
strInitials = Mid (strName, i, 1) & «.»
‘ для нескольких инициалов:
Else
‘для нескольких инициалов, добавьте к предыдущим инициалам:
strInitials = strInitials & «» & Mid (strName, i, 1) & «. «
End If
End If
End If
Next i
‘конвертирует все инициалы в верхний регистр:
strInitials = UCase (strInitials)
‘ возвращает «A. TSH «и введите строковую переменную strInitials в ячейку A7
MsgBox strInitials
Range (» A7 «). Value = strInitials
‘возвращает 11–4 буквы, 4 точки и 3 пробела
MsgBox Len (strInitials)
End Sub

Функция REPLACE (рабочий лист)

Функция REPLACE на рабочем листе заменяет часть текстовой строки новой текстовой строкой на основе указанного количества символов и начиная с указанной позиции. Синтаксис: REPLACE (old_text, start_number, number_of_chars, new_text) . Необходимо указать все аргументы. old_text — это текстовая строка, в которой вы хотите заменить новый текст. Аргумент start_number — это позиция символа в old_text, который вы хотите заменить ( т.е. позиция первого символа, с которого замена должен начаться). Позиция — это номер символа, первый символ — это цифра 1 и увеличивается вправо. number_of_chars — это количество символов, которые будут заменены в old_text (на new_text). new_text — это текстовая строка, которая заменяет символы в old_text.

Пример — использование функции замены рабочего листа в коде vba для удаления пробелов, превышающих указанное число, в строке

Функция DeleteBlankSpaces (str As String, iSpaces As Integer) As String
‘с использованием функции замены рабочего листа в коде vba для удаления пробелов, превышающих указанное число, внутри string (str)
‘используйте этот код для сокращения нескольких пробелов в строке до указанного количества пробелов (iSpaces)
‘ этот код также может удалять ВСЕ пробелы в строке
‘этот код также может преобразовывать несколько пробелов в один пробел в строке, аналогично функции обрезки рабочего листа, за исключением того, что при использовании обрезки удаляются ВСЕ пробелы перед первым (непробельным) символом.



Dim n As Integer, counter As Integer
counter = 0
‘начать с последнего символа в строке и перейти к первому
For n = Len (str) To 1 Step -1
‘, если символ — это пробел
If Mid (str, n, 1) = «» Тогда
‘увеличивает счетчик на 1
counter = counter + 1
‘если пустое пространство (а) равно или меньше указанного числа
Если counter
‘ go к следующему символу, т.е.. next n
GoTo пропустить
‘если пробел (а) превышает указанное число, то удалить
Else
‘с использованием функции Replace на листе для замены строкой нулевой длины
str = Application.Replace (str, n, 1, «»)
End If
‘, если символ НЕ является пробелом, перейти к следующему символу, т.е. следующий n
Else
‘восстановить до 0, если не пустой символ
counter = 0
End If
skip:
Next n
‘функция возвращает последнюю строку после удаления лишних последовательных пробелов пробелы
DeleteBlankSpaces = str
Конечная функция
Sub DelBlSp ()
‘удаляет лишние последовательные пробелы в строке (str), т.е. сверх указанного числа
‘Примечание: этот код не гарантирует единый номер. пробелов, но удаляет ТОЛЬКО лишние пробелы

Sheets («Sheet1»). Активировать
Dim strText As String, iSpaces As Integer
‘назначить строку в ячейке A10 («Указать максимальное количество пробелов в тексте.») активного листа переменной (strText)
strText = ActiveSheet.Range ( «A10»). Значение
‘указывает максимальное количество последовательных пробелов, которые следует сохранить в строке — эта процедура удалит пробелы, превышающие это указанное число
‘ назначьте это максимальное число переменной iSpaces
iSpaces = 2
‘strText содержит 4 пробела после «Укажите», 4 пробела после «пробелов «& 3 пробела после» текста «, все из которых уменьшены до 2 пробелов
‘введите последнюю строку в ячейку A11 (» Укажите максимальное количество пробелов в тексте. «) Активного листа — вызов Функция DeleteBlankSpaces и передает аргументы строки (strText) и указанные пробелы (iSpaces)
ActiveSheet.Range («A11»). Value = DeleteBlankSpaces (str Текст, iSpaces)
End Sub
Пример — убедитесь, что единообразный номер последовательных пробелов в строке, где присутствуют существующие пробелы

Функция UniformBlankSpaces (str As String, iSpaces As Integer) As String
‘Обеспечивает единый номер. последовательных пробелов в строке, где присутствуют существующие пробелы
Dim n As Integer, counter As Integer
‘counter используется для определения нет. последовательных пробелов
counter = 0
‘начать с последнего символа в строке и перейти к первому
Для n = Len (str) To 1 Step -1
‘, если символ является пробелом
Если Mid (str, n, 1) = «» Затем
‘увеличить счетчик на 1
counter = counter + 1
‘, если пробел (а) меньше указанного числа
If counter
‘, если первый символ строки является пробелом
Если n = 1 Then
‘добавить пробел
str = Left (str, 1) & «» & Right (str, Len (str) — n)
‘если символ, предшествующий пробелу в n, НЕ является пробелом
ElseIf Mid (str, n — 1, 1) «» Then
‘ добавить пробел
str = Mid (str, 1, n) & «» & Right (str, Len (str) — n)
‘, если предшествующий символ пробел в n также является пробелом.
Else
‘перейти к следующему символу, т.е. следующий n
GoTo skip
End If
‘если пустое пространство (а) превышает указанное число, затем удалить
ElseIf counter> iSpaces Then
‘с использованием функции Replace на листе для замены строкой нулевой длины
str = Application.Replace ( str, n, 1, «»)
End If
‘если символ НЕ является пробелом, перейти к следующему символу, т.е. next n
Else
‘восстанавливает счетчик до 0, если символ непустой
counter = 0
End If
skip:
Next n
‘функция возвращает последнюю строку с одинаковым последовательным пробелом пробелы
UniformBlankSpaces = str
Конечная функция
Sub UniformBlSp ()
‘убедитесь, что единообразный нет. последовательных пробелов в строке, где присутствуют существующие пробелы
‘Примечание: этот код гарантирует единый номер. пробелов, г