VBA - Sprawdź, czy wartość istnieje w tablicy

VBA - Sprawdź, czy wartość istnieje w tablicy

Wprowadzenie

Aby sprawdzić, czy wartość istnieje w tablicy, możemy przejść przez jej elementy. Jest jednak inne rozwiązanie! Możesz użyć funkcji INDEX (), natywnej dla programu Excel, aw przypadku tablic dwuwymiarowych użyj kombinacji funkcji INDEX / MATCH . Jeśli jednak wartość nie zostanie znaleziona, Application.Match zwraca błąd. Musisz wziąć pod uwagę wszelkie możliwe błędy, a także liczbę wymiarów zmiennej tablicowej.

Ta mała funkcja pomoże Ci!

Korzystanie z funkcji Dopasuj

 Funkcja EstDans (mot As String, Tabl) As Boolean

Dim Dimension As Byte, j As Integer

On Error Resume Next

If IsError (UBound (Tabl, 2)) Następnie Dimension = 1 Else Dimension = 2

On Error GoTo 0

Wybierz wymiar obudowy

Przypadek 1

On Error Resume Next

EstDans = Application.Match (mot, Tabl, 0)

On Error GoTo 0

Przypadek 2

Dla j = 1 To UBound (Tabl, 2)

On Error Resume Next

EstDans = Application.Match (mot, Application.Index (Tabl,, j), 0)

On Error GoTo 0

Jeśli EstDans = True Then Exit For

Kolejny

Zakończ wybór

Zakończ funkcję

Wywoływanie funkcji

 Sub test ()

Dim Tb (), i As Integer

'tb 2 wymiary:

Tb = Zakres („A2: C16”). Wartość

Debug.Print EstDans (MaValeur, Tb)

Wymaż Tb

'tb 1 wymiar:

ReDim Preserve Tb (15)

Dla i = 0 do 14

Tb (i) = komórki (i + 2, 1)

Kolejny

Debug.Print EstDans (MaValeur, Tb)

Napis końcowy

Korzystanie z pętli

Struktura tej funkcji jest podobna do tej wykorzystującej Dopasuj .

 Funkcja BoucleSurTabl (mot As String, Tb)

Dim Dimension As Byte, i As Long, j As Long

On Error Resume Next

If IsError (UBound (Tb, 2)) Następnie Dimension = 1 Else Dimension = 2

On Error GoTo 0

Wybierz wymiar obudowy

Przypadek 1

Dla j = LBound (Tb) To UBound (Tb)

Jeśli Tb (j) = mot Następnie BoucleSurTabl = True: Funkcja wyjścia

Kolejny

Przypadek 2

Dla i = LBound (Tb, 1) Do UBound (Tb, 1)

Dla j = LBound (Tb, 2) Do UBound (Tb, 2)

Jeśli Tb (i, j) = mot, to BoucleSurTabl = True: Funkcja wyjścia

Następny j

Dalej i

Zakończ wybór

Zakończ funkcję

Obserwacje

Wbrew wszelkim przeciwnościom, otrzymasz lepszy wynik z funkcją pętli na dużych tablicach niż przy użyciu Application.Match.

Testowanie dwuwymiarowej tablicy z następującym zakresem („A1: Y20002”).

  • Używanie funkcji Dopasuj: 8.300781 sekund.
  • Korzystanie z pętli: 0, 4375 sekundy.

Testowanie tablicy jednowymiarowej:

  • Korzystanie z funkcji Dopasuj: natychmiast
  • Używanie pętli: 0, 015625 sekund

Link do pobrania

  • Możesz pobrać przykładowy podręcznik: //cjoint.com/?DHfpeqMBvRK
Poprzedni Artykuł Następny Artykuł

Najważniejsze Wskazówki