Πίνακας περιεχομένων
Αν ψάχνετε για μερικούς από τους ευκολότερους τρόπους για να βρείτε μια ακριβή αντιστοιχία χρησιμοποιώντας VBA , τότε θα βρείτε αυτό το άρθρο χρήσιμο. Ας ξεκινήσουμε λοιπόν με το άρθρο και ας γνωρίσουμε τους τρόπους εύρεσης μιας ακριβούς αντιστοιχίας.
Λήψη βιβλίου εργασίας
VBA Εύρεση ακριβούς αγώνα.xlsm5 τρόποι εύρεσης ακριβούς αντιστοιχίας με χρήση της VBA
Χρησιμοποίησα τον παρακάτω πίνακα που έχει τα αρχεία των αποτελεσμάτων ορισμένων μαθητών. Θα εξηγήσω διαφορετικούς τρόπους για να βρω την ακριβή αντιστοιχία χρησιμοποιώντας αυτόν τον πίνακα με τη βοήθεια του VBA.
Για το σκοπό αυτό, χρησιμοποίησα την έκδοση Microsoft Excel 365, μπορείτε να χρησιμοποιήσετε οποιαδήποτε άλλη έκδοση ανάλογα με την ευκολία σας.
Μέθοδος-1: Εύρεση ακριβούς αντιστοιχίας σε μια σειρά κελιών
Αν θέλετε να βρείτε μια ακριβή αντιστοιχία μιας συμβολοσειράς όπως το όνομα ενός μαθητή και στη συνέχεια να βρείτε τη θέση του κελιού αυτού του μαθητή, τότε μπορείτε να το κάνετε ακολουθώντας αυτή τη μέθοδο.
Εδώ, θα βρω μια ακριβή αντιστοιχία για τον μαθητή με το όνομα "Joseph Micahel" .
Βήμα-01 :
➤Γύρνα σε Προγραμματιστής Καρτέλα>>, Visual Basic Επιλογή
Στη συνέχεια, το Visual Basic Editor θα ανοίξει.
➤Γύρνα σε Εισαγωγή Καρτέλα>>, Ενότητα Επιλογή
Μετά από αυτό, ένα Ενότητα θα δημιουργηθεί.
Βήμα-02 :
➤Γράψτε τον ακόλουθο κώδικα
Sub searchtxt() Dim rng As Range Dim str As String Set rng = Sheets("exact match").Range("B5:B10").Find("Joseph Michael", LookIn:=xlValues) If Not rng Is Nothing Then str = rng.Address MsgBox (rng & " in " & str) End If End Sub
Ορίστε, "ακριβής αντιστοιχία" είναι το όνομα του φύλλου και "B5:B10" είναι το εύρος των ονομάτων των μαθητών και "Joseph Michael" είναι το όνομα του μαθητή που πρέπει να βρεθεί.
rng δηλώνεται ως αντικείμενο εύρους και str ως μεταβλητή συμβολοσειράς για την αποθήκευση της διεύθυνσης του αντικειμένου που αναζητείται.
Το ΕΆΝ θα αναθέσει τη διεύθυνση του αντικειμένου στην εντολή str μεταβλητή.
➤Press F5
Αποτέλεσμα :
Μετά από αυτό, θα λάβετε τα εξής Πλαίσιο μηνυμάτων που περιέχει τη θέση του κελιού του μαθητή με το όνομα "Joseph Michael" .
Διαβάστε περισσότερα: Εύρεση εντός μιας περιοχής με VBA στο Excel: Συμπεριλαμβανομένων των ακριβών και μερικών αντιστοιχιών
Μέθοδος-2: Εύρεση ακριβούς αντιστοιχίας και αντικατάστασή της με χρήση της VBA
Θα σας δείξω τον τρόπο με τον οποίο μπορείτε να βρείτε το όνομα του ενδεικνυόμενου μαθητή και στη συνέχεια να το αντικαταστήσετε με ένα άλλο όνομα, επειδή κατά κάποιο λάθος αυτό το όνομα έχει γραφτεί εδώ. Μπορείτε να βρείτε την επιθυμητή συμβολοσειρά και αντικαταστήστε την ακολουθώντας αυτή τη μέθοδο.
Βήμα-01 :
➤Follow Βήμα-01 του Μέθοδος-1
Sub FindandReplace() Dim rng As Range Dim str As String With Worksheets("find&replace").Range("B5:B10") Set rng = .Find("Donald Paul", LookIn:=xlValues) If Not rng Is Nothing Then str = rng.Address Do rng.Value = Replace(rng.Value, "Donald Paul", "Henry Jackson") Set rng = .FindNext(rng) Loop While Not rng Is Nothing End If End With End With End Sub
Ορίστε, "find&replace" είναι το όνομα του φύλλου και "B5:B10" είναι το εύρος των ονομάτων των μαθητών και "Donald Paul" είναι το όνομα του μαθητή που πρέπει να βρεθεί και στη συνέχεια "Χένρι Τζάκσον" θα είναι το όνομα του μαθητή αντί για το προηγούμενο.
ΜΕ θα αποφευχθεί η επανάληψη του τμήματος κώδικα σε κάθε εντολή.
Το ΕΆΝ θα αναθέσει τη διεύθυνση του αντικειμένου στην εντολή str μεταβλητή και η DO βρόχος θα αντικαταστήσει όλες τις εμφανίσεις της λέξης αναζήτησης.
➤Press F5
Αποτέλεσμα :
Μετά από αυτό, θα λάβετε το όνομα του νέου μαθητή ως "Χένρι Τζάκσον" .
Μέθοδος-3: Εύρεση ακριβούς και ευαίσθητης στην πεζότητα αντιστοίχισης
Αν θέλετε να βρείτε μια αντιστοιχία με βάση την πεζότητα, τότε ακολουθήστε αυτή τη μέθοδο. Εδώ, έχω δύο ονόματα που μοιάζουν μεταξύ τους, αλλά υπάρχει διαφορά στην πεζότητα και ανάλογα με την πεζότητα θα αντικαταστήσω το όνομα του τελευταίου μαθητή.
Βήμα-01 :
➤Follow Βήμα-01 του Μέθοδος-1
Sub exactmatch() Dim rng As Range Dim str As String With Worksheets("case-sensitive").Range("B5:B10") Set rng = .Find("Donald Paul", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True) If Not rng Is Nothing Then str = rng.Address Do rng.Value = Replace(rng.Value, "Donald Paul", "Henry Jackson") Set rng = .FindNext(rng) Loop While Not rng Is Nothing End If End With End With EndΥπο
Ορίστε, "case-sensitive" είναι το όνομα του φύλλου και "B5:B10" είναι το εύρος των ονομάτων των μαθητών και "Donald Paul" είναι το όνομα του μαθητή που πρέπει να βρεθεί, και στη συνέχεια "Χένρι Τζάκσον" θα είναι το όνομα του μαθητή αντί για το προηγούμενο.
ΜΕ θα αποφευχθεί η επανάληψη του τμήματος κώδικα σε κάθε εντολή.
Το ΕΆΝ θα αναθέσει τη διεύθυνση του αντικειμένου στην εντολή str μεταβλητή και η DO βρόχος θα αντικαταστήσει όλες τις εμφανίσεις της λέξης αναζήτησης.
➤Press F5
Αποτέλεσμα :
Τώρα, σύμφωνα με την υπόθεση, το όνομα του μαθητή θα αλλάξει σε "Χένρι Τζάκσον" .
Παρόμοιες αναγνώσεις:
- Πώς να βρείτε συμβολοσειρά σε ένα κελί χρησιμοποιώντας το VBA στο Excel (2 μέθοδοι)
- VBA Εύρεση σε στήλη στο Excel (7 προσεγγίσεις)
- Πώς να βρείτε συμβολοσειρά με VBA στο Excel (8 παραδείγματα)
Μέθοδος-4: Χρήση της συνάρτησης InStr
Ας υποθέσουμε ότι θέλετε να ταιριάξετε Πέρασμα ή Αποτυγχάνει να ανταποκριθεί στα ονόματα των μαθητών ανάλογα με το Στήλη αποτελεσμάτων όπου Πέρασμα ή Αποτυχία Για να βρείτε αυτή τη συμβολοσειρά στο Στήλη αποτελεσμάτων και γράψτε "Πέρασε" στο Στήλη κατάστασης για τους μαθητές που έχουν περάσει τις εξετάσεις, μπορείτε να χρησιμοποιήσετε η συνάρτηση InStr .
Βήμα-01 :
➤Follow Βήμα-01 του Μέθοδος-1
Sub Checkstring() Dim cell As Range For Each cell In Range("C5:C10") If InStr(cell.Value, "Pass")> 0 Then cell.Offset(0, 1).Value = "Passed" Else cell.Offset(0, 1).Value = " " End If Next cell End Sub
Εδώ, το εύρος των κελιών είναι C5:C10 το οποίο είναι το Στήλη αποτελεσμάτων
InStr(cell. value, "Pass")> 0 είναι η συνθήκη όπου ο αριθμός είναι μεγαλύτερος από το μηδέν (όταν το κελί περιέχει "Pass" ), τότε η επόμενη γραμμή θα συνεχίσει και θα δώσει την έξοδο στο διπλανό κελί ως Πέρασε .
Αν η συνθήκη γίνει ψευδής σημαίνει ότι ένα κελί δεν περιέχει κανένα "Pass" τότε η γραμμή κάτω από ELSE θα εκτελεστεί και θα δώσει την τιμή εξόδου στο διπλανό κελί ως Κενό .
Αυτός ο βρόχος θα συνεχιστεί για κάθε κελί.
➤Press F5
Αποτέλεσμα :
Στη συνέχεια, θα λάβετε το "Πέρασε" καθεστώς για τους μαθητές που έχουν περάσει.
Μέθοδος-5: Εύρεση ακριβούς αντιστοιχίας και εξαγωγή δεδομένων
Αν θέλετε να εξάγετε τα αντίστοιχα δεδομένα για έναν μαθητή με το όνομα "Michael James" τότε μπορείτε να ακολουθήσετε αυτή τη μέθοδο.
Βήμα-01 :
➤Follow Βήμα-01 του Μέθοδος-1
Sub Extractdata() Dim lastusedrow As Long Dim i As Integer, icount As Integer lastusedrow = ActiveSheet.Range("B100").End(xlUp).Row For i = 1 To lastusedrow If InStr(1, Range("B" & i), "Michael James")> 0 Then icount = icount + 1 Range("E" & icount & ":G" & icount) = Range("B" & i & ":D" & i).Value End If Next i End Sub
Εδώ, έχω χρησιμοποιήσει B100 ως το Σειρά ενεργών φύλλων (μπορείτε να χρησιμοποιήσετε οποιοδήποτε εύρος ανάλογα με τη χρήση σας).
InStr(1, Range("B" & i), "Michael James")> 0 είναι η συνθήκη για τον έλεγχο εάν το κελί στη στήλη B περιέχει Michael James .
Range("E" & icount & ":G" & icount) είναι η περιοχή στην οποία θέλετε τα δεδομένα εξόδου και Range("B" & i & ":D" & i).value θα δώσει τις τιμές από τη στήλη B στο D .
➤Press F5
Αποτέλεσμα :
Στη συνέχεια, θα λάβετε τα ακόλουθα δεδομένα για τους μαθητές που έχουν το όνομα Michael James .
Τμήμα πρακτικής
Για να εξασκηθείτε μόνοι σας, σας παρέχουμε ένα Πρακτική τμήμα όπως παρακάτω σε ένα φύλλο με όνομα Πρακτική . Παρακαλώ κάντε το μόνοι σας.
Συμπέρασμα
Σε αυτό το άρθρο, προσπάθησα να καλύψω τους ευκολότερους τρόπους για να βρείτε μια ακριβή αντιστοιχία χρησιμοποιώντας VBA στο Excel αποτελεσματικά. Ελπίζω να το βρείτε χρήσιμο. Αν έχετε οποιεσδήποτε προτάσεις ή ερωτήσεις, μη διστάσετε να τις μοιραστείτε μαζί μας.