Πίνακας περιεχομένων
Αν ψάχνετε για μερικούς από τους ευκολότερους τρόπους εύρεσης υποσέλιδο με τη χρήση της VBA, τότε βρίσκεστε στο σωστό μέρος. Αφού διαβάσετε αυτό το άρθρο, θα είστε σε θέση να βρείτε τη θέση ενός υποσέλιδο ή να εξάγετε δεδομένα χρησιμοποιώντας αυτό το υποσέλιδο ή να αλλάξετε τη μορφή ενός υποσέλιδο εύκολα. Ας μπούμε στο άρθρο.
Λήψη βιβλίου εργασίας
Δείγμα περιεχομένου9 τρόποι εύρεσης υποσέλιξης με χρήση της VBA
Εδώ, έχω τον ακόλουθο πίνακα δεδομένων με τον οποίο θα δείξω τους τρόπους εύρεσης υποσυνόλου σε μια συμβολοσειρά με τη χρήση της VBA. Θα προσπαθήσω επίσης να δείξω τους τρόπους εύρεσης υποσυνόλου σε μια τυχαία συμβολοσειρά.
Έχω εκτελέσει αυτή την εργασία χρησιμοποιώντας Microsoft Excel 365 έκδοση, μπορείτε να χρησιμοποιήσετε οποιαδήποτε άλλη έκδοση ανάλογα με την ευκολία σας.
Μέθοδος-1: Εύρεση υποσυνόλου σε μια συμβολοσειρά με χρήση της VBA
Αν θέλετε να βρείτε την επιθυμητή υποπερίοδο σε μια συμβολοσειρά χρησιμοποιώντας την VBA, μπορείτε να χρησιμοποιήσετε η συνάρτηση InStr στον κώδικα VBA.
Βήμα-01 :
➤Γύρνα σε Προγραμματιστής Καρτέλα>>, Visual Basic Επιλογή
Στη συνέχεια, το Visual Basic Editor θα ανοίξει.
➤Γύρνα σε Εισαγωγή Καρτέλα>>, Ενότητα Επιλογή
Μετά από αυτό, ένα Ενότητα θα δημιουργηθεί.
Βήμα-02 :
➤Γράψτε τον ακόλουθο κώδικα
Sub FindFirst() Dim Pos As Integer Pos = InStr(1, "Νομίζω άρα είμαι", "νομίζω") MsgBox Pos End Sub
Ορίστε, InStr(1, "Νομίζω, άρα είμαι", "νομίζω") θα επιστρέψει τη θέση της υποομάδας μιας συμβολοσειράς. 1 είναι η θέση εκκίνησης, " Σκέφτομαι, άρα είμαι" είναι η συμβολοσειρά στην οποία θα βρείτε την επιθυμητή υποσυμβολοσειρά, και "σκεφτείτε" Είναι εξ ορισμού ευαίσθητη στην πεζότητα, οπότε προσέξτε την πεζότητα της υποσέλιδος που θέλετε να αναζητήσετε.
➤Press F5
Αποτέλεσμα :
Μετά από αυτό, θα λάβετε τα εξής Πλαίσιο μηνυμάτων που περιέχει τη θέση του "σκεφτείτε" υποσέλιδο.
Μέθοδος-2: Εύρεση υποσέλιδο με ευαισθησία στην πεζότητα σε μια συμβολοσειρά
Αν θέλετε να βρείτε την επιθυμητή υποπερίοδο σε μια συμβολοσειρά ανεξάρτητα από την περίπτωση χρησιμοποιώντας την VBA, τότε ακολουθήστε αυτή τη μέθοδο.
Βήμα-01 :
➤Follow Βήμα-01 του Μέθοδος-1
Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "I Think Therefore I Am", "think",vbTextCompare) MsgBox Pos End Sub
Ορίστε, vbTextCompare χρησιμοποιείται για την εύρεση υποσυνόλων χωρίς ευαισθησία στην πεζότητα.
➤Press F5
Αποτέλεσμα :
Στη συνέχεια, θα λάβετε τα εξής Πλαίσιο μηνυμάτων που περιέχει τη θέση του "σκεφτείτε" υποσέλιδο.
Μπορείτε να κάνετε το ίδιο χρησιμοποιώντας τον ακόλουθο κώδικα.
Option Compare Text Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "I Think Therefore I Am", "think") MsgBox Pos End Sub
Ορίστε, Επιλογή Σύγκριση κειμένου θα βρει υποσύνολο χωρίς ευαισθησία στην πεζότητα.
➤Press F5
Αποτέλεσμα :
Στη συνέχεια, θα λάβετε τα εξής Πλαίσιο μηνυμάτων που περιέχει τη θέση του "σκεφτείτε" υποσέλιδο.
Μέθοδος-3: Χρήση της συνάρτησης InstrRev στη VBA
Εδώ, θα δείξω τον τρόπο εύρεσης μιας υποομάδας από το τέλος μιας συμβολοσειράς.
Βήμα-01 :
➤Follow Βήμα-01 του Μέθοδος-1
Sub FindFromEnd() MsgBox InStrRev("Νομίζω, άρα είμαι", "Εγώ") End Sub
InStrRev θα βρει την υποοδηγία από τη δεξιά πλευρά αντί για την αριστερή.
➤Press F5
Αποτέλεσμα :
Στη συνέχεια, θα λάβετε τα εξής Πλαίσιο μηνυμάτων που περιέχει τη θέση του δεύτερου "I" υποσέλιδο από τη δεξιά πλευρά.
Μέθοδος-4: Εύρεση της θέσης της υποομάδας σε μια συμβολοσειρά σε ένα εύρος δεδομένων
Αν θέλετε να βρείτε τον ειδικό χαρακτήρα "@" στο Email Id , τότε ακολουθήστε αυτή τη μέθοδο. Έχω προσθέσει εδώ το Στήλη θέσης για το σκοπό αυτό.
Βήμα-01 :
➤Follow Βήμα-01 του Μέθοδος-1
Function FindSubstring(value As Range) As Integer Dim Pos As Integer Pos = InStr(1, value, "@") FindSubstring = Pos End Function
Θα δημιουργήσει μια συνάρτηση με όνομα FindSubstring (μπορείτε να χρησιμοποιήσετε οποιοδήποτε άλλο όνομα)
αξία είναι η αναφορά κελιού που περιέχει τη συμβολοσειρά και δηλώνεται ως Εύρος .
Βήμα-02 :
➤Επιλογή της εξόδου Κύτταρο E5
➤Τυποποιήστε την ακόλουθη συνάρτηση (που δημιουργήθηκε από την VBA )
=FindSubstring(D5)
D5 είναι το κελί που περιέχει τη συμβολοσειρά.
➤Press ENTER
➤Τραβήξτε κάτω το Λαβή πλήρωσης Εργαλείο
Αποτέλεσμα :
Στη συνέχεια, θα λάβετε τις θέσεις του ειδικού χαρακτήρα " @" στο Email Id .
Παρόμοιες αναγνώσεις:
- Πώς να βρείτε συμβολοσειρά σε ένα κελί χρησιμοποιώντας το VBA στο Excel (2 μέθοδοι)
- FindNext χρησιμοποιώντας VBA στο Excel (2 παραδείγματα)
- Πώς να βρείτε συμβολοσειρά με VBA στο Excel (8 παραδείγματα)
- VBA Εύρεση τελευταίας γραμμής στο Excel (5 τρόποι)
Μέθοδος-5: Έλεγχος μιας συγκεκριμένης υποομάδας σε μια συμβολοσειρά σε ένα εύρος δεδομένων
Ας υποθέσουμε ότι θέλετε να γράψετε Πέρασμα ή Αποτυγχάνει να ανταποκριθεί στα ονόματα των μαθητών ανάλογα με το Στήλη αποτελεσμάτων όπου Πέρασμα ή Αποτυχία έχει γραφτεί μέσα σε αγκύλη. Για να βρείτε αυτή την υποπερίοδο στο Στήλη αποτελεσμάτων και να το γράψετε στο Στήλη επιτυχίας ή αποτυχίας ακολουθήστε αυτή τη μέθοδο.
Βήμα-01 :
➤Follow Βήμα-01 του Μέθοδος-1
Sub CheckSubstring() 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 = "Failed" End If Next cell End Sub
Εδώ, το εύρος των κελιών είναι C5:C10 το οποίο είναι το Στήλη αποτελεσμάτων
InStr(cell.value, "Pass")> 0 είναι η συνθήκη όπου ο αριθμός είναι μεγαλύτερος από το μηδέν (όταν το κελί περιέχει "Pass" ), τότε η επόμενη γραμμή θα συνεχίσει και θα δώσει την έξοδο στο διπλανό κελί ως Πέρασε .
Αν η συνθήκη γίνει ψευδής σημαίνει ότι ένα κελί δεν περιέχει κανένα "Pass" τότε η γραμμή κάτω από Αλλιώς θα εκτελεστεί και θα δώσει την τιμή εξόδου στο διπλανό κελί ως Αποτυχημένο .
Αυτός ο βρόχος θα συνεχιστεί για κάθε κελί.
➤Press F5
Αποτέλεσμα :
Στη συνέχεια, θα λάβετε τα ακόλουθα αποτελέσματα στο αρχείο Πέρασμα ή αποτυχία στήλη.
Μέθοδος-6: Έλεγχος μιας συγκεκριμένης υποομάδας σε μια συμβολοσειρά και εξαγωγή δεδομένων
Θα σας δείξω τον τρόπο να βρείτε τους μαθητές που ονομάζονται Michael στο Στήλη Όνομα μαθητή και εξάγετε τα αντίστοιχα δεδομένα τους χρησιμοποιώντας VBA σε αυτή τη μέθοδο.
Βήμα-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")> 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")> 0
είναι η συνθήκη για τον έλεγχο εάν το κελί στη στήλη B περιέχει Michael
Range("E" & icount & ":G" & icount)
είναι η περιοχή στην οποία θέλετε τα δεδομένα εξόδου και Range("B" & i & ":D" & i).value
θα δώσει τις τιμές από τις στήλες B στο D .
➤Press F5
Αποτέλεσμα :
Μετά από αυτό, θα λάβετε τα ακόλουθα δεδομένα για τους μαθητές που έχουν το όνομα Michael .
Μέθοδος-7: Αναζήτηση υποσυνόλου για λέξη
Αν θέλετε να βρείτε την υποσειρά ως λέξη, τότε ακολουθήστε αυτή τη μέθοδο.
Βήμα-01 :
➤Follow Βήμα-01 του Μέθοδος-1
Sub Stringforword() Dim j As Integer j = InStr("Να τι είμαι", "είναι") If j = 0 Then MsgBox "Δεν βρέθηκε λέξη" Else MsgBox "Βρέθηκε λέξη στη θέση: " & j End If End Sub
Θα ελέγξει αν η συμβολοσειρά περιέχει είναι και στη συνέχεια η θέση του θα δίνεται
➤Press F5
Αποτέλεσμα :
Στη συνέχεια, θα εμφανιστεί το ακόλουθο πλαίσιο μηνύματος που δείχνει το λέξη που βρέθηκε στη θέση:6 (η θέση του είναι ).
Μπορείτε να δοκιμάσετε αυτόν τον κώδικα για μια λέξη που δεν υπάρχει στη συμβολοσειρά.
➤Type the following code
Sub Stringforword() Dim j As Integer j = InStr("Here is what I am", "are") If j = 0 Then MsgBox "Word not found" Else MsgBox "Word found in position: " & j End If End Sub
➤Press F5
Αποτέλεσμα :
Στη συνέχεια, θα εμφανιστεί το ακόλουθο πλαίσιο μηνύματος που δείχνει το Η λέξη δεν βρέθηκε .
Μέθοδος-8: Χρήση των συναρτήσεων Instr και LEFT
Εδώ, θα εξηγήσω τον τρόπο για να βρούμε τη θέση μιας υποοδηγίας σε μια συμβολοσειρά και να εξάγουμε τα κείμενα πριν από αυτή την υποοδηγία χρησιμοποιώντας το VBA και η λειτουργία LEFT .
Βήμα-01 :
➤Follow Βήμα-01 του Μέθοδος-1
Sub InstrandLeft() Dim txt As String Dim j As Long txt = "Να τι είμαι" j = InStr(txt, "είναι") MsgBox Left(txt, j - 1) End Sub
j = InStr(txt, "is")
είναι η θέση της υποομάδας είναι και Left(txt, j - 1)
θα εξάγει τις υποομάδες πριν από το είναι .
➤Press F5
Αποτέλεσμα :
Στη συνέχεια, θα εμφανιστεί το ακόλουθο πλαίσιο μηνύματος που δείχνει Εδώ (υποσέλιδο πριν είναι ).
Μέθοδος-9: Υπογράμμιση μιας συγκεκριμένης υποομάδας σε μια συμβολοσειρά
Μπορείτε να κάνετε έντονη γραφή τους βαθμούς πριν από τις αγκύλες στο Στήλη αποτελεσμάτων ακολουθώντας αυτή τη μέθοδο.
Βήμα-01 :
➤Follow Βήμα-01 του Μέθοδος-1
Sub Boldingsubstring() Dim Cell As Range Dim txt As Integer For Each Cell In Selection txtCount = Len(Cell) txt = InStr(1, Cell, "(") Cell.Characters(1, txt - 1).Font.Bold = True Next Cell End Sub
txt = InStr(1, Cell, "(")
θα επιστρέψει τη θέση της πρώτης παρένθεσης και Cell.Characters(1, txt - 1).Font.Bold
θα κάνει την υποπερίοδο πριν από την πρώτη παρένθεση Τολμηρό .
Βήμα-02 :
➤Επιλέξτε το Στήλη αποτελεσμάτων
➤Γύρνα σε Προγραμματιστής Καρτέλα>>, Μακροεντολές Επιλογή
Στη συνέχεια, ένα Μάκρο θα εμφανιστεί ο οδηγός.
➤Select Boldingsubstring (το κωδικό όνομα της VBA) και στη συνέχεια Εκτέλεση .
Αποτέλεσμα :
Μετά από αυτό, οι βαθμοί στο Αποτέλεσμα Στήλη θα είναι με έντονη γραφή.
Τμήμα πρακτικής
Για να εξασκηθείτε μόνοι σας, σας παρέχουμε ένα Πρακτική τμήμα όπως παρακάτω σε ένα φύλλο με όνομα Πρακτική . Παρακαλώ κάντε το μόνοι σας.
Συμπέρασμα
Σε αυτό το άρθρο, προσπάθησα να καλύψω τους ευκολότερους τρόπους για να βρείτε υποσέλιδο χρησιμοποιώντας VBA στο Excel αποτελεσματικά. Ελπίζω να το βρείτε χρήσιμο. Αν έχετε οποιεσδήποτε προτάσεις ή ερωτήσεις, μη διστάσετε να τις μοιραστείτε μαζί μας.