Чтобы имитировать оператор IN из Python в Excel VBA, можно использовать несколько подходов. Вот несколько способов:
-
Метод 1. Использование цикла
- Вы можете использовать цикл для перебора массива или коллекции и проверки наличия в нем значения. Вот пример:
Function IsInArray(value As Variant, arr As Variant) As Boolean Dim element As Variant For Each element In arr If element = value Then IsInArray = True Exit Function End If Next element IsInArray = False End FunctionЗатем вы можете использовать эту функцию, чтобы проверить, присутствует ли значение в массиве:
Sub CheckValue() Dim arr() As Variant arr = Array("apple", "banana", "orange") If IsInArray("banana", arr) Then MsgBox "Value found!" Else MsgBox "Value not found!" End If End Sub -
Метод 2: использование метода WorksheetFunction.Match
- Метод WorksheetFunction.Match можно использовать для поиска значения в диапазоне. Если значение найдено, оно возвращает позицию значения в диапазоне; в противном случае возвращается ошибка. Вот пример:
Sub CheckValue() Dim rng As Range Set rng = Range("A1:A10") If Not IsError(Application.WorksheetFunction.Match("banana", rng, 0)) Then MsgBox "Value found!" Else MsgBox "Value not found!" End If End Sub -
Способ 3. Использование функции фильтра
- Функция «Фильтр» может использоваться для фильтрации массива по определенному условию. Проверив длину результирующего массива, вы можете определить, существует ли значение. Вот пример:
Sub CheckValue() Dim arr() As Variant arr = Array("apple", "banana", "orange") Dim filtered() As Variant filtered = Filter(arr, "banana") If UBound(filtered) > -1 Then MsgBox "Value found!" Else MsgBox "Value not found!" End If End Sub