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: Για αυτήν τη μεταβλητή αντιστοιχίστε τη συμβολοσειρά "Το Bangalore είναι η πρωτεύουσα της Karnataka."

Κώδικας:

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 = "Bangalore is the capital city of Karnataka" Dim SingleValue() As String SingleValue = Split(StringValue, " ") MsgBox SingleValue(0) End Sub

Run the code and see what we get in the message box.

As of now, we can see the first word i.e. “Bangalore,” to show further words we can write the code as follows.

Code:

Sub String_To_Array() Dim StringValue As String StringValue = "Bangalore is the capital city of Karnataka" 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

Now run the code and see what we get in the message box.

Each and every word has been split into arrays.

Example #2

Now imagine a situation of storing these values to cells i.e., each word into a separate cell. For this, we need to include the FOR NEXT loop in VBA.

The below code will insert each word into separate cells.

Sub String_To_Array1() Dim StringValue As String StringValue = "Bangalore is the capital city of Karnataka" Dim SingleValue() As String SingleValue = Split(StringValue, " ") Dim k As Integer For k = 1 To 7 Cells(1, k).Value = SingleValue(k - 1) Next k End Sub

This will insert each word, as shown in the below image.

Things to Remember

  • Array and loops are used together to make the code dynamic.
  • The SPLIT function requires common delimiter, which separates each word in the sentence.
  • Το μήκος της σειράς ξεκινά από το μηδέν και όχι από το 1.

ενδιαφέροντα άρθρα...