VBA - Semak sama ada nilai wujud dalam tatasusunan

VBA - Semak sama ada nilai wujud dalam tatasusunan

Pengenalan

Untuk memeriksa sama ada nilai wujud dalam tatasusunan, kita boleh gelung melalui unsur-unsurnya. Bagaimanapun ada penyelesaian lain! Anda boleh menggunakan fungsi INDEX (), asli kepada Excel dan dalam kes array dua dimensi menggunakan gabungan fungsi INDEX / MATCH . Walau bagaimanapun, jika nilai tidak ditemui, Permohonan.Match mengembalikan ralat. Anda perlu mengambil kira sebarang ralat yang mungkin, serta bilangan dimensi pembolehubah tatasusunan.

Fungsi kecil ini akan membantu anda!

Menggunakan fungsi Padanan

 Fungsi EstDans (mot As String, Tabl) Sebagai Boolean

Dim Dimensi Sebagai Byte, j Sebagai Integer

Mengenai Ralat Ralat Seterusnya

Jika IsError (UBound (Tabl, 2)) Kemudian Ukuran = 1 Dimensi Dimensi = 2

Pada Kesalahan GoTo 0

Pilih Dimensi Kes

Kes 1

Mengenai Ralat Ralat Seterusnya

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

Pada Kesalahan GoTo 0

Kes 2

Untuk j = 1 Ke UBound (Tabl, 2)

Mengenai Ralat Ralat Seterusnya

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

Pada Kesalahan GoTo 0

Jika EstDans = Benar Kemudian Keluar Untuk

Seterusnya

Akhir Pilih

Fungsi Akhir

Menggunakan fungsi ini

 Ujian subjek ()

Dim Tb (), i Sebagai Integer

'tb 2 dimensi:

Tb = Julat ("A2: C16"). Nilai

Debug.Print EstDans (MaValeur, Tb)

Hapuskan Tb

'tb 1 dimensi:

ReDim Preserve Tb (15)

Untuk i = 0 Ke 14

Tb (i) = Sel (i + 2, 1)

Seterusnya

Debug.Print EstDans (MaValeur, Tb)

Sub Akhir

Menggunakan gelung

Struktur fungsi ini sama dengan yang menggunakan Match .

 Fungsi BoucleSurTabl (mot As String, Tb)

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

Mengenai Ralat Ralat Seterusnya

Jika IsError (UBound (Tb, 2)) Kemudian Ukuran = 1 Dimensi Dimensi = 2

Pada Kesalahan GoTo 0

Pilih Dimensi Kes

Kes 1

Untuk j = LBound (Tb) Ke UBound (Tb)

Jika Tb (j) = mot Kemudian BoucleSurTabl = Benar: Keluar Fungsi

Seterusnya

Kes 2

Untuk i = LBound (Tb, 1) Ke UBound (Tb, 1)

Untuk j = LBound (Tb, 2) Ke UBound (Tb, 2)

Jika Tb (i, j) = mot Kemudian BoucleSurTabl = Benar: Keluar Fungsi

Seterusnya j

Seterusnya saya

Akhir Pilih

Fungsi Akhir

Pemerhatian

Terhadap semua kemungkinan, anda akan mendapat hasil yang lebih baik dengan fungsi gelung pada tatasusunan besar daripada menggunakan Application.Match.

Menguji pelbagai 2 dimensi dengan Julat berikut ("A1: Y20002").

  • Menggunakan fungsi Padanan: 8.300781 saat.
  • Menggunakan gelung: 0.4375 saat.

Menguji pelbagai dimensi satu dimensi:

  • Menggunakan fungsi Padanan: segera
  • Menggunakan gelung: 0.015625 saat

Pautan muat turun

  • Anda boleh memuat turun buku kerja sampel: //cjoint.com/?DHfpeqMBvRK
Artikel Sebelumnya Artikel Seterusnya

Tip-Tip Utama