VBA - Pārbaudiet, vai masīvā ir vērtība

VBA - Pārbaudiet, vai masīvā ir vērtība

Ievads

Lai pārbaudītu, vai masīvā ir vērtība, mēs varam izlaist tās elementus. Tomēr ir vēl viens risinājums! Jūs varat izmantot INDEX () funkciju, kas ir dabiska Excel, un divdimensiju masīvu gadījumā izmantojiet INDEX / MATCH funkcijas kombināciju. Tomēr, ja vērtība nav atrasta, Application.Match atgriež kļūdu. Jums būs jāņem vērā iespējamās kļūdas, kā arī masīva mainītāja izmēru skaits.

Šī mazā funkcija palīdzēs jums!

Funkcijas Match izmantošana

 Funkcija EstDans (mot kā String, Tabl) Kā Būla

Dim dimensija kā baits, j kā pilnīgs

Pēc kļūdas atsākšanas

Ja IsError (UBound (Tabl, 2)) Tad Dimension = 1 Else Dimension = 2

Kļūdā GoTo 0

Izvēlieties lietas izmēru

1. gadījums

Pēc kļūdas atsākšanas

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

Kļūdā GoTo 0

2. gadījums

Par j = 1 UBound (Tabl, 2)

Pēc kļūdas atsākšanas

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

Kļūdā GoTo 0

Ja EstDans = True tad iziet

Nākamais

Beigu izvēle

Beigu funkcija

Funkcijas aktivizēšana

 Sub tests ()

Dim Tb (), i As Integer

'tb 2 izmēri:

Tb = diapazons ("A2: C16")

Debug.Print EstDans (MaValeur, Tb)

Dzēst Tb

'tb 1 dimensija:

ReDim Preserve Tb (15)

Par i = 0 līdz 14

Tb (i) = šūnas (i + 2, 1)

Nākamais

Debug.Print EstDans (MaValeur, Tb)

Beigt Sub

Izmantojot cilpu

Šīs funkcijas struktūra ir līdzīga tam, kas tiek izmantots, izmantojot Match .

 Funkcija BoucleSurTabl (mot kā virkne, Tb)

Dim dimensija kā baits, i tik garš, j kā garš

Pēc kļūdas atsākšanas

Ja IsError (UBound (Tb, 2)) Tad Dimension = 1 Else Dimension = 2

Kļūdā GoTo 0

Izvēlieties lietas izmēru

1. gadījums

Par j = LBound (Tb) uz UBound (Tb)

Ja Tb (j) = mot Tad BoucleSurTabl = True: Iziet funkcija

Nākamais

2. gadījums

Par i = LBound (Tb, 1) UBound (Tb, 1)

Par j = LBound (Tb, 2) UBound (Tb, 2)

Ja Tb (i, j) = mot Tad BoucleSurTabl = True: Iziet funkcija

Nākamais j

Nākamais i

Beigu izvēle

Beigu funkcija

Novērojumi

Atkarībā no visiem izredzes jūs iegūsiet labāku rezultātu ar cilpas funkciju lielos blokos, nekā izmantojot programmu Application.Match.

Divdimensiju masīva testēšana ar šādu diapazonu ("A1: Y20002").

  • Funkcijas Match izmantošana: 8.300781 sekundes.
  • Izmantojot cilpu: 0, 4375 sekundes.

Viendimensiju masīva pārbaude:

  • Funkcijas Match izmantošana: tūlīt
  • Izmantojot cilpu: 0.015625 sekundes

Lejupielādes saite

  • Jūs varat lejupielādēt parauga darbgrāmatu: //cjoint.com/?DHfpeqMBvRK
Iepriekšējais Raksts Nākamais Raksts

Top Padomi