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 BooleanDim 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