VBA - Ελέγξτε εάν υπάρχει μια τιμή σε έναν πίνακα

VBA - Ελέγξτε εάν υπάρχει μια τιμή σε έναν πίνακα

Εισαγωγή

Για να ελέγξουμε αν υπάρχει μια τιμή σε μια συστοιχία, μπορούμε να βρούμε τα στοιχεία της. Ωστόσο, υπάρχει άλλη λύση! Μπορείτε να χρησιμοποιήσετε τη λειτουργία INDEX (), εγγενής στο Excel και στην περίπτωση των δισδιάστατων συστοιχιών να χρησιμοποιήσετε ένα συνδυασμό της συνάρτησης INDEX / MATCH . Ωστόσο, αν η τιμή δεν βρεθεί, το Application.Match επιστρέφει σφάλμα. Θα πρέπει να λάβετε υπόψη τυχόν σφάλματα, καθώς και τον αριθμό των διαστάσεων της μεταβλητής πίνακα.

Αυτή η μικρή λειτουργία θα σας βοηθήσει!

Χρησιμοποιώντας τη λειτουργία αντιστοίχισης

 Λειτουργία EstDans (mot As String, Tabl) Ως Boolean

Dim Διάσταση ως byte, j Ως ακέραιο

Κατά τη συνέχιση του σφάλματος στη συνέχεια

Αν το IsError (UBound (Tabl, 2)) Τότε Διάσταση = 1 άλλη διάσταση = 2

Στο σφάλμα GoTo 0

Επιλέξτε Διαστάσεις υποθέματος

Περίπτωση 1

Κατά τη συνέχιση του σφάλματος στη συνέχεια

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

Στο σφάλμα GoTo 0

Περίπτωση 2

Για j = 1 προς UBound (Tabl, 2)

Κατά τη συνέχιση του σφάλματος στη συνέχεια

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

Στο σφάλμα GoTo 0

Αν το EstDans = Αληθινό στη συνέχεια βγείτε για

Επόμενο

Τέλος Επιλογή

Λειτουργία τερματισμού

Κλήση της λειτουργίας

 Sub test ()

Dim Tb (), i Ως ακέραιο

'tb 2 διαστάσεις:

Tb = Εύρος ("A2: C16")

Debug.Print EstDans (MaValeur, Tb)

Erase Tb

'tb 1 διάσταση:

Το ReDim διατηρεί το Tb (15)

Για το i = 0 έως το 14

Tb (i) = Κύτταρα (ί + 2, 1)

Επόμενο

Debug.Print EstDans (MaValeur, Tb)

End Sub

Χρησιμοποιώντας ένα βρόχο

Η δομή αυτής της λειτουργίας είναι παρόμοια με αυτήν που χρησιμοποιεί το Match .

 Λειτουργία BoucleSurTabl (mot As String, Tb)

Διαστάσεις διάστασης ως byte, i As long, j As Long

Κατά τη συνέχιση του σφάλματος στη συνέχεια

Αν το IsError (UBound (Tb, 2)) Τότε Διάσταση = 1 άλλη διάσταση = 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

Τέλος Επιλογή

Λειτουργία τερματισμού

Παρατηρήσεις

Ενάντια σε όλες τις πιθανότητες, θα έχετε ένα καλύτερο αποτέλεσμα με τη λειτουργία βρόχου σε μεγάλες συστοιχίες από τη χρήση του Application.Match.

Δοκιμή μιας δισδιάστατης συστοιχίας με το ακόλουθο εύρος ("A1: Y20002").

  • Χρησιμοποιώντας τη λειτουργία αντιστοίχισης: 8.300781 δευτερόλεπτα.
  • Χρησιμοποιώντας τον βρόχο: 0, 4375 δευτερόλεπτα.

Δοκιμή μιας μονοδιάστατης συστοιχίας:

  • Χρησιμοποιώντας τη λειτουργία αντιστοίχισης: στιγμιαία
  • Χρησιμοποιώντας τον βρόχο: 0, 015625 δευτερόλεπτα

Λήψη συνδέσμου

  • Μπορείτε να κατεβάσετε το δείγμα του βιβλίου εργασίας: //cjoint.com/?DHfpeqMBvRK
Προηγούμενο Άρθρο Επόμενο Άρθρο

Οι Καλύτερες Συμβουλές