Πώς να χρησιμοποιήσετε τη συνάρτηση Find στη VBA (6 παραδείγματα)

  • Μοιραστείτε Αυτό
Hugh West

Μία από τις πιο σημαντικές και ευρέως χρησιμοποιούμενες λειτουργίες που χρησιμοποιούμε στο Εφαρμογή Visual Basic (VBA) είναι η συνάρτηση Find. Σε αυτό το άρθρο, θα σας δείξω πώς μπορείτε να χρησιμοποιήσετε τη συνάρτηση Λειτουργία FIND του Excel με κατάλληλα παραδείγματα και εικόνες.

Κατεβάστε το βιβλίο ασκήσεων

Εύρεση συνάρτησης σε VBA στο Excel.xlsm

6 γρήγορα παραδείγματα χρήσης της συνάρτησης FIND στη VBA

Εδώ έχουμε ένα σύνολο δεδομένων με το Ονόματα βιβλίων, Συγγραφείς και Τιμές κάποιων βιβλίων ενός βιβλιοπωλείου που ονομάζεται Martin Bookstore.

Σήμερα ο στόχος μας είναι να δούμε διάφορους τύπους χρήσεων του Λειτουργία εύρεσης του VBA από αυτό το σύνολο δεδομένων.

1. Χρήση της συνάρτησης εύρεσης στη VBA χωρίς παράμετρο

Μπορείτε να χρησιμοποιήσετε το Λειτουργία εύρεσης του VBA χωρίς παραμέτρους.

Στη συνέχεια, θα αναζητήσει μια συγκεκριμένη τιμή σε ένα εύρος κελιών και θα επιστρέψει την πρώτη αντιστοιχία που θα βρει.

Ας αναζητήσουμε το όνομα "P. B. Shelly" στη στήλη Συγγραφέας ( C4:C13 ).

Η γραμμή με το Λειτουργία εύρεσης θα είναι:

Set cell = Range("C4:C17").Find("P. B. Shelly")

Η πλήρης Κώδικας VBA θα είναι:

Κωδικός VBA:

 Sub Find() Set cell = Range("C4:C17").Find("P. B. Shelly") MsgBox cell.Address End Sub 

Έξοδος:

Παράγει ένα Μάκρο που ονομάζεται Βρείτε το Αν εκτελέσετε τη μακροεντολή, θα επιστρέψει $C$6 , η πρώτη διεύθυνση κελιού με το όνομα P. B. Shelly .

Διαβάστε περισσότερα: Εύρεση εντός μιας περιοχής με VBA στο Excel: Συμπεριλαμβανομένων των ακριβών και μερικών αντιστοιχιών

2. Εφαρμόστε τη συνάρτηση εύρεσης στη VBA με την παράμετρο After (για να ξεκινήσετε την αναζήτηση από ένα συγκεκριμένο κελί)

Μπορείτε να χρησιμοποιήσετε το Μετά το με την παράμετρο Λειτουργία εύρεσης στο VBA Στη συνέχεια, θα αρχίσει να αναζητά μια τιμή κάτω από ένα κελί εντός ενός εύρους.

Για παράδειγμα, ας ξεκινήσουμε την αναζήτηση για το όνομα "P. B. Shelly" από κάτω από το κελί C6 .

Η γραμμή του κώδικα θα είναι:

Set cell = Range("C4:C13").Find("P. B. Shelly", After:=Range("C6"))

Και το πλήρες Κώδικας VBA θα είναι:

Κωδικός VBA:

 Sub Find() Set cell = Range("C4:C13").Find("P. B. Shelly", After:=Range("C6")) MsgBox cell.Address End Sub 

Έξοδος:

Θα επιστρέψει $C$13 επειδή ξεκινά την αναζήτηση από κάτω από το κελί C6 , αυτό είναι από το κύτταρο C7 . Έτσι γίνεται P. B. Shelly στο κελί C13 πρώτον.

Διαβάστε περισσότερα: Πώς να βρείτε συμβολοσειρά σε ένα κελί χρησιμοποιώντας το VBA στο Excel

3. Εκτελέστε τη συνάρτηση εύρεσης στη VBA με περιτύλιξη γύρω από την παράμετρο After (για να αναζητήσετε μια τιμή με κυκλικό τρόπο)

Το Μετά το με την παράμετρο Λειτουργία εύρεσης αναζητά μια τιμή με κυκλικό τρόπο

Δηλαδή, ξεκινά την αναζήτηση από κάτω από ένα κελί μέσα σε μια περιοχή, ολοκληρώνει την αναζήτηση στην περιοχή και στη συνέχεια ξεκινά ξανά από την κορυφή της περιοχής.

Για παράδειγμα, ας ξεκινήσουμε την αναζήτηση του ονόματος "John Keats" από κάτω από το κελί C8 χρησιμοποιώντας το Μετά το παράμετρος.

Η γραμμή του κώδικα θα είναι:

Set cell = Range("C4:C13").Find("John Keats", After:=Range("C8"))

Και το πλήρες Κώδικας VBA θα είναι:

Κωδικός VBA:

 Sub Find() Set cell = Range("C4:C13").Find("John Keats", After:=Range("C8")) MsgBox cell.Address End Sub 

Έξοδος:

Θα επιστρέψει $C$7 επειδή ξεκινά την αναζήτηση από κάτω από το κελί C8 , αυτό είναι από το κύτταρο C9 .

Δεν βρίσκει τίποτα μέχρι το κύτταρο C13 , οπότε ξεκινά και πάλι από το κελί C4 και βρίσκει ένα στο κελί C7 .

Παρόμοιες αναγνώσεις:

  • Πώς να βρείτε συμβολοσειρά με VBA στο Excel (8 παραδείγματα)
  • Εύρεση ακριβούς αντιστοιχίας χρησιμοποιώντας VBA στο Excel (5 τρόποι)
  • Πώς να βρείτε και να αντικαταστήσετε χρησιμοποιώντας την VBA (11 τρόποι)

4. Αξιοποιήστε τη συνάρτηση εύρεσης στη VBA με την παράμετρο LookAt (για ακριβή ή μερική αντιστοίχιση)

Μπορείτε να χρησιμοποιήσετε το Λειτουργία εύρεσης στο VBA με το LookAt παράμετρος.

Χρήση LookAt = xlWhole για μια Ακριβές ταιριάζει, και LookAt=xlPart για ένα Μερική αγώνα.

Για παράδειγμα, ας προσπαθήσουμε να βρούμε αν υπάρχει κάποιο βιβλίο με το όνομα "Ωδή" στο Όνομα βιβλίου στήλη ( B4:B13 ).

Αν χρησιμοποιήσουμε xlΟλόκληρη στη γραμμή κώδικα:

Set cell = Range("B4:B13").Find("Ode", LookAt:=xlWhole)

Η έξοδος θα εμφανίσει ένα σφάλμα επειδή δεν θα βρει κανένα ακριβές αγώνα.

Αλλά αν χρησιμοποιείτε:

Set cell = Range("B4:B13").Find("Ode", LookAt:=xlPart)

Τότε θα επιστρέψει $B$9 , επειδή υπάρχει ένα βιβλίο με το όνομα "Ωδή" σε αυτό στο κελί B7 , Ωδή στο αηδόνι.

Έτσι, ο πλήρης κώδικας για το μερική ταιριάζει:

Κωδικός VBA:

 Sub Find() Set cell = Range("B4:B13").Find("Ode", LookAt:=xlPart) MsgBox cell.Address End Sub 

5. Λειτουργία της συνάρτησης Find στη VBA με την παράμετρο SearchDirection (Για να καθορίσετε την κατεύθυνση της αναζήτησης)

Μπορείτε επίσης να χρησιμοποιήσετε το Λειτουργία εύρεσης στο VBA με το SearchDirection παράμετρος.

Χρήση SearchDirection = xlNext για αναζήτηση από Από πάνω προς τα κάτω .

Και SearchDirection = xlPrevious για αναζήτηση από Από κάτω προς τα πάνω .

Για παράδειγμα, ας προσπαθήσουμε να βρούμε τον Συγγραφέα Elif Shafak στη στήλη Συγγραφέας ( C4:C13 ).

Αν χρησιμοποιήσουμε xlΕπόμενο στη γραμμή κώδικα:

Set cell = Range("C4:C13").Find("Elif Shafak", SearchDirection:=xlNext)

Τότε θα επιστρέψει $C$5 .

Αλλά αν χρησιμοποιείτε:

Set cell = Range("C4:C13").Find("Elif Shafak", SearchDirection:=xlPrevious)

Τότε θα επιστρέψει $C$11 .

Έτσι, ο πλήρης κώδικας για την αναζήτηση από από κάτω προς τα πάνω είναι:

Κωδικός VBA:

 Sub Find() Set cell = Range("C4:C13").Find("Elif Shafak", SearchDirection:=xlPrevious) MsgBox cell.Address End Sub 

6. Συνάρτηση εύρεσης στη VBA με την παράμετρο MatchCase (για αντιστοίχιση ευαίσθητη ή μη ευαίσθητη στην πεζότητα)

Τέλος, μπορείτε να χρησιμοποιήσετε το Λειτουργία εύρεσης με το MatchCase παράμετρος.

Χρήση MatchCase = True για ένα case-sensitive αγώνας , και MatchCase=False για ένα case-insensitive αγώνα.

Για παράδειγμα, ας προσπαθήσουμε να βρούμε το βιβλίο "μητέρα" στο Όνομα βιβλίου στήλη ( B4:B13 ).

Αν χρησιμοποιήσουμε True στη γραμμή κώδικα:

Set cell = Range("B4:B13").Find("mother", MatchCase:=True)

Η έξοδος θα εμφανίσει ένα σφάλμα επειδή δεν θα βρει καμία αντιστοιχία.

Αλλά αν χρησιμοποιείτε:

Set cell = Range("B4:B13").Find("mother", MatchCase:=False)

Τότε θα επιστρέψει $B$9 επειδή υπάρχει ένα βιβλίο με το όνομα "Μητέρα" στο κελί B8 .

Έτσι, ο πλήρης κώδικας για το case-insensitive ταιριάζει:

Κωδικός VBA:

 Sub Find() Set cell = Range("B4:B13").Find("Mother", MatchCase:=False) MsgBox cell.Address End Sub 

Συμπέρασμα

Χρησιμοποιώντας αυτές τις μεθόδους, μπορείτε να χρησιμοποιήσετε τη συνάρτηση εύρεσης στην εφαρμογή Visual Basic. Έχετε οποιεσδήποτε ερωτήσεις; Μη διστάσετε να μας ρωτήσετε.

Ο Hugh West είναι ένας εξαιρετικά έμπειρος εκπαιδευτής και αναλυτής του Excel με πάνω από 10 χρόνια εμπειρίας στον κλάδο. Είναι κάτοχος πτυχίου Λογιστικής και Χρηματοοικονομικής και μεταπτυχιακού στη Διοίκηση Επιχειρήσεων. Ο Hugh έχει πάθος για τη διδασκαλία και έχει αναπτύξει μια μοναδική προσέγγιση διδασκαλίας που είναι εύκολο να ακολουθηθεί και να κατανοηθεί. Οι εξειδικευμένες γνώσεις του στο Excel έχουν βοηθήσει χιλιάδες φοιτητές και επαγγελματίες παγκοσμίως να βελτιώσουν τις δεξιότητές τους και να διαπρέψουν στην καριέρα τους. Μέσω του ιστολογίου του, ο Hugh μοιράζεται τις γνώσεις του με τον κόσμο, προσφέροντας δωρεάν μαθήματα Excel και διαδικτυακή εκπαίδευση για να βοηθήσει άτομα και επιχειρήσεις να αξιοποιήσουν πλήρως τις δυνατότητές τους.