Εγγραφή VBA - Βήμα προς βήμα Παραδείγματα του Excel VBA Join Function

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

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

Συνάρτηση Excel VBA JOIN

Όπως υποδηλώνει το ίδιο το όνομα, η συνάρτηση VBA JOIN χρησιμοποιείται για να ενώσει μια σειρά από υποστρώματα με τον καθορισμένο οριοθέτη. Εάν δεν καθορίσουμε κανένα οριοθέτη, τότε παίρνει το «διάστημα» ως προεπιλεγμένο χαρακτήρα οριοθέτη. Κάνει την ίδια δουλειά με τη λειτουργία Concatenate στο Excel, εκτός από το ότι πρέπει να καθορίσουμε έναν χαρακτήρα οριοθέτη μόνο μία φορά, ενώ, στη συνάρτηση Concatenate, πρέπει να καθορίζουμε τον χαρακτήρα οριοθέτη κάθε φορά ανάμεσα σε κάθε δύο χορδές.

Η σύνταξη της συνάρτησης είναι

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

  1. SourceArray : Πρέπει να καθορίσουμε ή να δώσουμε αναφορά σε μια σειρά από υποστρώματα που πρόκειται να συνδεθούν.
  2. Οριοθέτης : Ο οριοθέτης χρησιμοποιείται για να διαχωρίσει κάθε ένα από τα υποστρώματα κατά τη δημιουργία της προκύπτουσας συμβολοσειράς. Καθώς αυτό είναι ένα προαιρετικό επιχείρημα, αν το παραλείψουμε, ο οριοθέτης έχει οριστεί ως κενό διάστημα "".

Η συνάρτηση VBA SPLIT είναι μια ακριβώς αντίθετη συνάρτηση της συνάρτησης VBA JOIN.

Παραδείγματα λειτουργίας συναρμολόγησης VBA

Ακολουθούν τα παραδείγματα της συνάρτησης στο Excel VBA.

Εγγραφή VBA - Παράδειγμα # 1

Ας υποθέσουμε ότι θέλουμε να ενώσουμε το πρώτο (Ramesh), το μεσαίο (Kumar) και το επώνυμο (Mishra).

Τα βήματα θα ήταν:

  • Πρώτον, πρέπει να ανοίξουμε τον οπτικό βασικό επεξεργαστή. Μπορούμε να κάνουμε το ίδιο κάνοντας κλικ στην εντολή «Visual Basic» στην ομάδα «Κωδικός» στην καρτέλα «Προγραμματιστής» excel ή μπορούμε να χρησιμοποιήσουμε το πλήκτρο συντόμευσης excel Alt + F11 .
  • Εισαγάγετε τη λειτουργική μονάδα κάνοντας δεξί κλικ σε ένα "φύλλο 1" και επιλέγοντας "Εισαγωγή" από το μενού με βάση τα συμφραζόμενα και στη συνέχεια επιλέξτε "Ενότητα" για εισαγωγή.
  • Δημιουργήστε μια υπορουτίνα με το όνομα "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" για να εισαγάγετε ένα "Module" VBA στο έργο 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
  • We will declare more variables. ‘r’ is for holding rows in the range, ‘fs’ is for storing final joined string, ‘cols’ for storing numbers of columns in the range, ‘FolPath’ for storing the path of the folder so that we can save the files in the folder and ‘Items_Sold’ for storing various item names to create a file with these names.

Code:

Dim r As Range Dim fs As String Dim cols As Integer Dim FolPath As String Dim Items_Sold As String
  • To count the total number of columns in range, we will define the following statement.

Code:

cols = Range("A1").CurrentRegion.Columns.Count

This statement will first select the current region for cell A1 and then will count the total number of columns in the current region.

  • We will write the following statements for assigning the variable ‘FolPath’ a path using VBA ENVIRON function and Concatenation Operator.

Code:

FolPath = Environ("UserProfile") & "DesktopItems_Sold" If Not FSO.FolderExists(FolPath) Then FSO.CreateFolder FolPath

The second statement will create the folder if the folder does not exist in the same location.

  • This code will assign the values of B column one by one to ‘Items_Sold’ We have used ‘OFFSET function’ to get the reference of cell in B column as the currently selected cell is in column A.

Code:

Items_Sold = r.Offset(0, 1).Value
  • The following bordered statement will open the files with names stored in ‘Items_Sold’ variable in one by one in appending mode (the new values will be appended at last).

Code:

Set ts = FSO.OpenTextFile(FolPath & " " & Items_Sold & ".xls", ForAppending, True)

We have used Concatenate operator with variables ‘FolPath’ and ‘Items_Sold’ and static values (“” and”.xls”) to create file names for excel files.

  • We need to keep in mind that VBA JOIN function takes an only one-dimensional array as SourceArray To convert the rows into a one-dimensional array, we need to use Application.Transpose method two times.

Code:

fs = Join(Application.Transpose(Application.Transpose(r.Resize(1, cols).Value)), vbTab)

We have used the Resize method of range object to resize the range to the width of a number of columns in the range.

As delimiter, we have used ‘vbTab’ keyword so that values would be filled in different cells.

  • As we have stored the processed value of JOIN function into ‘fs’ variable, we will write the fs’s values into new lines of VBA created excel files for every row in our original file from row number 2 to the last row (in our case it is 350th row).
  • Before ending the loop, we will close the file opened. The code would be as shown in the screenshot.

We have written the full code now.

Code:

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.Count FolPath = Environ("UserProfile") & "DesktopItems_Sold" If Not FSO.FolderExists(FolPath) Then FSO.CreateFolder FolPath For Each r In Range("A2", Range("A1").End(xlDown)) Items_Sold = r.Offset(0, 1).Value Set 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 πρέπει να είναι ένας μονοδιάστατος πίνακας. Δεν μπορούμε να αναφερθούμε σε ένα μεμονωμένο κελί, καθώς αυτό θα δημιουργήσει πολλούς πολυδιάστατους πίνακες.
  • Εάν καθορίσουμε μια συμβολοσειρά μηδενικού μήκους ("") ως οριοθέτη, όλα τα στοιχεία του πίνακα συνδυάζονται χωρίς οριοθέτες.

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