Функции за манипулиране на низове на VBA & Operaтори
⚡ Умно обобщение
Функции за манипулиране на низове във VBA и Operaинструменти комбинират, измерват и извличатtracтекст в макроси на Excel. Тази страница обяснява оператора за конкатенация, функциите Left, Right, Mid, Len и InStr, разделянето и обединяването, както и грешките, които най-често нарушават кода на низове.

VBA низ Operaтори
Низовите данни се използват за съхраняване на данни, които са съставени от числа, знаци и символи. „Jul-2015“ е пример за низови данни. Съставен е от
- Герои (юли)
- символ (-)
- Numbers S
Стринговите оператори се използват за манипулиране на низови данни. Например, можете да свържете стойността на юли-2015 г. от първите 3 букви на месеца и годината като „юли-2015 г.“.
Следната таблица показва конкатенационния оператор на VBA низ.
| S / N | OperaTor | Descriptйон | Пример | Продукция |
|---|---|---|---|---|
| 1 | & | Concatenate: Този оператор се използва за свързване на низове заедно | „Джон“ и „Сърна“ | Петър Петров |
Примерен източник Code
MsgBox "John " & "Doe", vbOKOnly, "Concatenate Operator"
Изпълнението на горния код води до следния резултат
Амперсандът не е единственият символ, който се появява, за да съедини текст, и разликата между двата е от значение, когато става въпрос за числа.
Разлика между & и + за конкатенация на низове
VBA приема както амперсанд, така и знак плюс между две текстови стойности, така че начинаещите често ги третират като взаимозаменяеми. Те се държат различно веднага щом единият операнд е число или празна стойност, и само един от тях е безопасен.
| Поведение | & (Амперсанд) | + (Плюс) |
|---|---|---|
| Две текстови стойности | Присъединява се към тях: „Guru„“ и „99“ се връща Guru99 | Присъединява се към тях: „Guru„+ „99“ връща Guru99 |
| Текст и число | Преобразува числото в текст: „Възраст“ и 30 връща Възраст 30 | Поражда грешка за несъответствие на типа |
| Два числови низа | „10“ и „5“ връща 105 | „10“ + „5“ може да се сумира и да върне 15 |
| Нулева стойност | Третира Null като празен низ | Връща Null и отхвърля целия резултат |
💡 Съвет: Винаги използвайте амперсанда за конкатенация и запазете знака плюс за аритметични операцииПоставете интервал преди и след амперсанда, защото записът Total& се чете от VBA като декларационен символ от тип Long.
VBA функции за манипулиране на низове
VBA String Manipulation е важен елемент в Excel VBA за макро програмиране и операции с низове. Excel предоставя различни видове функции за манипулиране на низове на VBA като:
- Left: се използва за extract символа от лявата страна на низа
- прав: се използва за extract символа от дясната страна на низа
- Среден: се използва за extracподниз от средата на низ
- Len: използва се за намиране на дължината на низ
- InStr: използва се за намиране на позицията на подниз в низ
- подреден: се използва за премахване на интервали от двата края на низ
- Сменете: се използва за замяна на всяко появяване на един подниз с друг
- UCase / LCase: се използват за преобразуване на низ в главни или малки букви
Таблицата по-долу показва синтаксиса на всяка функция с работен пример, така че можете да копирате шаблона директно в макрос.
| функция | Синтаксис | Пример | Продукция |
|---|---|---|---|
| Left | Left(низ, дължина) | Ляво („Юли 2015 г.“, 3) | юли |
| прав | Right(низ, дължина) | Дясно („юли 2015 г.“, 4) | 2015 |
| Среден | Mid(низ, начало, дължина) | Среда („юли 2015 г.“, 5, 4) | 2015 |
| Len | Лен(низ) | Лен („юли 2015 г.“) | 8 |
| InStr | InStr(начало, низ, подниз) | InStr(1, „Jul-2015“, „-“) | 4 |
| подреден | Trim(низ) | Подрязване(" Guru99“) | Guru99 |
| Сменете | Замяна(низ, намиране, замяна) | Замяна („юли-2015“, „-“, „/“) | юли/2015 |
| UCase | UCase(низ) | UCase („гуру99“) | ГУРУ99 |
Макросът по-долу комбинира няколко от тези функции, за да възстанови етикет за дата от неговите части.
Sub StringFunctionsDemo() Dim Source As String Dim MonthPart As String Dim YearPart As String Source = "July-2015" ' Take the first three characters MonthPart = Left(Source, 3) ' Take the last four characters YearPart = Right(Source, 4) MsgBox MonthPart & "-" & YearPart, vbOKOnly, "String Functions" End Sub
Изпълнението на макроса показва юли 2015 г. Всяка функция връща нова стойност и оставя оригиналния низ недокоснат, поради което резултатите могат да бъдат комбинирани безопасно в един израз.
Тези функции работят само с един низ в даден момент. Когато една стойност съдържа цял списък, две други функции се справят по-добре с нея.
Как да разделяте и съединявате низове във VBA
Данните, поставени в Excel, често пристигат като една дълга стойност с разделител между всеки елемент, например „Pepsi, Coke, Fanta, Juice“. Четенето на това с Mid и InStr е бавно и крехко. VBA предоставя съответстваща двойка функции точно за тази задача.
разцепен приема низ с разделители и връща масив, базиран на нула, с по един елемент на елемент. Регистрация прави обратното, като взема масив и връща един низ с разделител между елементите. Обърнете внимание, че Join работи с масив, а не с два отделни низа.
Sub SplitAndJoinDemo() Dim Source As String Dim Items() As String Dim i As Long Source = "Pepsi,Coke,Fanta,Juice" ' Break the value into an array on every comma Items = Split(Source, ",") For i = LBound(Items) To UBound(Items) Sheet1.Cells(i + 1, 1).Value = Items(i) Next i ' Rebuild the list with a different separator MsgBox Join(Items, " | "), vbOKOnly, "Joined List" End Sub
Цикълът записва всяка напитка в отделен ред на работен лист, а след това прозорецът за съобщение показва Pepsi | Coke | Fanta | Juice. Три точки правят този модел надежден в производствения код:
- Резултат, базиран на нула: Split винаги връща масив, номериран от 0, независимо от това, на което е зададена Option Base, така че задействайте цикъла с LBound и UBound, а не с фиксирано число.
- Деклариране като String(): Присвоете резултата на динамичен масив от тип String. Декларирането на фиксиран размер първо води до грешка при компилиране.
- Празен вход: Разделянето на празен низ връща масив без елементи, така че тествайте с UBound преди да прочетете Items(0).
Дори и с правилния избор на функция, низовият код се проваля по малък брой предвидими начини.
Често срещани грешки с низове във VBA и как да ги поправим
Повечето грешки в низовете в Excel VBA произтичат от кратък списък с причини. Разпознаването на симптома спестява дълга сесия за отстраняване на грешки.
- Несъответствие на типа при конкатенация: Между текст и число е използван знак плюс. Заменете го с амперсанд, който автоматично преобразува числото.
- InStr връща 0: Поднизът не е намерен. InStr връща 0, а не -1 при неуспех, така че проверете за стойност, по-голяма от нула, преди да предадете резултата на Mid.
- Невалидно извикване на процедура в средата или отляво: Заявената дължина е отрицателна или началната позиция е под 1. Защитете извикването с Len, така че дължината никога да не надвишава низа.
- Сравнения, които би трябвало да съвпадат, но не съвпадат: Крайните интервали от импортираните данни нарушават равенството. Обгърнете двете страни с Trim и използвайте StrComp, когато регистърът на буквите трябва да бъде игнориран.
- Текст, който няма да се превърне в число: Стойност като „1,200“ се получава неуспешно при аритметични анализи заради разделителя. Отстранете я с Replace, преди да я конвертирате с CLng.
Изтеглете Excel, съдържащ горния код
Изтеглете горния Excel файл Code


