VBA - Перевірте, чи існує значення в масиві
VBA - Перевірте, чи існує значення в масиві
Вступ
Щоб перевірити, чи існує значення в масиві, ми можемо прокрутити його елементи. Однак є ще одне рішення! Ви можете скористатися функцією INDEX (), яка є рідною для Excel, а у випадку двовимірних масивів використовуйте комбінацію функції INDEX / MATCH . Однак, якщо значення не знайдено, Application.Match повертає помилку. Вам потрібно буде врахувати всі можливі помилки, а також кількість розмірів змінної масиву.Ця невелика функція допоможе вам!
Використання функції Match
Функція EstDans (mot As String, Табл) Як булеваDim Dimension As Byte, j As Integer
На помилку відновити далі
Якщо IsError (UBound (Табл., 2)), то Dimension = 1 Else Dimension = 2
На помилку GoTo 0
Виберіть Розмір корпусу
Випадок 1
На помилку відновити далі
EstDans = Application.Match (mot, Tabl, 0)
На помилку GoTo 0
Випадок 2
Для j = 1 до UBound (табл., 2)
На помилку відновити далі
EstDans = Application.Match (mot, Application.Index (Таблиця,, j), 0)
На помилку GoTo 0
Якщо EstDans = True, тоді вийдіть для
Далі
Завершити вибір
Функція End
Виклик функції
Sub-тест ()Dim Tb (), i As Integer
2 tb розміри:
Tb = Діапазон ("A2: C16")
Виправлення помилок.Додавання (MaValeur, Tb)
Erase Tb
Розмір 'tb 1:
ReDim Preserve Tb (15)
Для i = 0 до 14
Tb (i) = клітини (i + 2, 1)
Далі
Виправлення помилок.Додавання (MaValeur, Tb)
End Sub
Використання петлі
Структура цієї функції схожа на структуру з використанням функції Match .Функція BoucleSurTabl (mot As String, Tb)Dim Dimension As Byte, i як довго, j як довго
На помилку відновити далі
Якщо IsError (UBound (Tb, 2)) Тоді Dimension = 1 Else Dimension = 2
На помилку GoTo 0
Виберіть Розмір корпусу
Випадок 1
Для j = LBound (Tb) До UBound (Tb)
Якщо Tb (j) = mot Тоді BoucleSurTabl = True: Exit Function
Далі
Випадок 2
Для i = LBound (Tb, 1) До UBound (Tb, 1)
Для j = LBound (Tb, 2) До UBound (Tb, 2)
Якщо Tb (i, j) = mot, тоді BoucleSurTabl = True: Exit Function
Далі j
Далі i
Завершити вибір
Функція End
Спостереження
Проти всіх шансів, ви отримаєте кращий результат з функцією циклу на великих масивах, ніж за допомогою Application.Match.Тестування двовимірного масиву з наступним діапазоном ("A1: Y20002").
- Використання функції Match: 8.300781 секунди.
- Використання петлі: 0, 4375 секунди.
Тестування одновимірного масиву:
- Використання функції Match: миттєве
- Використовуючи цикл: 0.015625 секунд
Посилання для завантаження
- Ви можете завантажити зразок робочої книги: //cjoint.com/?DHfpeqMBvRK