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
Попередня Стаття Наступна Стаття

Кращі Поради