Съдържание
Внедряване на VBA е най-ефективният, най-бързият и най-сигурният метод за изпълнение на всякакви операции в Excel. В тази статия ще ви покажем как да проверите дали даден низ съдържа друг низ в Excel, като използвате VBA .
Изтегляне на шаблон за практика
Можете да изтеглите безплатния практически шаблон на Excel от тук.
VBA за проверка дали низът съдържа стойност.xlsm
6 метода във VBA за проверка дали низът съдържа друг низ в Excel
По-долу в този раздел ще намерите 6 ефективни метода за прилагане на VBA за проверка дали даден низ съдържа друг низ или не.
1. Проверка във VBA дали низът съдържа подниз
По-долу е даден пример за функцията InStr за установяване дали даден низ съдържа подниз в Excel.
Стъпки:
- Натиснете Alt + F11 на клавиатурата или отидете в раздела Разработчик -> Visual Basic да отворите Редактор на Visual Basic .
- В изскачащия прозорец с код, в лентата с менюта щракнете върху Вмъкване -> Модул .
- В прозореца за код копирайте следния код и го поставете.
Public Sub ContainSub() If InStr("Филм: Железен човек, Батман, Супермен, Спайдърмен, Тор", "Хълк")> 0 Then MsgBox "Филмът е намерен" Else MsgBox "Филмът не е намерен" End If End Sub
Вашият код вече е готов за изпълнение.
- Изпълнявайте макроса.
Ако вашият низът съдържа подниз тогава ще получите намерено съвпадение, а в противен случай няма да бъде намерено съвпадение.
В нашия пример искахме да разберем дали основният ни низ " Филми: Железен човек, Батман, Супермен, Спайдърмен, Тор " съдържа думата " Хълк " или не. Тъй като не е така, получаваме Филмът не е намерен резултат.
2. Проверка във VBA дали низът съдържа число
Можете да търсите дали символните низове съдържат числа, или не, като използвате VBA код.
Вижте следния пример, в който ще открием кои низове съдържат числа с имената на филмите.
Стъпки за проверка дали низовете съдържат числа с VBA са дадени по-долу.
Стъпки:
- По същия начин, както преди, отворете Редактор на Visual Basic от Разработчик таб и Вмъкване на a Модул в прозореца с кода.
- В прозореца за код копирайте следния код и го поставете.
Функция SearchNumbers(oRng As Range) As Boolean Dim bSearchNumbers As Boolean, i As Long bSearchNumbers = False For i = 1 To Len(oRng.Text) If IsNumeric(Mid(oRng.Text, i, 1)) Then bSearchNumbers = True Exit For End If Next SearchNumbers = bSearchNumbers End Function
- Това не е подпроцедура за VBA да се стартира програма, това е създаване на Дефинирана от потребителя функция (UDF), който ще извикаме в нашия работен лист, за да изпълним задачата. Така че, след като напишете кода, вместо да щракнете върху Изпълнявайте кликнете върху бутона Запазете от лентата с менюта, за да запишете макрофайла.
- Сега се върнете към работния лист, който ви интересува, и запишете функцията, дефинирана от потребителя, която току-що създадохте в VBA код ( SearchNumber , в първия ред на кода) и в скобите на функцията въведете референтния номер на клетката от низ, в която има водещи числа (напр. Клетка B5 ).
- Натиснете Въведете .
Ще получите булева стойност ( TRUE или Фалшив ), ако низът в клетката съдържа числа, ще получите TRUE , в противен случай FALSE .
- Плъзнете клетката надолу с Дръжка за пълнене да приложите формулата към останалите клетки, за да проверите кой низ съдържа числа и кой не.
3. VBA за извличане на числа от низ
В горния раздел научихме как да проверим дали низът съдържа числа или не. В този раздел ще научим как да извлечем тези числа и да ги поставим в друга клетка с примера, даден по-долу.
Стъпки за проверка дали низовете съдържат числа и извличането им с VBA са дадени по-долу.
Стъпки:
- Отвори Редактор на Visual Basic от Разработчик таб и Вмъкване на a Потребителски формуляр този път от раздела Вмъкване в прозореца с кода.
- От появилите се Кутия с инструменти , плъзгане и пускане CommandButton в Потребителски формуляр .
- Двойно кликване върху бутона, копирайте следния код и го поставете.
Private Sub CommandButton1_Click() Worksheets("Number").Range("C2:C15").ClearContents checkNumber (Worksheets("Number").Range("B2:B15")) End Sub checkNumber(objRange As Range) Dim myAccessary As Variant Dim i As Long Dim iRow As Long iRow = 2 For Each myAccessary In objRange For i = 1 To Len(myAccessary.Value) If IsNumeric(Mid(myAccessary.Value, i,1)) Then If Trim(objRange.Cells(objRange.Row - 1, 2)) "" Then objRange.Cells(iRow - 1, 2) = _ objRange.Cells(iRow - 1, 2) & Mid(myAccessary.Text, i, 1) Else objRange.Cells(iRow - 1, 2) = Mid(myAccessary.Text, i, 1) End If End If Next iRow = iRow + 1Следваща myAccessary Край на Sub
- Изпълнявайте кода и той ще ви отведе до интересуващия ви работен лист.
- Щракнете върху бутона Command и ще получите извлечения номер от низовете.
4. VBA за проверка дали низът съдържа определена буква
Този метод е почти подобен на метода за проверка на подниз в низ.
По-долу е InStr функция за установяване дали даден низ съдържа определена буква в Excel.
Стъпки:
- По същия начин, както преди, отворете Редактор на Visual Basic от Разработчик таб и Вмъкване на a Модул в прозореца с кода.
- В прозореца за код копирайте следния код и го поставете.
Public Sub ContainChar() If InStr("Филм: Железен човек, Батман, Супермен, Спайдърмен, Тор", "Z")> 0 Then MsgBox "Letter found" Else MsgBox "Letter not found" End If End Sub
Вашият код вече е готов за изпълнение.
- Изпълнявайте програмата. Ако вашият низът съдържа буквата тогава ще получите намерено съвпадение, а в противен случай няма да бъде намерено съвпадение.
В нашия пример искахме да разберем дали основният ни низ " Филми: Железен човек, Батман, Супермен, Спайдърмен, Тор " съдържа буквата " Z " или не. Тъй като не е така, получаваме Писмото не е намерено резултат.
5. Проверка във VBA дали даден диапазон от низове съдържа друг низ
Научихме как да проверяваме дали даден низ съдържа друг низ или не. Но в този раздел ще научим как да проверяваме дали диапазон от низове съдържа поднизове или не, като за пример ще използваме следния набор от данни.
Стъпки:
- Отворете Редактор на Visual Basic от Разработчик таб и Вмъкване на a Модул в прозореца с кода.
- В прозореца за код копирайте следния код и го поставете.
Public Sub ContainsSub() If InStr(ActiveSheet.Select, "Hulk")> 0 Then MsgBox "Movie found" Else MsgBox "Movie not found" End If End Sub
Вашият код вече е готов за изпълнение.
- Изпълнявайте кода.
Ако обхватът на низът съдържа подниз тогава ще получите намерено съвпадение, а в противен случай няма да бъде намерено съвпадение.
6. VBA за извличане на низове от низове
В този раздел ще видим как да проверим дали низовете съдържат определени поднизове и да ги извлечем в друга клетка.
Ще извлечем информацията за имената, започващи с " Крис " от следния набор от данни.
Стъпки :
- Отворете Редактор на Visual Basic от Разработчик таб и Вмъкване на a Модул в прозореца с кода.
- В прозореца за код копирайте следния код и го поставете.
Sub SearchSub() Dim lastrow As Long Dim i As Integer, count As Integer lastrow = ActiveSheet.Range("A30000").End(xlUp).Row For i = 1 To lastrow If InStr(1, LCase(Range("C" & i)), "Chris") 0 Then count = count + 1 Range("F" & count & ":H" & count) = Range("B" & i & ":D" & i).Value End If Next i End Sub
Вашият код вече е готов за изпълнение.
- Изпълнявайте кода.
Само имената, започващи с " Крис " ще бъдат съхранени в предварително определените клетки.