Πίνακας περιεχομένων
Μία από τις πιο σημαντικές και ευρέως χρησιμοποιούμενες λειτουργίες που χρησιμοποιούμε στο Εφαρμογή Visual Basic (VBA) είναι η συνάρτηση Find. Σε αυτό το άρθρο, θα σας δείξω πώς μπορείτε να χρησιμοποιήσετε τη συνάρτηση Λειτουργία FIND του Excel με κατάλληλα παραδείγματα και εικόνες.
Κατεβάστε το βιβλίο ασκήσεων
Εύρεση συνάρτησης σε VBA στο Excel.xlsm6 γρήγορα παραδείγματα χρήσης της συνάρτησης 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. Έχετε οποιεσδήποτε ερωτήσεις; Μη διστάσετε να μας ρωτήσετε.