VBA Split String in Array | Πώς να διαχωρίσετε το String σε Array στο Excel VBA;
Excel VBA Split String σε Array
Μια συμβολοσειρά είναι μια συλλογή χαρακτήρων που ενώνονται μεταξύ τους, όταν αυτοί οι χαρακτήρες χωρίζονται και αποθηκεύονται σε μια μεταβλητή, τότε αυτή η μεταβλητή γίνεται πίνακας για αυτούς τους χαρακτήρες και η μέθοδος που χρησιμοποιούμε για να χωρίσουμε μια συμβολοσειρά για να κάνουμε έναν πίνακα είναι χρησιμοποιώντας τη συνάρτηση SPLIT στο vba που χωρίζει τη συμβολοσειρά σε μονοδιάστατη συμβολοσειρά.
Όπως και τα φύλλα εργασίας στο VBA, έχουμε συναρτήσεις για την αντιμετώπιση τιμών String ή Text. Είμαστε πολύ εξοικειωμένοι με τις λειτουργίες συμβολοσειράς, όπως η εξαγωγή του ονόματος fir, το επώνυμο, το μεσαίο όνομα, κ.λπ. Ναι, το ακούσατε σωστό ότι μπορούμε να χωρίσουμε τη φράση συμβολοσειράς σε πίνακα χρησιμοποιώντας κωδικοποίηση VBA και σε αυτό το ειδικό άρθρο, θα σας δείξουμε πώς να διαιρέσετε τη συμβολοσειρά σε πίνακα σε Excel VBA.
Τι είναι το Split String σε μια σειρά;
Επιτρέψτε μου να το ξεκαθαρίσω πρώτα, «Το String in Array» δεν είναι τίποτα άλλο παρά «διαφορετικά μέρη της πρότασης ή της συμβολοσειράς θα χωριστούν σε πολλά μέρη». Για παράδειγμα, εάν η πρόταση είναι "Η Μπανγκαλόρ είναι η πρωτεύουσα της Καρνατάκας", τότε κάθε λέξη είναι ένας διαφορετικός πίνακας.
Έτσι, πώς να χωρίσετε αυτήν την πρόταση στον πίνακα είναι το θέμα αυτού του άρθρου.
Πώς να μετατρέψετε το Split String σε Array στο Excel VBA;
Για να μετατρέψουμε τη διαχωριστική συμβολοσειρά σε πίνακα σε VBA έχουμε μια συνάρτηση που ονομάζεται "SPLIT". Αυτή είναι μια συνάρτηση VBA που εκτελεί το έργο του διαχωρισμού της παρεχόμενης τιμής συμβολοσειράς σε διαφορετικά μέρη με βάση τον οριοθέτη που παρέχεται.
Για παράδειγμα, εάν η πρόταση είναι "Η Μπανγκαλόρ είναι η πρωτεύουσα της Καρνάτακας" ο χώρος είναι οριοθέτης μεταξύ κάθε λέξης.
Παρακάτω είναι η σύνταξη της συνάρτησης SPLIT.
- Τιμή ή έκφραση: Αυτή είναι η συμβολοσειρά ή η τιμή κειμένου που προσπαθούμε να μετατρέψουμε στον πίνακα διαχωρίζοντας κάθε τμήμα της συμβολοσειράς.
- [Οριοθέτης]: Αυτό δεν είναι παρά τα κοινά πράγματα που χωρίζουν κάθε λέξη στη συμβολοσειρά. Στη φράση μας «Η Μπανγκαλόρ είναι η πρωτεύουσα της Καρνατάκα» κάθε λέξη χωρίζεται από διαστημικό χαρακτήρα, έτσι ο οριοθέτης μας είναι χώρος εδώ.
- [Όριο]: Το όριο δεν είναι παρά πόσα μέρη θέλουμε ως αποτέλεσμα. Για παράδειγμα στην πρόταση «Η Μπανγκαλόρ είναι η πρωτεύουσα της Καρνατάκας» έχουμε επτά μέρη, αν χρειαζόμαστε μόνο τρία μέρη, τότε θα πάρουμε το πρώτο μέρος ως «Μπανγκαλόρ», το δεύτερο μέρος ως «είναι» και το τρίτο μέρος ως υπόλοιπο η πρόταση δηλαδή «η πρωτεύουσα της Καρνατάκας».
- [Σύγκριση]: Δεν χρησιμοποιείται το 99% του χρόνου, οπότε ας μην το αγγίξουμε αυτό το σημείο.
Παράδειγμα # 1
Εντάξει, τώρα ας δούμε πρακτικά παραδείγματα.
Βήμα 1: Ορίστε τη μεταβλητή VBA για να διατηρήσετε την τιμή συμβολοσειράς.
Κώδικας:
Sub String_To_Array () Dim StringValue As String End Sub
Βήμα 2: Για αυτήν τη μεταβλητή αντιστοιχίστε τη συμβολοσειρά "Η Μπανγκαλόρ είναι η πρωτεύουσα της Καρνάτακας".
Κώδικας:
Sub String_To_Array () Dim StringValue As String StringValue = "Η Μπανγκαλόρ είναι η πρωτεύουσα της Καρνάτκα" End Sub
Βήμα 3: Στη συνέχεια ορίστε μια ακόμη μεταβλητή που μπορεί να κρατήσει κάθε μέρος της παραπάνω τιμής συμβολοσειράς. Σε αυτό πρέπει να θυμόμαστε εδώ είναι επειδή η πρόταση έχει περισσότερες από μία λέξεις πρέπει να ορίσουμε τη μεταβλητή ως «Array» για να κρατήσουμε περισσότερες από μία τιμές.
Σε αυτήν την περίπτωση, έχουμε 7 λέξεις στη συμβολοσειρά, ορίστε τον πίνακα ως εξής.
Κώδικας:
Sub String_To_Array () Dim StringValue As String StringValue = "Το Bangalore είναι η πρωτεύουσα της Karnatka" Dim SingleValue () As String End Sub
Τώρα για αυτήν τη μεταβλητή πίνακα, θα χρησιμοποιήσουμε τη συνάρτηση SPLIT για να χωρίσουμε τη συμβολοσειρά σε έναν πίνακα στο Excel VBA.
Κώδικας:
Sub String_To_Array () Dim StringValue As String StringValue = "Η Μπανγκαλόρ είναι η πρωτεύουσα της Καρνατάκα" Dim SingleValue () As String SingleValue = Split (StringValue, "") End Sub
Η έκφραση είναι η τιμή συμβολοσειράς μας, δηλαδή η μεταβλητή έχει ήδη την τιμή συμβολοσειράς, οπότε εισαγάγετε μόνο το όνομα της μεταβλητής.
Ο οριοθέτης σε αυτήν τη συμβολοσειρά είναι χαρακτήρας διαστήματος, οπότε παρέχετε τον ίδιο.
Κώδικας:
Sub String_To_Array () Dim StringValue As String StringValue = "Η Μπανγκαλόρ είναι η πρωτεύουσα της Καρνατάκα" Dim SingleValue () As String SingleValue = Split (StringValue, "") End Sub
Από τώρα αφήστε άλλα μέρη της λειτουργίας SPLIT.
Η συνάρτηση SPLIT διαχωρίζει την τιμή συμβολοσειράς σε 7 κομμάτια κάθε λέξη διαχωρισμένη εις βάρος του χαρακτήρα διαστήματος. Εφόσον έχουμε δηλώσει τη μεταβλητή "SingleValue" ως πίνακα, μπορούμε να αντιστοιχίσουμε και τις 7 τιμές σε αυτήν τη μεταβλητή.
Μπορούμε να γράψουμε τον κωδικό ως εξής.
Κώδικας:
Sub String_To_Array () Dim StringValue As String StringValue = "Η Μπανγκαλόρ είναι η πρωτεύουσα της Καρνατάκα" Dim SingleValue () As String SingleValue = Split (StringValue, "") MsgBox SingleValue (0) End Sub
Εκτελέστε τον κωδικό και δείτε τι λαμβάνουμε στο πλαίσιο μηνυμάτων.
Από τώρα, μπορούμε να δούμε την πρώτη λέξη, δηλαδή "Bangalore" για να δείξουμε περαιτέρω λέξεις που μπορούμε να γράψουμε τον κώδικα ως εξής.
Κώδικας:
Sub String_To_Array () Dim StringValue As String StringValue = "Η Μπανγκαλόρ είναι η πρωτεύουσα της Καρνατάκα" Dim SingleValue () As String SingleValue = Split (StringValue, "") MsgBox SingleValue (0) & vbNewLine & SingleValue (1) & vbNewLine & SingleValue (2) & vbNewLine & SingleValue (3) & _vbNewLine & SingleValue (4) & vbNewLine & SingleValue (5) & vbNewLine & SingleValue (6) End Sub
Τώρα εκτελέστε τον κωδικό και δείτε τι λαμβάνουμε στο πλαίσιο μηνυμάτων.
Κάθε λέξη έχει χωριστεί σε πίνακες.
Παράδειγμα # 2
Τώρα φανταστείτε μια κατάσταση αποθήκευσης αυτών των τιμών σε κελιά, δηλαδή κάθε λέξη σε ξεχωριστό κελί. Για αυτό, πρέπει να συμπεριλάβουμε το βρόχο FOR NEXT στο VBA.
Ο παρακάτω κώδικας θα εισαγάγει κάθε λέξη σε ξεχωριστά κελιά.
Sub String_To_Array1 () Dim StringValue As String StringValue = "Το Bangalore είναι η πρωτεύουσα της Καρνατάκα" Dim SingleValue () As String SingleValue = Split (StringValue, "") Dim k As Integer For k = 1 to 7 Cells (1, k) .Value = SingleValue (k - 1) Επόμενο k End Sub
Αυτό θα εισαγάγει κάθε λέξη όπως φαίνεται στην παρακάτω εικόνα.
Πράγματα που πρέπει να θυμάστε
- Οι πίνακες και οι βρόχοι χρησιμοποιούνται μαζί για να κάνουν τον κώδικα δυναμικό.
- Η συνάρτηση SPLIT απαιτεί κοινό οριοθέτη που διαχωρίζει κάθε λέξη στην πρόταση.
- Το μήκος της σειράς ξεκινά από το μηδέν και όχι από το 1.