Този урок ще покаже как да използвате функцията 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 в работен лист Sheet1StrEx = 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 не промени оригиналния низ. Той върна част от него, оставяйки оригиналния низ непокътнат. Средната функция може да се използва за замяна на символи в низ.
12345678910111213141516171819202122 | Sub MidExample_4 ()Dim StrEx As String 'Определете низова променливаSub MidExample_4 ()Dim StrEx As String 'Определете низова променливаStrEx = "Нека Силата бъде с вас"Средно (StrEx, 5, 1) = "VWXYZ"Резултатът на MsgBox StrEx е: „Нека Vhe Horce бъде с вас“„Средната функция намери позиция 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 като цяло числоDim EndPos като цяло числоDim SecondWord As StringStrEx = "Джеймс Ърл Джоунс е актьор"StartPos = InStr (StrEx, "")"Резултатът е 6- Намерете позицията на първото пространствоEndPos = InStr (StartPos + 1, StrEx, "")"Резултатът е 11„Намерете позицията на второто пространство, като започнете търсене след първото пространствоSecondWord = Mid (StrEx, StartPos + 1, EndPos - StartPos - 1)„Mid извлича знаците, започващи след първото интервал (StartPos +1)„Mid използва и дължината на втората дума.„Това е разликата между интервалите позиции -1MsgBox SecondWord- Резултатът е ЪрлEnd Sub |