Λειτουργίες χειρισμού συμβολοσειρών VBA & Operaκορμοί

⚡ Έξυπνη Σύνοψη

Συναρτήσεις χειρισμού συμβολοσειρών VBA και Operaοι παράγοντες συνδυάζουν, μετρούν και εξηγούνtracκείμενο t μέσα σε μακροεντολές του Excel. Αυτή η σελίδα εξηγεί τον τελεστή συνένωσης, τις συναρτήσεις Left, Right, Mid, Len και InStr, τον διαχωρισμό και την ένωση, καθώς και τα σφάλματα που συνήθως προκαλούν σφάλματα στον κώδικα συμβολοσειρών.

  • 🔤 Δεδομένα συμβολοσειράς: Μια τιμή που δημιουργείται από χαρακτήρες, σύμβολα και αριθμούς, όπως το κείμενο Ιούλιος-2015.
  • Αληλουχία Operaβραχώδης κορυφή: Το εμπορικό "και" ενώνει δύο συμβολοσειρές, επομένως τα "John" και "Doe" επιστρέφουν τον αριθμό John Doe.
  • ExtracΛειτουργίες: Τα κουμπιά Left (Αριστερά), Right (Δεξιά) και Mid (Μεσαία) τραβούν μια δευτερεύουσα συμβολοσειρά από την αρχή, το τέλος ή τη μέση μιας τιμής.
  • 📏 Συναρτήσεις μέτρησης: Η συνάρτηση Len μετράει χαρακτήρες και η συνάρτηση InStr επιστρέφει τη θέση από την οποία ξεκινά μια δευτερεύουσα συμβολοσειρά.
  • 🧩 Διαχωρισμός και ένωση: Η εντολή Split διασπά μια οριοθετημένη συμβολοσειρά σε έναν πίνακα και η εντολή Join ανακατασκευάζει έναν πίνακα σε μία μόνο συμβολοσειρά.
  • ⚠️ Συνηθισμένα σφάλματα: Η ασυμφωνία τύπων, η απόδοση InStr που επιστρέφει μηδέν και τα κενά στο τέλος προκαλούν τις περισσότερες αποτυχημένες συγκρίσεις.

Συναρτήσεις χειρισμού συμβολοσειρών VBA και Operaκορμοί

Συμβολοσειρά VBA Operaκορμοί

Τα δεδομένα συμβολοσειράς χρησιμοποιούνται για τη διατήρηση δεδομένων που αποτελούνται από αριθμούς, χαρακτήρες και σύμβολα. Το "Jul-2015" είναι ένα παράδειγμα δεδομένων συμβολοσειράς. Αποτελείται από

  • Χαρακτήρες (Ιούλιος)
  • Σύμβολο (-)
  • Numbers (2015)

Οι τελεστές συμβολοσειρών χρησιμοποιούνται για τον χειρισμό δεδομένων συμβολοσειρών. Για παράδειγμα, μπορείτε να συνδέσετε την τιμή Ιουλίου-2015 από τα 3 πρώτα γράμματα του μήνα και του έτους όπως "Ιούλιος-2015".

Ο παρακάτω πίνακας δείχνει τον τελεστή συμβολοσειράς συνένωσης VBA.

S / N OperaTor Περιγραφή Παράδειγμα Παραγωγή
1 & Concatenate: Αυτός ο τελεστής χρησιμοποιείται για τη σύνδεση συμβολοσειρών μεταξύ τους “John” & “Doe” John Doe

Παράδειγμα Πηγή Code

Συμβολοσειρά VBA OperaΠαράδειγμα Πηγής tors Code

MsgBox "John " & "Doe", vbOKOnly, "Concatenate Operator"

Η εκτέλεση του παραπάνω κώδικα παράγει το ακόλουθο αποτέλεσμα

Συμβολοσειρά VBA OperaΠαράδειγμα Πηγής tors Code

Το σύμβολο "και" δεν είναι το μόνο σύμβολο που εμφανίζεται για να ενώσει κείμενο και η διαφορά μεταξύ των δύο έχει σημασία όταν εμπλέκονται αριθμοί.

Διαφορά μεταξύ & και + για τη συνένωση συμβολοσειρών

Η VBA δέχεται τόσο το σύμβολο "και" όσο και το σύμβολο "συν" μεταξύ δύο τιμών κειμένου, επομένως οι αρχάριοι συχνά τα αντιμετωπίζουν ως εναλλάξιμα. Συμπεριφέρονται διαφορετικά μόλις ένας τελεστής είναι αριθμός ή κενή τιμή και μόνο ένας από αυτούς είναι ασφαλής.

συμπεριφορά & (Ampersand) + (Συν)
Δύο τιμές κειμένου Τους ενώνει: «GuruΕπιστροφές "" και "99" Guru99 Τους ενώνει: «Guru" + "99" επιστρέφει Guru99
Κείμενο και ένας αριθμός Μετατρέπει τον αριθμό σε κείμενο: «Ηλικία» και το 30 επιστρέφει Ηλικία 30 Εμφανίζει ένα σφάλμα ασυμφωνίας τύπου
Δύο αριθμητικές συμβολοσειρές Τα «10» και «5» επιστρέφουν 105 Το «10» + «5» μπορεί να προσθέσει και να επιστρέψει 15
Μια τιμή Null Αντιμετωπίζει την τιμή Null ως κενή συμβολοσειρά Επιστρέφει Null και απορρίπτει ολόκληρο το αποτέλεσμα

💡 Συμβουλές: Να χρησιμοποιείτε πάντα το σύμβολο "και" για τη συνένωση και να διατηρείτε το σύμβολο "συν" για αριθμητικές πράξειςΤοποθετήστε ένα κενό πριν και μετά το σύμβολο "και", επειδή η σύνταξη της συνάρτησης Total& διαβάζεται από την VBA ως χαρακτήρας δήλωσης τύπου Long.

Λειτουργίες χειρισμού συμβολοσειρών VBA

Ο χειρισμός συμβολοσειρών VBA είναι ένα σημαντικό στοιχείο σε Excel VBA για προγραμματισμό Macro και λειτουργίες συμβολοσειράς. Το Excel παρέχει διάφορους τύπους συναρτήσεων χειρισμού συμβολοσειρών VBA όπως:

  • Αριστερό: χρησιμοποιείται για να εξηγηθείtract χαρακτήρες από την αριστερή πλευρά της συμβολοσειράς
  • Δεξί: χρησιμοποιείται για να εξηγηθείtract χαρακτήρες από τη δεξιά πλευρά της συμβολοσειράς
  • Στα μέσα: χρησιμοποιείται για να εξηγηθείtracta υποσυμβολοσειρά από τη μέση μιας συμβολοσειράς
  • Len: χρησιμοποιείται για να βρει το μήκος μιας συμβολοσειράς
  • InStr: χρησιμοποιείται για να βρει τη θέση μιας υποσυμβολοσειράς σε μια συμβολοσειρά
  • Περικοπή: χρησιμοποιείται για την αφαίρεση κενών και από τα δύο άκρα μιας συμβολοσειράς
  • Αντικαταστήστε: χρησιμοποιείται για την αντικατάσταση κάθε εμφάνισης μιας υποσυμβολοσειράς με μια άλλη
  • UCase / LCase: χρησιμοποιούνται για τη μετατροπή μιας συμβολοσειράς σε κεφαλαία ή πεζά γράμματα

Ο παρακάτω πίνακας δείχνει τη σύνταξη κάθε συνάρτησης με ένα λειτουργικό παράδειγμα, ώστε να μπορείτε να αντιγράψετε το μοτίβο απευθείας σε μια μακροεντολή.

Λειτουργία Σύνταξη Παράδειγμα Παραγωγή
Αριστερό Αριστερά(συμβολοσειρά, μήκος) Αριστερά («Ιούλιος-2015», 3) Ιουλ
Δεξί Δεξιά(συμβολοσειρά, μήκος) Δεξιά («Ιούλιος-2015», 4) 2015
Στα μέσα Μέσο (συμβολοσειρά, έναρξη, μήκος) Μέσα ("Ιούλιος-2015", 5, 4) 2015
Len Φακός (συμβολοσειρά) Λεν («Ιούλιος-2015») 8
InStr InStr(έναρξη, συμβολοσειρά, δευτερεύουσα συμβολοσειρά) InStr(1, «Ιούλιος-2015», «-») 4
Περικοπή Περικοπή (συμβολοσειρά) Τακτοποίηση(" Guru99 «) Guru99
Αντικαταστήστε Αντικατάσταση(συμβολοσειρά, εύρεση, αντικατάσταση) Αντικατάσταση ("Ιούλιος-2015", "-", "/") Ιουλ/2015
UCase UCase(συμβολοσειρά) UCase("guru99") GURU99

Η παρακάτω μακροεντολή συνδυάζει αρκετές από αυτές τις συναρτήσεις για να ανακατασκευάσει μια ετικέτα ημερομηνίας από τα μέρη της.

Sub StringFunctionsDemo()
    Dim Source As String
    Dim MonthPart As String
    Dim YearPart As String

    Source = "July-2015"

    ' Take the first three characters
    MonthPart = Left(Source, 3)
    ' Take the last four characters
    YearPart = Right(Source, 4)

    MsgBox MonthPart & "-" & YearPart, vbOKOnly, "String Functions"
End Sub

Η εκτέλεση της μακροεντολής εμφανίζει τον Ιούλιο του 2015. Κάθε συνάρτηση επιστρέφει μια νέα τιμή και αφήνει την αρχική συμβολοσειρά ανέπαφη, γι' αυτό και τα αποτελέσματα μπορούν να συνδυαστούν με ασφάλεια σε μία μόνο έκφραση.

Αυτές οι συναρτήσεις λειτουργούν όλες σε μία συμβολοσειρά κάθε φορά. Όταν μια μεμονωμένη τιμή περιέχει μια ολόκληρη λίστα, δύο άλλες συναρτήσεις την χειρίζονται καλύτερα.

Πώς να διαχωρίσετε και να ενώσετε συμβολοσειρές σε VBA

Τα δεδομένα που επικολλώνται στο Excel συχνά φτάνουν ως μία μεγάλη τιμή με ένα διαχωριστικό μεταξύ κάθε στοιχείου, όπως "Pepsi, Coca-Cola, Fanta, Juice". Η ανάγνωση αυτού με Mid και InStr είναι αργή και εύθραυστη. Η VBA παρέχει ένα αντίστοιχο ζεύγος συναρτήσεων ακριβώς για αυτήν την εργασία.

Σπλιτ δέχεται μια οριοθετημένη συμβολοσειρά και επιστρέφει έναν πίνακα που βασίζεται στο μηδέν, με ένα στοιχείο ανά στοιχείο. Συμμετοχή κάνει το αντίστροφο, λαμβάνοντας έναν πίνακα και επιστρέφοντας μια μόνο συμβολοσειρά με ένα διαχωριστικό μεταξύ των στοιχείων. Σημειώστε ότι η συνάρτηση Join λειτουργεί σε έναν πίνακα, όχι σε δύο ξεχωριστές συμβολοσειρές.

Sub SplitAndJoinDemo()
    Dim Source As String
    Dim Items() As String
    Dim i As Long

    Source = "Pepsi,Coke,Fanta,Juice"

    ' Break the value into an array on every comma
    Items = Split(Source, ",")

    For i = LBound(Items) To UBound(Items)
        Sheet1.Cells(i + 1, 1).Value = Items(i)
    Next i

    ' Rebuild the list with a different separator
    MsgBox Join(Items, " | "), vbOKOnly, "Joined List"
End Sub

Ο βρόχος γράφει κάθε ποτό στη δική του σειρά φύλλου εργασίας και το πλαίσιο μηνύματος εμφανίζει στη συνέχεια Pepsi | Coke | Fanta | Juice. Τρία σημεία καθιστούν αυτό το μοτίβο αξιόπιστο στον κώδικα παραγωγής:

  • Αποτέλεσμα με βάση το μηδέν: Η συνάρτηση Split επιστρέφει πάντα έναν πίνακα με αριθμό από το 0, ανεξάρτητα από την τιμή στην οποία έχει οριστεί η Option Base, επομένως οδηγήστε τον βρόχο με LBound και UBound αντί για έναν σταθερό αριθμό.
  • Δήλωση ως String(): Αντιστοιχίστε το αποτέλεσμα σε έναν δυναμικό πίνακα String. Η δήλωση ενός σταθερού μεγέθους προκαλεί πρώτα ένα σφάλμα μεταγλώττισης.
  • Κενή εισαγωγή: Ο διαχωρισμός μιας κενής συμβολοσειράς επιστρέφει έναν πίνακα χωρίς στοιχεία, επομένως δοκιμάστε με UBound πριν διαβάσετε την εντολή Items(0).

Ακόμα και με την επιλογή της σωστής συνάρτησης, ο κώδικας συμβολοσειράς αποτυγχάνει με έναν μικρό αριθμό προβλέψιμων τρόπων.

Συνηθισμένα σφάλματα συμβολοσειρών VBA και πώς να τα διορθώσετε

Τα περισσότερα σφάλματα συμβολοσειρών στο Excel VBA προέρχονται από μια σύντομη λίστα αιτιών. Η αναγνώριση του συμπτώματος εξοικονομεί μια μακρά περίοδο λειτουργίας εντοπισμού σφαλμάτων.

  • Ασυμφωνία τύπου κατά τη συνένωση: Χρησιμοποιήθηκε ένα σύμβολο συν μεταξύ κειμένου και ενός αριθμού. Αντικαταστήστε το με ένα εμπορικό "και", το οποίο μετατρέπει τον αριθμό αυτόματα.
  • Η InStr επιστρέφει 0: Η δευτερεύουσα συμβολοσειρά δεν βρέθηκε. Το InStr επιστρέφει 0 αντί για -1 σε περίπτωση αποτυχίας, επομένως ελέγξτε για τιμή μεγαλύτερη από το μηδέν πριν περάσετε το αποτέλεσμα στο Mid.
  • Μη έγκυρη κλήση διαδικασίας στη μέση ή στα αριστερά: Το ζητούμενο μήκος είναι αρνητικό ή η αρχική θέση είναι κάτω από το 1. Προστατέψτε την κλήση με το Len, ώστε το μήκος να μην υπερβαίνει ποτέ τη συμβολοσειρά.
  • Συγκρίσεις που θα έπρεπε να ταιριάζουν αλλά δεν ταιριάζουν: Τα τελικά κενά από τα εισαγόμενα δεδομένα σπάνε την ισότητα. Τυλίξτε και τις δύο πλευρές στο Trim και χρησιμοποιήστε το StrComp όταν η πεζά-κεφαλαία πρέπει να αγνοηθεί.
  • Κείμενο που δεν θα γίνει αριθμός: Μια τιμή όπως «1,200» αποτυγχάνει στην αριθμητική λόγω του διαχωριστή. Αφαιρέστε την με την επιλογή «Replace» πριν τη μετατροπή με την επιλογή «CLng».

Κατεβάστε το Excel που περιέχει τον παραπάνω κώδικα

Κατεβάστε το παραπάνω αρχείο Excel Code

Συχνές Ερωτήσεις

Μια συμβολοσειρά μεταβλητού μήκους χωράει έως και δύο δισεκατομμύρια χαρακτήρες περίπου, ενώ μια συμβολοσειρά σταθερού μήκους χωράει έως και 65,400. Ωστόσο, ένα κελί φύλλου εργασίας αποθηκεύει μόνο 32,767 χαρακτήρες, επομένως οι μεγαλύτερες τιμές περικόπτονται όταν γράφονται σε ένα φύλλο.

Το σύμβολο της ισότητας τα συγκρίνει με διάκριση πεζών-κεφαλαίων από προεπιλογή. Χρησιμοποιήστε την StrComp(a, b, vbTextCompare) για ένα αποτέλεσμα χωρίς διάκριση πεζών-κεφαλαίων ή τοποθετήστε την επιλογή Option Compare Text στην κορυφή της ενότητας για να αλλάξετε την προεπιλογή για ολόκληρη την ενότητα.

Το ampersand μετατρέπει κάθε τελεστέο σε κείμενο πριν από την ένωση, επομένως οι συναρτήσεις 10 και 5 επιστρέφουν τη συμβολοσειρά 105. Διατηρήστε τις αριθμητικές τιμές και προσθέστε τες πρώτα και, στη συνέχεια, συνενώστε το αποτέλεσμα εάν χρειάζεται να εμφανιστεί μέσα σε ένα μήνυμα.

Ναι. Περιγράψτε την είσοδο και την επιθυμητή έξοδο, για παράδειγμα π.χ.tracΑνοίξτε τον κώδικα πριν από την πρώτη παύλα και ένας βοηθός AI επιστρέφει μια έκφραση Left και InStr. Δοκιμάστε την σε περιπτώσεις ακμών, όπως μια παύλα που λείπει.

Ναι. Επικολλήστε μια ένθετη έκφραση όπως Mid με InStr μέσα σε αυτήν και ένας βοηθός AI τη χωρίζει σε βήματα, ονομάζει κάθε όρισμα και επισημαίνει την περίπτωση όπου το InStr επιστρέφει μηδέν και η κλήση αποτυγχάνει.

Συνοψίστε αυτήν την ανάρτηση με: