Εγγραφή VBA | Βήμα προς βήμα Παραδείγματα του Excel VBA Join Function
Παρόμοια με αυτό που έχουμε στο φύλλο εργασίας όπως η συνάρτηση συνένωσης και η εντολή & που χρησιμοποιείται για να ενώσει δύο ή περισσότερες από δύο χορδές μαζί, στο VBA χρησιμοποιούμε την εντολή Join για να το κάνουμε, στο Join in VBA παίρνουμε πηγή των δεδομένων σε έναν πίνακα και παρόμοια με τη συνένωση χρησιμοποιούμε ένα οριοθέτη για να τα ενώσουμε.
Συνάρτηση Excel VBA JOIN
Όπως υποδηλώνει το ίδιο το όνομα, η συνάρτηση VBA JOIN χρησιμοποιείται για να ενώσει μια σειρά από υποστρώματα με τον καθορισμένο οριοθέτη. Εάν δεν καθορίσουμε κανένα οριοθέτη, τότε παίρνει το "διάστημα" ως προεπιλεγμένο χαρακτήρα οριοθέτη. Κάνει την ίδια δουλειά με τη συνάρτηση Concatenate στο Excel εκτός από το ότι πρέπει να καθορίσουμε έναν χαρακτήρα οριοθέτη μόνο μία φορά, ενώ, στη συνάρτηση Concatenate, πρέπει να καθορίζουμε τον χαρακτήρα οριοθέτη κάθε φορά ανάμεσα σε κάθε δύο χορδές.
Η σύνταξη της συνάρτησης είναι
Όπως μπορούμε να δούμε, η συνάρτηση παίρνει δύο ορίσματα και επιστρέφει μια συμβολοσειρά. Τα επιχειρήματα είναι:
- SourceArray : Πρέπει να καθορίσουμε ή να δώσουμε αναφορά σε μια σειρά από υποστρώματα που πρόκειται να ενωθούν.
- Οριοθέτης : Ο οριοθέτης χρησιμοποιείται για να διαχωρίσει κάθε ένα από τα υποστρώματα κατά τη δημιουργία της προκύπτουσας συμβολοσειράς. Επειδή αυτό είναι ένα προαιρετικό επιχείρημα, αν το παραλείψουμε, ο οριοθέτης έχει οριστεί ως κενό διάστημα "".
Η συνάρτηση VBA SPLIT είναι μια ακριβώς αντίθετη συνάρτηση της συνάρτησης VBA JOIN.
Παραδείγματα λειτουργίας συναρμολόγησης VBA
Ακολουθούν τα παραδείγματα της συνάρτησης στο Excel VBA.
Μπορείτε να πραγματοποιήσετε λήψη αυτού του προτύπου VBA Join Function Excel - VBA Join Function Excel TemplateΕγγραφή VBA - Παράδειγμα # 1
Ας υποθέσουμε ότι θέλουμε να ενώσουμε το πρώτο (Ramesh), το μεσαίο (Kumar) και το επώνυμο (Mishra).
Τα βήματα θα ήταν:
- Πρώτον, πρέπει να ανοίξουμε τον οπτικό βασικό επεξεργαστή. Μπορούμε να κάνουμε το ίδιο κάνοντας κλικ στην εντολή «Visual Basic» στην ομάδα «Κωδικός» στην καρτέλα «Προγραμματιστής» excel ή μπορούμε να χρησιμοποιήσουμε το πλήκτρο συντόμευσης excel Alt + F11 .
- Εισαγάγετε τη λειτουργική μονάδα κάνοντας δεξί κλικ σε ένα "φύλλο 1" και επιλέγοντας "Εισαγωγή" από το μενού με βάση τα συμφραζόμενα και μετά επιλέξτε "Module" για εισαγωγή.
- Δημιουργήστε μια υπορουτίνα με το όνομα "JoiningName".
Κώδικας:
Sub JoiningName () End Sub
- Χρησιμοποιήστε τη συνάρτηση JOIN ως εξής
Κώδικας:
Sub JoiningName () Εύρος ("D2"). Value = Join (Array ("Ramesh", "Kumar", "Mishra")) End Sub
Μπορούμε να δούμε ότι χρησιμοποιήσαμε τη συνάρτηση ARRAY για να παρέχουμε το SourceArray στη συνάρτηση JOIN και παραλείψαμε να καθορίσουμε τον χαρακτήρα οριοθέτη, ώστε το "space" να είναι ο προεπιλεγμένος χαρακτήρας. Η επεξεργασμένη τιμή της συνάρτησης JOIN θα γραφτεί στο κελί D2 όταν εκτελούμε αυτόν τον κώδικα χρησιμοποιώντας το πλήκτρο F5 ή χειροκίνητα.
Εγγραφή VBA - Παράδειγμα # 2
Ας υποθέσουμε, θέλουμε να δημιουργήσουμε διάφορα αρχεία excel με το όνομα του αντικειμένου που περιέχει πωλήσεις μόνο για αυτό το αντικείμενο.
- Ανοίξτε το πρόγραμμα επεξεργασίας της Visual Basic χρησιμοποιώντας το πλήκτρο συντόμευσης Alt + F11.
- Κάντε δεξί κλικ στο φύλλο "Sheet1 ′ (Παράδειγμα 2)" για να ανοίξετε το μενού με βάση τα συμφραζόμενα και κάντε κλικ στο "Insert" για να εισαγάγετε ένα VBA "Module" στο έργο VBA.
- Ορίστε μια υπορουτίνα με το όνομα "CreateItemSoldFiles".
Κώδικας:
Sub CreateItemSoldFiles () End Sub
- Πρέπει να ορίσουμε μια αναφορά στη βιβλιοθήκη αντικειμένων «Microsoft Scripting Runtime» χρησιμοποιώντας το μενού Εργαλεία -> Αναφορές… εντολή, καθώς θα χρησιμοποιήσουμε κάποιο κώδικα (αντικείμενα), ο οποίος δεν θα λειτουργήσει εάν δεν συμπεριλάβουμε αυτήν τη βιβλιοθήκη αντικειμένων.
- Τώρα θα δηλώσουμε όλες τις μεταβλητές.
Κώδικας:
Dim FSO ως νέο σενάριο. FileSystemObject
Η παραπάνω μεταβλητή FSO παρέχει πρόσβαση στο VBA FileSystemObject. Μετά τη δέσμευση, μπορούμε να χρησιμοποιήσουμε συναρτήσεις όπως BuildPath, CopyFile, CreateTextFile κ.λπ.
- Η επόμενη δήλωση δημιουργεί ένα αντικείμενο TextStream. Μέσω του αντικειμένου TextStream, μπορούμε να διαβάσουμε ή να προσθέσουμε στο αρχικό αρχείο.
Κώδικας:
Dim FSO As New Scripting.FileSystemObject Dim ts As Scripting.TextStream
- Θα δηλώσουμε περισσότερες μεταβλητές. Το «r» προορίζεται για τη συγκράτηση σειρών στην περιοχή, το «fs» είναι για την αποθήκευση της τελικής ενωμένης συμβολοσειράς, «cols» για την αποθήκευση αριθμών στηλών στην περιοχή, «FolPath» για την αποθήκευση της διαδρομής του φακέλου, ώστε να μπορούμε να αποθηκεύουμε τα αρχεία στο φάκελο και «Items_Sold» για την αποθήκευση διαφόρων ονομάτων στοιχείων για τη δημιουργία ενός αρχείου με αυτά τα ονόματα.
Κώδικας:
Dim r As Range Dim fs As String Dim cols As Integer Dim FolPath As String Dim Items_ Πωλείται ως συμβολοσειρά
- Για να μετρήσουμε τον συνολικό αριθμό στηλών στο εύρος, θα καθορίσουμε την ακόλουθη δήλωση.
Κώδικας:
cols = Range ("A1"). CurrentRegion.Columns.Count
Αυτή η δήλωση θα επιλέξει πρώτα την τρέχουσα περιοχή για το κελί A1 και στη συνέχεια θα μετρήσει τον συνολικό αριθμό στηλών στην τρέχουσα περιοχή.
- Θα γράψουμε τις ακόλουθες δηλώσεις για την εκχώρηση της μεταβλητής «FolPath» σε μια διαδρομή χρησιμοποιώντας τη συνάρτηση VBA ENVIRON και το Concatenation Operator.
Κώδικας:
FolPath = Environ ("UserProfile") & "\ Desktop \ Items_Sold" If Not FSO.FolderExists (FolPath) Στη συνέχεια FSO.CreateFolder FolPath
Η δεύτερη δήλωση θα δημιουργήσει το φάκελο εάν ο φάκελος δεν υπάρχει στην ίδια θέση.
- Αυτός ο κωδικός θα αντιστοιχίσει τις τιμές της στήλης Β μία προς μία στο «Items_Sold» Έχουμε χρησιμοποιήσει τη «συνάρτηση OFFSET» για να λάβουμε την αναφορά του κελιού στη στήλη B, καθώς το τρέχον επιλεγμένο κελί βρίσκεται στη στήλη A.
Κώδικας:
Items_Sold = r.Offset (0, 1). Τιμή
- Η ακόλουθη δήλωση με περίγραμμα θα ανοίξει τα αρχεία με ονόματα αποθηκευμένα στη μεταβλητή "Items_Sold" σε ένα προς ένα σε λειτουργία προσάρτησης (οι νέες τιμές θα επισυναφθούν επιτέλους).
Κώδικας:
Ορισμός ts = FSO.OpenTextFile (FolPath & "\" & Items_Sold & ".xls", ForAppending, True)
Χρησιμοποιήσαμε το Concatenate operator με μεταβλητές 'FolPath' και 'Items_Sold' και στατικές τιμές ("\" και ".xls") για τη δημιουργία ονομάτων αρχείων για αρχεία excel
- Πρέπει να έχουμε κατά νου ότι η συνάρτηση VBA JOIN παίρνει έναν μόνο μονοδιάστατο πίνακα ως SourceArray Για να μετατρέψουμε τις σειρές σε έναν μονοδιάστατο πίνακα, πρέπει να χρησιμοποιήσουμε τη μέθοδο Application.Transpose δύο φορές.
Κώδικας:
fs = Join (Application.Transpose (Application.Transpose (r.Resize (1, cols). Value)), vbTab)
Χρησιμοποιήσαμε τη μέθοδο αλλαγής μεγέθους του αντικειμένου εύρους για να αλλάξουμε το μέγεθος του εύρους στο πλάτος ενός αριθμού στηλών στο εύρος.
Ως οριοθέτης, χρησιμοποιήσαμε τη λέξη-κλειδί «vbTab» έτσι ώστε οι τιμές να συμπληρώνονται σε διαφορετικά κελιά.
- Καθώς έχουμε αποθηκεύσει την επεξεργασμένη τιμή της συνάρτησης JOIN σε μεταβλητή 'fs', θα γράψουμε τις τιμές του fs σε νέες γραμμές αρχείων excel που δημιουργήθηκαν από VBA για κάθε σειρά στο αρχικό μας αρχείο από τη σειρά 2 έως την τελευταία σειρά (στην περίπτωσή μας αυτό είναι η 350η σειρά).
- Πριν τερματίσουμε τον βρόχο, θα κλείσουμε το αρχείο που έχει ανοίξει. Ο κωδικός θα είναι όπως φαίνεται στο στιγμιότυπο οθόνης.
Έχουμε γράψει τον πλήρη κώδικα τώρα.
Κώδικας:
Sub CreateItemSoldFiles () Dim FSO As New Scripting.FileSystemObject Dim ts As Scripting.TextStream Dim r As Range Dim fs As String Dim cols As Integer Dim FolPath As String Dim Items_Sold As String cols = Range ("A1"). CurrentRegion.Columns. Καταμέτρηση FolPath = Environ ("UserProfile") & "\ Desktop \ Items_Sold" If Not FSO.FolderExists (FolPath) then FSO.CreateFolder FolPath For Every r In Range ("A2", Range ("A1"). End (xlDown) ) Items_Sold = r.Offset (0, 1). Σύνολο τιμών ts = FSO.OpenTextFile (FolPath & "\" & Items_Sold & ".xls", ForAppending, True) fs = Join (Application.Transpose (Application.Transpose (r .Resize (1, cols). Value)), vbTab) ts.WriteLine fs ts.Close Next r End Sub
Τώρα για να εκτελέσουμε τον κώδικα, θα πατήσουμε το F5, τότε μπορούμε να δούμε ότι ένας φάκελος με το όνομα "Items_Sold" έχει δημιουργηθεί με τη βοήθεια του κώδικα VBA στην επιφάνεια εργασίας.
Στο φάκελο, υπάρχουν 7 μοναδικά αρχεία που δημιουργήθηκαν με τα ονόματα του αντικειμένου και μπορούμε να βρούμε λεπτομέρειες σχετικά με μόνο το συγκεκριμένο στοιχείο στα αρχεία.
Laptop.xls
Πράγματα που πρέπει να θυμάστε για τη λειτουργία VBA JOIN
- Το SourceArray πρέπει να είναι ένας μονοδιάστατος πίνακας. Δεν μπορούμε να αναφερθούμε σε ένα μεμονωμένο κελί, καθώς αυτό θα δημιουργήσει πολλαπλές πολυδιάστατες συστοιχίες.
- Εάν καθορίσουμε μια συμβολοσειρά μηδενικού μήκους ("") ως οριοθέτη, όλα τα στοιχεία του πίνακα συνδυάζονται χωρίς οριοθέτες.