VBA за проверка дали низът съдържа друг низ в Excel (6 метода)

  • Споделя Това
Hugh West

Внедряване на 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 

Вашият код вече е готов за изпълнение.

  • Изпълнявайте кода.

Само имената, започващи с " Крис " ще бъдат съхранени в предварително определените клетки.

Хю Уест е опитен обучител и анализатор на Excel с над 10 години опит в индустрията. Има бакалавърска степен по счетоводство и финанси и магистърска степен по бизнес администрация. Хю има страст към преподаването и е разработил уникален подход на преподаване, който е лесен за следване и разбиране. Неговите експертни познания по Excel са помогнали на хиляди студенти и професионалисти по целия свят да подобрят уменията си и да постигнат отлични резултати в кариерата си. Чрез своя блог Хю споделя знанията си със света, като предлага безплатни уроци за Excel и онлайн обучение, за да помогне на хората и фирмите да достигнат пълния си потенциал.