В этом руководстве будет показано, как использовать функцию Mid VBA для извлечения символов из середины текстовой строки.
Средняя функция
Средняя функция Получить n символов
Функция VBA Mid возвращает n символов из строки, начиная с позиции m:
123456789 | Sub MidExample_1 ()MsgBox Mid ("ABCDEFGHI", 4, 1) 'Результат: "D"MsgBox Mid ("ABCDEFGHI", 4, 2) 'Результат: "DE"MsgBox Mid ("ABCDEFGHI", 4, 50) 'Результат: "DEFGHI"MsgBox Mid ("ABCDEFG hI", 6, 1) 'Результат: "F"MsgBox Mid («ABCDEFG hI», 6, 2) »Результат:« FG »MsgBox Mid ("ABCDEFG hI", 6, 4) 'Результат: "FG h"Конец подписки |
Функция Mid: получить n символов в переменной
Как показано выше, вы можете определить строку, просто введя текст в кавычках. Но функция MID также работает со строковыми переменными. Эти примеры извлекут n символов из строки, начиная с позиции m.
12345678 | Sub MidExample_2 ()Dim StrEx As String 'Определите строковую переменнуюStrEx = "ABCDEFGHI"MsgBox Mid (StrEx, 2, 1) 'Результат: «B»MsgBox Mid (StrEx, 2, 2) 'Результат: «BC»MsgBox Mid (StrEx, 2, 50) 'Результат: "BCDEFGHI"Конец подписки |
Функция Mid: получить n символов из ячейки
Строки можно определять в коде VBA, но также можно использовать значения из ячеек. Прочтите значение ячейки, сохраните его в строковой переменной и извлеките n символов из этого значения ячейки рабочего листа, начиная с позиции m.
1234567891011 | Sub MidExample_3 ()Dim StrEx As String 'Определите строковую переменную'Прочтите значение ячейки A1 на листе Sheet1StrEx = ThisWorkbook.Worksheets ("Sheet1"). Range ("A1"). Value'В этом примере значение ячейки A1 - «Да пребудет с тобой Сила».MsgBox Mid (StrEx, 4, 6) 'Результат: "F" (обратите внимание на пробел в начале)MsgBox Mid (StrEx, 2, 8) 'Результат: "ау буква"MsgBox Mid (StrEx, 3, 4) 'Результат: «y th»Конец подписки |
Средняя функция Заменить n символов
В приведенных выше примерах функция Mid не изменила исходную строку. Он вернул его часть, оставив исходную строку нетронутой. Функция Mid может использоваться для замены символов в строке.
12345678910111213141516171819202122 | Sub MidExample_4 ()Dim StrEx As String 'Определите строковую переменнуюSub MidExample_4 ()Dim StrEx As String 'Определите строковую переменнуюStrEx = "Да пребудет с тобой Сила"Mid (StrEx, 5, 1) = "VWXYZ"Результат MsgBox StrEx: «Да пребудет с тобой Хорс»'Средняя функция нашла позицию 5 и заменила 1 символ в исходной строкеStrEx = "Да пребудет с тобой Сила"Mid (StrEx, 5, 3) = "VWXYZ"Результат MsgBox StrEx: «Да пребудет с тобой VWX Horce»'Средняя функция нашла позицию 5 и заменила 3 символа в исходной строкеStrEx = "Да пребудет с тобой Сила"Mid (StrEx, 5, 8) = "VWXYZ"Результат MsgBox StrEx: «Да пребудет с вами VWXYZorce»'Средняя функция нашла позицию 5 и попыталась заменить 8 символов.«VWXYZ» содержит всего 5 символов, поэтому были заменены только 5 символов.Конец подписки |
Функция Mid: извлечение второго слова из фразы
Мы можем использовать функцию VBA Mid с функцией VBA Instr, чтобы получить второе слово в тексте.
Функция VBA InStr может возвращать позицию символа внутри текста.
1 | InStr ("Два слова", "") 'Результат: 4 |
Мы можем использовать InStr для поиска первого пробела, затем мы можем снова использовать InStr, начиная поиск после первого пробела, чтобы найти второй пробел в тексте. Наконец, мы можем использовать функцию Mid для извлечения слова, потому что мы знаем начальную позицию второго слова и его длину (разницу между двумя позициями пробелов).
12345678910111213141516171819202122232425 | Sub MidExample_5 ()Dim StrEx As String 'Определите строковую переменнуюDim StartPos As IntegerDim EndPos как целое числоТусклое второе слово как строкаStrEx = "Джеймс Эрл Джонс - актер"StartPos = InStr (StrEx, "")Результат - 6'Найдите позицию первого пробелаEndPos = InStr (StartPos + 1, StrEx, "")Результат - 11'Найдите позицию второго пробела, начав поиск после первого пробелаSecondWord = Mid (StrEx, StartPos + 1, EndPos - StartPos - 1)'Mid извлекает символы, начинающиеся после первого пробела (StartPos +1)'Mid также использует длину второго слова.'В этом разница между позициями пробелов -1MsgBox SecondWordРезультат - ЭрлКонец подписки |