Функція VBA Mid - витяг символів із середини рядка

Цей підручник покаже, як використовувати функцію Mid VBA для вилучення символів із середини текстового рядка.

Середня функція

Середня функція Отримати n символів

Функція VBA Mid повертає n символів із рядка, починаючи з позиції m:

123456789 Підсередина Приклад_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 "End Sub

Середня функція Отримати n символів у змінній

Як показано вище, ви можете визначити рядок, просто ввівши текст, оточений лапками. Але функція MID також працюватиме зі рядковими змінними. У цих прикладах буде вилучено n символів із рядка, починаючи з позиції m.

12345678 Допоміжний приклад_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"End Sub

Середня функція Отримати n символів з клітинки

Рядки можна визначити у коді VBA, але також можна використовувати значення з комірок. Прочитайте значення клітинки, збережіть її у рядковій змінній та витягніть n символів із цього значення комірки робочого аркуша, починаючи з позиції m.

1234567891011 Допоміжний приклад_3 ()Dim StrEx As String 'Визначте рядкову змінну'Прочитайте значення комірки A1 на аркуші аркуша1StrEx = ThisWorkbook.Worksheets ("Sheet1"). Range ("A1"). Value"Для цього прикладу значення клітинки A1 -" Нехай сила буде з вами "MsgBox Mid (StrEx, 4, 6) 'Результат: "F" (Зверніть увагу на пробіл на початку)MsgBox Mid (StrEx, 2, 8) 'Результат: "ay the F"MsgBox Mid (StrEx, 3, 4) 'Результат: "y th"End Sub

Середня функція Заміна n символів

У наведених вище прикладах функція Mid не змінила вихідний рядок. Він повернув частину, залишивши оригінальний рядок недоторканим. Функцію Mid можна використовувати для заміни символів у рядку.

12345678910111213141516171819202122 Sub MidExample_4 ()Dim StrEx As String 'Визначте рядкову зміннуSub MidExample_4 ()Dim StrEx As String 'Визначте рядкову зміннуStrEx = "Нехай сила буде з вами"Середній (StrEx, 5, 1) = "VWXYZ"Результатом MsgBox StrEx є: "Нехай Хорс буде з вами"'Середня функція знайшла позицію 5 і замінила 1 символ у вихідному рядкуStrEx = "Нехай сила буде з вами"Середній (StrEx, 5, 3) = "VWXYZ"Результат MsgBox StrEx: "Нехай VWX Horce буде з вами""Середня функція знайшла позицію 5 і замінила 3 ​​символи у вихідному рядкуStrEx = "Нехай сила буде з вами"Середній (StrEx, 5, 8) = "VWXYZ"Результат MsgBox StrEx: "Нехай VWXYZorce буде з вами"«Середня функція знайшла позицію 5 і спробувала замінити 8 символів.'"VWXYZ" містить лише 5 символів, тому замінено лише 5 символів.End Sub

Середня функція Витяг другого слова з фрази

Ми можемо використовувати функцію VBA Mid з функцією VBA Instr, щоб отримати друге слово в тексті.

Функція VBA InStr може повертати позицію символу всередині тексту.

1 InStr ("Два слова", "") 'Результат 4

Ми можемо використовувати InStr, щоб знайти перший пробіл, потім ми можемо знову використовувати InStr, починаючи пошук після першого пробілу, щоб знайти другий пробіл у тексті. Нарешті, ми можемо використати функцію Mid для вилучення слова, оскільки ми знаємо початкове положення другого слова та його довжину (різниця між двома пробілами).

12345678910111213141516171819202122232425 Sub MidExample_5 ()Dim StrEx As String 'Визначте рядкову зміннуЗатемніть StartPos як ціле числоЗатемнити EndPos як ціле числоПриглушити друге слово як рядокStrEx = "Джеймс Ерл Джонс - актор"StartPos = InStr (StrEx, "")"Результат - 6'Знайдіть позицію першого пробілуEndPos = InStr (StartPos + 1, StrEx, "")"Результат - 11'Знайдіть позицію другого простору, розпочавши пошук після першого пробілуSecondWord = Mid (StrEx, StartPos + 1, EndPos - StartPos - 1)«Середина витягує символи, що починаються після першого пробілу (StartPos +1)«Mid використовує також довжину другого слова."Це різниця між позиціями пробілів -1MsgBox SecondWord«Результат - ЕрлEnd Sub
wave wave wave wave wave