Πίνακας περιεχομένων
Κατά την εργασία με τους κώδικες VBA του Excel, συναντάμε μερικές ενσωματωμένες συναρτήσεις που μετατρέπουν μια σύνθετη εργασία σε έναν μικρό κώδικα μιας γραμμής. InStr είναι μια τέτοια συνάρτηση διαθέσιμη στο Excel VBA που αναζητά μια συγκεκριμένη συμβολοσειρά μέσα σε μια άλλη δεδομένη συμβολοσειρά ξεκινώντας από μια δεδομένη θέση. Σήμερα θα σας δείξω πώς μπορείτε να χρησιμοποιήσετε τη συνάρτηση InStr στη VBA για την αναζήτηση μιας συγκεκριμένης συμβολοσειράς μέσα σε μια άλλη δεδομένη συμβολοσειρά.
Κατεβάστε το βιβλίο ασκήσεων
Συνάρτηση InStr Function.xlsm
Εισαγωγή στην Λειτουργία VBA InStr
- Περίληψη
Ψάχνει για μια συγκεκριμένη συμβολοσειρά μέσα σε μια δεδομένη συμβολοσειρά, ξεκινώντας από μια δεδομένη θέση. Αν βρει μια αντιστοιχία, επιστρέφει τη θέση στη δεδομένη συμβολοσειρά από την οποία ξεκίνησε η αντιστοιχία.
- Σύνταξη
InStr([start],string1,string2,[compare])
- Επιχειρήματα
ΑΙΤΙΟΛΟΓΙΚΗ ΕΚΘΕΣΗ | ΑΠΑΙΤΗΣΗ | ΠΕΡΙΓΡΑΦΗ |
---|---|---|
[start] | Προαιρετικό | Η θέση από την οποία θα ξεκινήσει η αναζήτηση. Η προεπιλογή είναι 1. |
string1 | Απαιτούμενο | Η συμβολοσειρά εντός της οποίας αναζητά μια δεδομένη συμβολοσειρά. |
string2 | Απαιτούμενο | Η συμβολοσειρά που αναζητά μέσα σε μια δεδομένη συμβολοσειρά. |
[συγκρίνετε] | Προαιρετικό | Μια αριθμητική τιμή μεταξύ {-1,0,1,2} που καθορίζει τον τύπο σύγκρισης. Η προεπιλογή είναι -1 (vbUseCompareOption). Εάν δεν έχει καθοριστεί η δήλωση Option Compare, εκτελείται δυαδική σύγκριση. |
Σημείωση:
- Αν και η [start] επιχείρημα και το [συγκρίνετε] είναι προαιρετικά, χρειάζεστε το όρισμα [start] αν καθορίσετε το όρισμα [συγκρίνετε] Διαφορετικά, θα προκαλέσει σφάλμα.
- Εάν ένα από τα δύο ή και τα δύο [start] επιχείρημα και το [συγκρίνετε] το επιχείρημα είναι Null , θα αντιμετωπίσετε ένα σφάλμα.
- Οι τέσσερις καθορισμένες τιμές στο πεδίο [συγκρίνετε] argument εκτελεί τέσσερις διαφορετικούς τύπους σύγκρισης. Αναφέρονται παρακάτω:
ΑΞΙΑ | ΣΥΝΕΧΗΣ | ΠΕΡΙΓΡΑΦΗ |
---|---|---|
-1 | vbUseCompareOption | Εκτελεί τη σύγκριση που καθορίζεται στη δήλωση Option Compare. |
0 | vbBinaryCompare | Εκτελεί δυαδική σύγκριση. |
1 | vbTextCompare | Πραγματοποιεί σύγκριση κειμένου. |
2 | vbDatabaseCompare | Πραγματοποιεί μια σύγκριση με βάση τη βάση δεδομένων σας. |
- Επιλογή Σύγκριση είναι μια δήλωση που παρέχεται πριν από την έναρξη του κύριου κώδικα VBA. Καθορίζει αν ο κώδικας θα αναζητήσει δυαδική σύγκριση ή σύγκριση κειμένου όταν απαιτείται.
Επιλογή Σύγκριση κειμένου
- Με απλά λόγια , Δυαδική σύγκριση σημαίνει σύγκριση με βάση την πεζότητα.
- Με απλά λόγια , Σύγκριση κειμένου σημαίνει σύγκριση χωρίς ευαισθησία στην πεζότητα.
- Αξία επιστροφής
- Επιστρέφει τη θέση στο string1 από το οποίο το string2 ξεκίνησε.
- Σε περίπτωση string2 δεν βρίσκεται μέσα στο string1 ξεκινώντας από το έναρξη θέση, επιστρέφει 0.
- Εάν η string1 είναι μηδενικού μήκους, επιστρέφει 0.
- Εάν η string2 είναι μηδενικού μήκους, επιστρέφει το όρισμα έναρξη .
- Και τέλος, εάν κάποιο από τα string1 ή string2 είναι Null , επιστρέφει σφάλμα.
3 εύκολα παραδείγματα χρήσης της συνάρτησης InStr της VBA
Σε αυτή την ενότητα, θα δούμε τρία εύκολα παραδείγματα εφαρμογής της VBA InStr στο Excel. Ας δούμε το πρώτο παράδειγμα της συνάρτησης InStr σε κώδικες VBA.
1. Αποφασίζοντας αν μια διεύθυνση είναι διεύθυνση ηλεκτρονικού ταχυδρομείου ή όχι με τη χρήση της συνάρτησης InStr της VBA
Εδώ, έχουμε λάβει ένα σύνολο δεδομένων που περιέχει ορισμένες διευθύνσεις επικοινωνίας πελατών. Ο στόχος μας εδώ θα είναι να προσδιορίσουμε αν οι διευθύνσεις είναι διευθύνσεις ηλεκτρονικού ταχυδρομείου ή όχι.
Τώρα θα αναπτύξουμε έναν κώδικα VBA χρησιμοποιώντας το InStr για να προσδιορίσετε αν πρόκειται για διεύθυνση ηλεκτρονικού ταχυδρομείου ή όχι. Για να το κάνετε αυτό, ακολουθήστε τα παρακάτω βήματα.
Βήματα:
- Στην αρχή, πηγαίνετε στο Προγραμματιστής και επιλέξτε Visual Basic ( Ή πατήστε Alt+F11) για να ανοίξετε το VBA παράθυρο.
- Στη συνέχεια, στο VBA παράθυρο, πηγαίνετε στο Εισαγωγή> Ενότητα .
- Μετά από αυτό, στην ενότητα, επικολλήστε τον ακόλουθο κώδικα:
Function DECISION(string1 As String) Dim Position As Integer Position = InStr(1, string1, "@", 0) If Position = 0 Then DECISION = "Not Email" Else DECISION = "Email" End If End Function
- Επιπλέον, έχουμε δημιουργήσει μια συνάρτηση που ονομάζεται ΑΠΟΦΑΣΗ Αποφασίζει αν μια διεύθυνση είναι διεύθυνση ηλεκτρονικού ταχυδρομείου ή όχι. Ας εφαρμόσουμε τη συνάρτηση στο σύνολο δεδομένων που έχουμε.
- Στο κύτταρο C5 , γράψτε τον ακόλουθο τύπο και στη συνέχεια συμπληρώστε αυτόματα τα υπόλοιπα κελιά χρησιμοποιώντας Χειρολαβή πλήρωσης .
=DECISION(B5)
- Όπως βλέπουμε, έχουμε αναγνωρίσει κάθε διεύθυνση είτε πρόκειται για διεύθυνση ηλεκτρονικού ταχυδρομείου είτε όχι.
🎓 Πώς λειτουργεί ο κώδικας;
- Λειτουργία DECISION(string1 As String)
Πρώτον, δημιουργείται μια συνάρτηση που ονομάζεται ΑΠΟΦΑΣΗ με ένα όρισμα συμβολοσειράς με όνομα string1 .
- Dim Position As Integer
Δηλώνει μια ακέραια μεταβλητή με όνομα Θέση .
- Θέση = InStr(1, string1, "@", 0)
Αυτό εκχωρεί την τιμή του Θέση μεταβλητή ως έξοδο της InStr συνάρτηση με τα ορίσματα 1, string1, "@" και 0 Εν ολίγοις, αυτό αναθέτει τη θέση στη διεύθυνση όπου υπάρχει μια "@" .
- If Position = 0 Then DECISION = "Not Email"
Εκχωρεί την έξοδο του ΑΠΟΦΑΣΗ λειτουργία ως "Όχι Email" , εάν η Θέση μεταβλητή είναι 0 , δηλαδή, δεν υπήρχε "@" στη διεύθυνση.
(Υπενθυμίζουμε ότι αν κάποια συμβολοσειρά δεν βρεθεί μέσα στη δεδομένη συμβολοσειρά, η InStr η συνάρτηση επιστρέφει 0 ).
- Αλλιώς DECISION = "Email"
Αυτό εκχωρεί την έξοδο του ΑΠΟΦΑΣΗ λειτουργία ως "Email" αν υπήρχε μια "@" στη διεύθυνση. Έτσι, οι διευθύνσεις στις οποίες υπάρχει το "@" κατηγοριοποιούνται ως Ηλεκτρονικό ταχυδρομείο , και τα υπόλοιπα κατηγοριοποιούνται ως "Όχι Email" .
Παρόμοιες αναγνώσεις
- Πώς να χρησιμοποιήσετε τη συνάρτηση VBA UCASE στο Excel (4 παραδείγματα)
- Χρήση της συνάρτησης MsgBox στο Excel VBA (μια πλήρης κατευθυντήρια γραμμή)
- Πώς να χρησιμοποιήσετε τη συνάρτηση SPLIT της VBA στο Excel (5 παραδείγματα)
- Χρήση της συνάρτησης LCase στη VBA στο Excel (με 4 παραδείγματα)
- Πώς να χρησιμοποιήσετε τη συνάρτηση Fix στο Excel VBA (4 παραδείγματα)
2. Χρήση της συνάρτησης InStr της VBA για Εξαγωγή της επέκτασης ορισμένων διευθύνσεων email
Εδώ, έχουμε μια λίστα με κάποιες διευθύνσεις ηλεκτρονικού ταχυδρομείου κάποιων πελατών. Αυτή τη φορά θα εξάγουμε την επέκταση της διεύθυνσης ηλεκτρονικού ταχυδρομείου, όπως αν έχουν gmail.com ή yahoo.com .
Για να το κάνετε αυτό, ακολουθήστε τα παρακάτω βήματα.
Βήματα:
- Αρχικά, όπως και στην προηγούμενη μέθοδο, ανοίξτε ένα νέο VBA και επικολλήστε τον ακόλουθο κώδικα στο παράθυρο.
Function EXTENSION(Email As String) Dim Position As Integer Position = InStr(1, Email, "@", 0) EXTENSION = Right(Email, (Len(Email) - Position)) End Function
- Επιπλέον, δημιουργήσαμε μια συνάρτηση που ονομάζεται EXTENSION . Εξαγάγει την επέκταση οποιασδήποτε διεύθυνσης ηλεκτρονικού ταχυδρομείου.
- Επιπλέον, ας εφαρμόσουμε αυτή τη συνάρτηση στο σύνολο δεδομένων που έχουμε. Πρώτον, εισάγετε αυτόν τον τύπο στο κελί C5 και στη συνέχεια κάντε διπλό κλικ στο Χειρολαβή πλήρωσης .
=EXTENSION(B5)
- Τέλος, μπορούμε να δούμε ότι έχουμε εξαγάγει με επιτυχία την επέκταση όλων των μηνυμάτων ηλεκτρονικού ταχυδρομείου.
🎓 Πώς λειτουργεί ο κώδικας;
- Λειτουργία EXTENSION(Email As String)
Αυτό δημιουργεί μια νέα συνάρτηση που ονομάζεται EXTENSION , με ένα όρισμα συμβολοσειράς με όνομα Ηλεκτρονικό ταχυδρομείο .
- Dim Position As Integer
Αυτό το μέρος δηλώνει μια ακέραια μεταβλητή με όνομα Θέση.
- Θέση = InStr(1, Email, "@", 0)
Αυτό εκχωρεί την τιμή του Θέση μεταβλητή ως έξοδο της InStr συνάρτηση με τα ορίσματα 1, Email, "@" και 0 Εν ολίγοις, αυτό αναθέτει τη θέση στο Ηλεκτρονικό ταχυδρομείο όπου υπάρχει μια "@" .
- EXTENSION = Right(Email, (Len(Email) - Position))
Αυτό το τμήμα εκχωρεί την έξοδο του EXTENSION ως οι χαρακτήρες μετά το σύμβολο "@" Πρόκειται για την απαιτούμενη επέκταση της Ηλεκτρονικό ταχυδρομείο .
3. Εξαγωγή του ονόματος ή του επωνύμου από ένα όνομα με τη χρήση της συνάρτησης InStr της VBA
Τέλος, θα εκτελέσουμε μια μοναδικά διαφορετική εργασία. Αυτή τη φορά έχουμε τα ονόματα ορισμένων υπαλλήλων μιας εταιρείας. Και θα προσπαθήσουμε να κατασκευάσουμε μια συνάρτηση για να εξάγουμε είτε το όνομα είτε το επώνυμο των υπαλλήλων.
Για να το κάνετε αυτό, ακολουθήστε τα παρακάτω βήματα.
Βήματα:
- Πρώτον, παρόμοια με την μέθοδος 1 , επικολλήστε τον παρακάτω κώδικα σε μια νέα ενότητα στο παράθυρο VBA.
Function SHORTNAME(Name As String, First_or_Last As Integer) Dim Break As Integer Break = InStr(1, Name, " ", 0) If First_or_Last = -1 Then SHORTNAME = Left(Name, Break - 1) Else SHORTNAME = Right(Name, Len(Name) - Break) End If End Function
- Εδώ, έχουμε δημιουργήσει μια συνάρτηση που ονομάζεται ΣΥΝΤΟΜΟ ΟΝΟΜΑ που εξάγει είτε το όνομα είτε το επώνυμο από ένα όνομα. Ας εφαρμόσουμε αυτόν τον τύπο στο σύνολο δεδομένων μας.
- Αρχικά, για να εξάγετε το πρώτο όνομα, γράψτε τον παρακάτω τύπο στο κελί C5 .
=SHORTNAME(B5,-1)
- Τέλος, για να εξάγουμε τα επώνυμα, γράφουμε τον ακόλουθο τύπο στο D5 :
=SHORTNAME(B5,1)
- Στη συνέχεια, αν γεμίσουμε αυτόματα τα υπόλοιπα κελιά με Χειριστής γεμίσματος , θα δούμε το επιθυμητό αποτέλεσμα.
🎓 Πώς λειτουργεί ο κώδικας;
- Function SHORTNAME(Name As String, First_or_Last As Integer)
Δημιουργεί μια νέα συνάρτηση που ονομάζεται ΣΥΝΤΟΜΟ ΟΝΟΜΑ με ένα όρισμα String με όνομα Όνομα και ένα ακέραιο επιχείρημα με το όνομα First_or_Last .
- Dim Break As Integer
Αυτό το τμήμα δηλώνει μια νέα ακέραια μεταβλητή με όνομα Διάλειμμα .
- Break = InStr(1, Όνομα, " ", 0)
Αποδίδει την τιμή του Διάλειμμα μεταβλητή ως έξοδο της InStr συνάρτηση με τα ορίσματα 1, Όνομα, " " και 0 Εν ολίγοις, αυτό αναθέτει τη θέση στο Όνομα όπου υπάρχει μια κενό (" ").
- Εάν First_or_Last = -1 Τότε SHORTNAME = Left(Name, Break - 1)
Αυτή η γραμμή εκχωρεί την έξοδο της ΣΥΝΤΟΜΟ ΟΝΟΜΑ ως οι χαρακτήρες πριν από το χώρος , εάν η First_or_Last είναι -1. Αυτό είναι το πρώτο όνομα.
- SHORTNAME = Right(Name, Len(Name) - Break)
Αυτό το τμήμα εκχωρεί την έξοδο του ΣΥΝΤΟΜΟ ΟΝΟΜΑ ως οι χαρακτήρες μετά το χώρος , εάν η First_or_Last είναι 1. Αυτό είναι το επώνυμο.
Συμπέρασμα
Με αυτόν τον τρόπο, μπορείτε να γράψετε κώδικες VBA με το InStr συνάρτηση που βρίσκει τη θέση μιας συγκεκριμένης συμβολοσειράς μέσα σε μια άλλη δεδομένη συμβολοσειρά, και στη συνέχεια μπορείτε να δημιουργήσετε τις δικές σας συναρτήσεις για ποικίλες χρήσεις. Επιπλέον, αν έχετε οποιεσδήποτε ερωτήσεις, μη διστάσετε να μας ρωτήσετε.