Κείμενο VBA σε στήλες

Πίνακας περιεχομένων

Αυτό το σεμινάριο θα σας δείξει πώς να μετατρέψετε μια σειρά κειμένου σε ένα κελί σε πολλές στήλες χρησιμοποιώντας τη μέθοδο Range TextToColumns σε VBA

Κείμενο σε στήλες

ο Εύρος.TextToColumns Η μέθοδος στο VBA είναι ένα ισχυρό εργαλείο για τον καθαρισμό δεδομένων που έχουν εισαχθεί από αρχεία κειμένου ή csv, για παράδειγμα.

Εξετάστε το ακόλουθο φύλλο εργασίας.

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

Μπορείτε να χρησιμοποιήσετε τη μέθοδο Range TextToColumns για να διαχωρίσετε αυτά τα δεδομένα σε στήλες.

Σύνταξη TextToColumns

έκφραση.TextToColumns (Προορισμός, Τύπος δεδομένων, TextQualifier, ConsectiveDelimiter, Αυτί, Ανω τελεία, Κόμμα, Χώρος, Αλλα, ΆλλοChar, FieldInfo, Δεκαδικός Διαχωριστής, Χιλιάδες Διαχωριστής, TrailingMinusNumbers)

Εκφραση

Αυτό είναι το εύρος κελιών που θέλετε να χωρίσετε - π.χ.: Εύρος ("A1: A23").

Όλα τα ορίσματα στη μέθοδο TextToColumns είναι προαιρετικά (έχουν τετράγωνες αγκύλες γύρω τους).

Προορισμός

Εκεί που θέλετε να τοποθετηθεί το αποτέλεσμα - συχνά παρακάμπτετε τα δεδομένα και τα χωρίζετε στην ίδια θέση.

Τύπος δεδομένων

Ο τύπος ανάλυσης κειμένου που χρησιμοποιείτε - μπορεί είτε να είναι xlDelimited (προεπιλογή εάν παραλείπεται), ή xlFixedWidth.

TextQualifier

Εάν έχετε εισαγωγικά (μονό ή διπλό) γύρω από κάθε πεδίο στο κείμενο που χωρίζετε, πρέπει να υποδείξετε εάν είναι μονόκλινα ή διπλά.

ConsequtiveDelimiter

Αυτό είναι είτε αληθινό είτε ψευδές και λέει στη VBA να εξετάσει 2 από τους ίδιους οριοθέτες μαζί σαν να ήταν 1 οριοθέτης.

Αυτί

Αυτό είναι είτε Αληθής του Ψευδής, η προεπιλογή είναι Ψευδής - αυτό λέει στη VBA ότι τα δεδομένα οριοθετούνται από μια καρτέλα.

Ανω τελεία

Αυτό είναι είτεΑληθής του Ψευδής, η προεπιλογή είναι Ψευδής - αυτό λέει στη VBA ότι τα δεδομένα οριοθετούνται από ένα ερωτηματικό.

Χώρος

Αυτό είναι είτε Αληθής του Ψευδής, η προεπιλογή είναι Ψευδής - αυτό λέει στη VBA ότι τα δεδομένα οριοθετούνται από ένα διάστημα.

Αλλα

Αυτό είναι είτε Αληθής του Ψευδής, η προεπιλογή είναι ΨευδήςΤο Εάν το ορίσετε σε True, τότε το επόμενο όρισμα, ΆλλοChar πρέπει να προσδιοριστεί.

ΆλλοChar

Αυτός είναι ο χαρακτήρας με τον οποίο διαχωρίζεται το κείμενο (π.χ.: ή | για παράδειγμα).

FieldInfo

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

Ένα παράδειγμα για 5 στήλες με τύπους δεδομένων κειμένου, αριθμούς και ημερομηνίες θα μπορούσε να είναι:

Πίνακας (Πίνακας (1, xlTextFormat), Array (2, xlTextFormat), Array (3, xlGeneralFormat), Array (4, xlGeneralFormat), Array (5, xlMDYFormat))

Ένας άλλος τρόπος για να το καθορίσετε είναι:

Array (Array (1, 2), Array (2, 2), Array (3, 1), Array (4, 1), Array (5, 3))

Οι αριθμοί στη δεύτερη στήλη είναι οι τιμές των σταθερών όπου η σταθερά xlTextFormat έχει τιμή 2, η xlGeneralFormat (προεπιλογή) έχει τιμή 1 και η xlMDYFormat έχει τιμή 3.

Δεκαδικός Διαχωριστής

Μπορείτε να καθορίσετε τον δεκαδικό διαχωριστή στον οποίο πρέπει να χρησιμοποιεί το VBA, εάν υπάρχουν αριθμοί στα δεδομένα. Εάν παραλειφθεί, θα χρησιμοποιήσει τη ρύθμιση συστήματος, η οποία είναι συνήθως περίοδος.

Χιλιάδες Διαχωριστής

Μπορείτε να καθορίσετε τον διαχωριστή χιλιάδων στον οποίο πρέπει να χρησιμοποιήσει η VBA, εάν υπάρχουν αριθμοί στα δεδομένα. Εάν παραλειφθεί, θα χρησιμοποιήσει τη ρύθμιση συστήματος, η οποία είναι συνήθως κόμμα.

TrailingMinusNumbers

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

Μετατροπή κειμένου σε στήλες

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

12345678910111213141516 ΥποκείμενοToCol1 ()Εύρος ("A1: A25"). TextToColumns _Προορισμός: = Εύρος ("A1: A25"),Τύπος δεδομένων: = xlDelimited, _TextQualifier: = xlDoubleQuote, _ConsectiveDelimiter: = True, _Καρτέλα: = Λάθος, _Ερωτηματικό: = Λάθος, _Κόμμα: = Λάθος,Χώρος: = Αλήθεια, _Άλλο: = Λάθος, _FieldInfo: = Array (Array (1, 1), Array (2, 1), Array (3, 1), Array (4, 1), Array (5, 1)), _Δεκαδικός διαχωριστής: = "." , _ThousandsSeparator: = ",", _TrailingMinusNumbers: = TrueΤέλος υπο

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

1234567 ΥποκείμενοToCol2 ()Εύρος ("A1: A25"). TextToColumns _Τύπος δεδομένων: = xlDelimited, _TextQualifier: = xlDoubleQuote, _ConsectiveDelimiter: = True, _Χώρος: = True,Τέλος υπο

Υπάρχουν μόνο 4 παράμετροι που απαιτούνται στην πραγματικότητα - τα δεδομένα οριοθετούνται με ένα διπλό απόσπασμα, θέλετε τα συνεχόμενα εισαγωγικά να αντιμετωπίζονται ως ένα και τα δεδομένα να χωρίζονται με ένα κενό!

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

123 ΥποκείμενοToCol3 ()Εύρος ("A1: A25"). TextToColumns, xlDelimited, xlDoubleQuote, True,,,, TrueΤέλος υπο

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

wave wave wave wave wave