Зміст
Впровадження 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 Модуль у вікні коду.
- У вікні коду скопіюйте наступний код та вставте його.
Function 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 код ( Номер пошуку у першому рядку коду), а в дужках функції ввести номер комірки, на яку посилається комірка рядка, що має провідні номери (наприклад Комірка B5 ).
- Преса Увійдіть .
Ви отримаєте булеве значення ( ПРАВДА або Неправда. ), якщо рядок в комірці містить числа, то буде отримано ПРАВДА в іншому випадку НЕПРАВДА .
- Перетягніть комірку вниз за допомогою Ручка наповнення застосувати формулу до решти клітинок, щоб перевірити, який рядок містить числа, а який ні.
3. VBA для вилучення чисел з рядка
У попередньому розділі ми навчилися перевіряти, чи містить рядок числа чи ні. А в цьому розділі ми навчимося витягувати ці числа і поміщати їх в іншу комірку на прикладі, наведеному нижче.
Кроки для перевірки наявності в рядках чисел та їх вилучення з допомогою VBA наведені нижче.
Сходинки:
- Відкрито Редактор Visual Basic від Розробник вкладка та Вставка a UserForm Цього разу з вкладки "Вставка" у вікні коду.
- З того, що з'явилося Інструментарій перетягніть і скиньте CommandButton в UserForm .
- Подвійний клік на кнопці, скопіюйте наступний код та вставте його.
Private Sub CommandButton1_Click() Worksheets("Number").Range("C2:C15").ClearContents checkNumber (Worksheets("Number").Range("B2:B15")) End Sub Sub checkNumber(objRange As Range) Dim myAccessory As Variant Dim i As Long Dim iRow As Long iRow = 2 For Each myAccessory In objRange For i = 1 To Len(myAccessory Value) If IsNumeric(Mid(myAccessory.Value, i,1)) Then If Trim(objRange.Cells(objRange.Row - 1, 2)) "" Then objRange.Cells(iRow - 1, 2) = _ objRange.Cells(iRow - 1, 2) & Mid(myAccessory.Text, i, 1) Else objRange.Cells(iRow - 1, 2) = Mid(myAccessory.Text, i, 1) End If End If Next i iRow = iRow + 1Next myAccessory End Sub
- Біжи код, і ви потрапите на аркуш, що вас цікавить.
- Натисніть Командну кнопку і ви отримаєте витягнуте з рядків число.
4. перевірка на VBA, чи містить рядок певну літеру
Цей метод майже аналогічний методу перевірки підрядка в рядку.
Нижче наведено InStr функція для пошуку в Excel, чи містить рядок певну літеру.
Сходинки:
- Як і раніше, відкрито Редактор Visual Basic від Розробник вкладка та Вставка a Модуль у вікні коду.
- У вікні коду скопіюйте наступний код та вставте його.
Public Sub ContainChar() If InStr("Фільм: Залізна людина, Бетмен, Супермен, Людина-павук, Тор", "Z")> 0 Then MsgBox "Літера знайдена" Else MsgBox "Літера не знайдена" End If End Sub
Ваш код тепер готовий до запуску.
- Біжи Якщо ви хочете взяти участь у програмі. рядок містить літеру то ви отримаєте знайдений збіг, в іншому випадку - не знайдено жодного збігу.
У нашому прикладі ми хотіли з'ясувати, чи буде наш первинний рядок " Кіно: Залізна людина, Бетмен, Супермен, Людина-павук, Тор " містить літеру " Z " або ні. Якщо ні, то ми отримуємо Лист не знайдено результат.
5. перевірка на VBA, чи містить діапазон рядків інший рядок
Ми навчилися перевіряти, чи містить заданий рядок інший рядок. Але в цьому розділі ми навчимося перевіряти, чи містить діапазон рядків підрядок чи ні на прикладі наступного набору даних.
Сходинки:
- Відкрито Редактор Visual Basic від Розробник вкладка та Вставка a Модуль у вікні коду.
- У вікні коду скопіюйте наступний код та вставте його.
Public Sub ContainsSub() If InStr(ActiveSheet.Select, "Hulk")> 0 Then MsgBox "Фільм знайдено" Else MsgBox "Фільм не знайдено" 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
Ваш код тепер готовий до запуску.
- Біжи код.
До участі в конкурсі допускаються лише імена, що починаються з " Кріс. " будуть зберігатися у заздалегідь визначених комірках.