Πίνακας περιεχομένων
Εφαρμογή του VBA είναι η πιο αποτελεσματική, γρήγορη και ασφαλής μέθοδος για να εκτελέσετε οποιαδήποτε λειτουργία στο Excel. Σε αυτό το άρθρο, θα σας δείξουμε πώς να βρείτε ορισμένες συμβολοσειρές σε μια άλλη δεδομένη συμβολοσειρά χρησιμοποιώντας το VBA στο Excel.
Λήψη προτύπου πρακτικής
Μπορείτε να κατεβάσετε το δωρεάν υπόδειγμα Excel από εδώ.
VBA για την εύρεση στο String.xlsm
Λειτουργία InStr
Το Microsoft Excel διαθέτει μια ενσωματωμένη συνάρτηση που ονομάζεται η συνάρτηση InStr για να βρείτε τη θέση συγκεκριμένων συμβολοσειρών σε ένα δεδομένο String.
Γενική σύνταξη:
InStr([start], string1, string2, [compare])
Ορίστε,
Επιχειρήματα | Υποχρεωτικό/ Προαιρετικό | Ορισμός |
---|---|---|
έναρξη | Προαιρετικό | Θέση εκκίνησης της αναζήτησης.
|
string1 | Απαιτούμενο | Η συμβολοσειρά για αναζήτηση, Primary String. |
string2 | Απαιτούμενο | Η συμβολοσειρά που θα αναζητηθεί στην αρχική συμβολοσειρά. |
συγκρίνετε | Προαιρετικό | Το InStr είναι από προεπιλογή ευαίσθητη στην πεζότητα. Αλλά αν θέλετε να εκτελέσετε μια συνάρτηση χωρίς ευαισθησία στην πεζότητα InStr , τότε μπορείτε να περάσετε το επιχείρημα εδώ για να εκτελέσετε μια συγκεκριμένη σύγκριση. Αυτό το επιχείρημα μπορεί να έχει τις ακόλουθες τιμές,
Από προεπιλογή, InStr παίρνει vbBinaryCompare ως όρισμα σύγκρισης. |
8 Εύκολα παραδείγματα για την εύρεση συγκεκριμένης θέσης συμβολοσειράς σε δεδομένη συμβολοσειρά με χρήση της VBA
Ας δούμε μερικά απλά παραδείγματα για να πάρουμε τις θέσεις ορισμένων συμβολοσειρών σε μια δεδομένη συμβολοσειρά χρησιμοποιώντας VBA .
1. VBA για την εύρεση της θέσης του κειμένου σε συμβολοσειρά
Ακολουθεί ένα παράδειγμα InStr για να βρείτε τη θέση ενός κειμένου σε μια συμβολοσειρά.
- Τύπος Alt + F11 στο πληκτρολόγιό σας ή πηγαίνετε στην καρτέλα Προγραμματιστής -> Visual Basic για να ανοίξετε Visual Basic Editor .
- Στο αναδυόμενο παράθυρο κώδικα, από τη γραμμή μενού, κάντε κλικ στην επιλογή Εισαγωγή -> Ενότητα .
- Τώρα στο παράθυρο κώδικα, γράψτε ένα απλό InStr πρόγραμμα μέσα σε ένα Υποδιαδικασία VBA (βλ. παρακάτω).
Sub INSTR_Example() MsgBox InStr("Η ευτυχία είναι μια επιλογή", "επιλογή") End Sub
Ο κώδικάς σας είναι τώρα έτοιμος για εκτέλεση.
- Τύπος F5 στο πληκτρολόγιό σας ή από τη γραμμή μενού επιλέξτε Εκτέλεση -> Εκτέλεση Sub/UserForm Μπορείτε επίσης να κάνετε κλικ στο μικρό εικονίδιο Play στη γραμμή υπομενού για να εκτελέσετε τη μακροεντολή.
Θα δείτε ότι το αναδυόμενο πλαίσιο μηνυμάτων θα σας δώσει ένα αριθμός που δηλώνει τη θέση του κειμένου που θέλετε να ελέγξετε.
Επεξήγηση:
Η κύρια συμβολοσειρά μας, " Η ευτυχία είναι επιλογή " είναι μια πρόταση 21 γραμμάτων (με κενά) και θέλαμε να βρούμε τη θέση του κειμένου " επιλογή " σε αυτή τη συμβολοσειρά. Το κείμενο " επιλογή " ξεκίνησε από τη 16η θέση της αρχικής χορδής, επομένως πήραμε τον αριθμό 16 ως την έξοδό μας στο πλαίσιο μηνύματος.
2. VBA για την εύρεση κειμένου από συγκεκριμένη θέση σε συμβολοσειρά
Τώρα ας δούμε τι θα συνέβαινε αν θέλαμε να πάρουμε τη θέση από έναν συγκεκριμένο αριθμό.
- Με τον ίδιο τρόπο όπως και πριν, ανοίξτε Visual Basic Editor από το Προγραμματιστής και Εισαγωγή a Ενότητα στο παράθυρο κώδικα.
- Στο παράθυρο κώδικα, γράψτε ένα απλό InStr πρόγραμμα που φαίνεται παραπάνω και περάστε την τιμή στο όρισμα start ανάλογα με τη θέση από την οποία θέλετε να μετρήσετε το κείμενό σας.
Sub INSTR_Example() MsgBox InStr(17, "Η ευτυχία είναι μια επιλογή", "επιλογή") End Sub
- Επόμενο, Εκτέλεση τον κώδικα.
Θα δείτε ότι το αναδυόμενο πλαίσιο μηνυμάτων θα σας δώσει ένα αριθμός που δηλώνει τη θέση του κειμένου ξεκινώντας από μια συγκεκριμένη θέση που θέλατε να ελέγξετε.
Επεξήγηση:
Καθώς γνωρίζαμε ήδη (από τη συζήτηση της φάσης 1) ότι το κείμενο " επιλογή " ξεκίνησε από τη θέση 16 , οπότε τοποθετήσαμε δύο " επιλογή " στην πρωτεύουσα συμβολοσειρά και ορίστε 17 ως 1η παράμετρος για να παραλείψουμε το πρώτο " επιλογή ". Έτσι, εμείς Εκτέλεση την παραπάνω μακροεντολή και μας έδειξε τον αριθμό θέσης 27 που είναι ακριβώς ο αριθμός θέσης του δεύτερο " επιλογή " στο συγκεκριμένο αλφαριθμητικό.
3. VBA για την εύρεση κειμένου με τη συνάρτηση InStr χωρίς ευαισθησία στην πεζότητα σε συμβολοσειρά
Από την εισαγωγή του InStr συνάρτηση γνωρίζετε ήδη ότι από προεπιλογή, η InStr είναι ευαίσθητη στην πεζότητα. Ας το διαπιστώσουμε αυτό με ένα παράδειγμα.
Δείτε τα ακόλουθα VBA κώδικα, όπου θέλαμε να βρούμε τη θέση της λέξης " Επιλογή " με ένα κεφαλαίο "C" στη συμβολοσειρά " Η ευτυχία είναι επιλογή " όπου η επιλογή γράφεται με ένα μικρό "γ" .
- Εκτέλεση τον κώδικα και βρείτε 0 ως έξοδο.
Αυτό οφείλεται στο γεγονός ότι η InStr η λειτουργία αντιμετωπίζει κεφαλαίο "C" και μικρό "γ" Έτσι, έψαξε για τη λέξη " Επιλογή " στη συμβολοσειρά και δεν βρήκαμε καμία αντιστοιχία, οπότε επέστρεψε το 0 .
- Για να κάνετε το InStr συνάρτηση case-insensitive , ορίστε το όρισμα compare σε vbTextCompare (βλ. παρακάτω).
Sub INSTR_Example() MsgBox InStr(1, "Η ευτυχία είναι επιλογή και επιλογή", "Επιλογή", vbTextCompare) End Sub
- Εκτέλεση τον κώδικα.
Θα λάβετε το θέση του κειμένου από τη συμβολοσειρά, είτε το κείμενο είναι γραμμένο σε κεφαλαία ή μικρά γράμματα .
4. VBA για την εύρεση κειμένου από τα δεξιά μιας συμβολοσειράς
Μέχρι τώρα η InStr μας έδινε μόνο τη θέση από την αριστερή πλευρά της συμβολοσειράς. Τι γίνεται όμως αν θέλετε να βρείτε τη θέση του κειμένου από τη δεξιά πλευρά της συμβολοσειράς.
Η συνάρτηση InStrRev αναζητήσεις από τα δεξιά. InStrRev λειτουργεί πολύ παρόμοια με τη συνάρτηση InStr συνάρτηση και θα σας βρει τη θέση ενός κειμένου από το δεξιά πλευρά της συμβολοσειράς.
Δείτε τα παρακάτω παραδείγματα για να καταλάβετε τη διαφορά.
- Αν εκτελέσουμε τον ακόλουθο κώδικα με το InStr λειτουργία τότε,
μας δίνει τη θέση ( 16 ) του πρώτου κειμένου " επιλογή ".
- Αλλά αν εκτελέσουμε τον ίδιο κώδικα με το InStrRev Λειτουργία τότε,
μας δίνει τη θέση ( 27 ) του τελευταίου κειμένου " επιλογή ".
Παρόμοιες αναγνώσεις:
- FindNext χρησιμοποιώντας VBA στο Excel (2 παραδείγματα)
- Πώς να βρείτε και να αντικαταστήσετε χρησιμοποιώντας την VBA (11 τρόποι)
- Εύρεση ακριβούς αντιστοιχίας χρησιμοποιώντας VBA στο Excel (5 τρόποι)
5. VBA για την εύρεση της θέσης ενός χαρακτήρα σε συμβολοσειρά
Μπορείτε επίσης να βρείτε τη θέση ενός συγκεκριμένου χαρακτήρα σε μια συμβολοσειρά με τον ίδιο τρόπο που βρήκατε το κείμενο.
- Αντιγράψτε τον ακόλουθο κώδικα στο VBA παράθυρο κώδικα
Sub Find_Character() Dim z As Long z = InStr("Η ευτυχία είναι μια επιλογή", "e") MsgBox z End Sub
- Και Εκτέλεση η μακροεντολή.
Το πρώτο " e " στη δεδομένη συμβολοσειρά μας βρίσκεται στον αριθμό 7 θέση.
6. VBA για την εύρεση υποσυνόλου σε μια συμβολοσειρά
Εδώ θα μάθουμε πώς να βρίσκουμε αν μια συμβολοσειρά περιέχει ένα substring ή όχι.
Για να το πετύχουμε αυτό, πρέπει να εκτελέσουμε ένα Δήλωση IF στον κώδικά μας.
- Με τον ίδιο τρόπο όπως και πριν, ανοίξτε Visual Basic Editor από το Προγραμματιστής και Εισαγωγή a Ενότητα στο παράθυρο κώδικα.
- Στο παράθυρο κώδικα, αντιγράψτε τον ακόλουθο κώδικα και επικολλήστε τον.
Public Sub FindSub() If InStr("Happiness is a choice", "choice") = 0 Then MsgBox "No match found" Else MsgBox "Match found" End If End Sub
Ο κώδικάς σας είναι τώρα έτοιμος για εκτέλεση.
- Εκτέλεση η μακροεντολή.
Εάν το η συμβολοσειρά περιέχει την υποσέλιδο τότε θα λάβετε ένα Βρέθηκε ταίρι , αλλιώς, θα επιστρέψει no match found. Στο παράδειγμά μας, θέλαμε να μάθουμε αν η κύρια συμβολοσειρά μας " Η ευτυχία είναι επιλογή " περιέχει τη λέξη " επιλογή " ή όχι. Καθώς αυτό συμβαίνει, παίρνουμε ένα Βρέθηκε αγώνας αποτέλεσμα.
7. VBA για την εύρεση συμβολοσειράς σε μια περιοχή κελιών
Μπορείτε να αναζητήσετε ένα συγκεκριμένο κείμενο σε μια περιοχή κελιών της συμβολοσειράς και να επιστρέψετε μια συγκεκριμένη συμβολοσειρά.
Κοιτάξτε το ακόλουθο παράδειγμα όπου θα βρούμε " Ο Δρ. " και όταν υπάρχει ταύτιση θα επιστρέψει " Γιατρός ".
- Παρακάτω είναι ο κώδικας για να λάβετε το αποτέλεσμα που συζητήθηκε παραπάνω,
Sub Find_String_in_Range() Dim cell As Range For Each cell In Range("B5:B10") If InStr(cell.Value, "Dr.")> 0 Then cell.Offset(0, 1).Value = "Doctor" End If Next cell End Sub
- Εκτέλεση τον κώδικα και το αποτέλεσμα φαίνεται παρακάτω
- Μπορείτε να τροποποιήσετε τη μακροεντολή ανάλογα με τις ανάγκες σας. Για παράδειγμα, αν θέλετε να βρείτε " Καθ. " σε οποιοδήποτε κελί της συμβολοσειράς, και λάβετε " Καθηγητής " ως επιστροφή, τότε απλά περάστε " Καθ. " ως τιμή αντί για " Δρ ." στην 4η γραμμή της μακροεντολής και " Καθηγητής " αντί για " Γιατρός " στην 5η γραμμή της μακροεντολής και ορίστε τον αριθμό της περιοχής κελιών αναλόγως.
8. VBA για την εύρεση συμβολοσειράς σε ένα κελί
Μπορείτε επίσης να αναζήτηση ενός συγκεκριμένου κειμένου σε ένα μόνο κελί της συμβολοσειράς και να επιστρέψει ένα συγκεκριμένο αλφαριθμητικό.
- Αντιγράψτε τον παρακάτω κώδικα και επικολλήστε τον στο παράθυρο κώδικα.
Sub Find_String_in_Cell() If InStr(Range("B5").Value, "Dr.")> 0 Then Range("C5").Value = "Doctor" End If End Sub
Θα ψάξει για " Ο Δρ. " στο Κύτταρο B5 και αν βρει την αντιστοιχία τότε επιστρέφει " Γιατρός " στο Κύτταρο C5 .
- Μπορείτε να τροποποιήσετε τη μακροεντολή ανάλογα με τις ανάγκες σας. Για παράδειγμα, αν θέλετε να βρείτε " Καθ. " σε οποιοδήποτε κελί της συμβολοσειράς, και λάβετε " Καθηγητής " ως επιστροφή, τότε απλά περάστε " Καθ. " ως τιμή αντί για " Δρ ." στη 2η γραμμή της μακροεντολής και " Καθηγητής " αντί για " Γιατρός " στην 3η γραμμή της μακροεντολής και ορίστε τον αριθμό αναφοράς κελιού αναλόγως.
Συμπέρασμα
Αυτό το άρθρο σας έδειξε πώς να βρείτε ορισμένα κείμενα σε συμβολοσειρά στο Excel χρησιμοποιώντας Μακροεντολή VBA. Ελπίζω αυτό το άρθρο να ήταν πολύ χρήσιμο για εσάς. Μη διστάσετε να θέσετε οποιεσδήποτε ερωτήσεις σχετικά με το θέμα.