Funkcja łączenia Excel VBA

Funkcja VBA JOIN służy do łączenia tablicy podciągów z określonym ogranicznikiem. Tak jak samo słowo oznacza, że ​​musi połączyć dwa lub więcej ciągów. Teraz jest z nim kilka połowów. Ciągi znajdują się w tablicy, która używa również separatora jako funkcji konkatenacji. Ale separator funkcji konkatenacji może różnić się między dowolnymi dwoma łańcuchami, ponieważ musimy zapewnić jeden separator między każdymi dwoma łańcuchami przy użyciu funkcji konkatenacji. Ale w Join in VBA musimy podać ogranicznik tylko raz. Ten separator jest używany dla każdego łańcucha do przyłączenia. Ale ten parametr jest również opcjonalny. Co się dzieje, gdy nie udostępniamy ogranicznika funkcji? Kiedy nie udostępniamy żadnego ogranicznika funkcji, domyślnie zajmuje on „spację”.

Składnia funkcji łączenia w programie Excel VBA

Funkcja łączenia ma następującą składnię w programie Excel VBA:

Teraz zrozummy argumenty funkcji łączenia VBA,

  • Source Array: Jest to tablica lub zestaw ciągów znaków, które chcemy połączyć.
  • Separator: jest to separator lub znak, którego używamy do rozróżnienia jednego ciągu na drugi. Separator może być spacją, przecinkiem, kropką lub dowolnym znakiem z naszego komputera.

Dane wyjściowe zwracane przez tę funkcję to ciąg znaków.

Jak korzystać z funkcji dołączania Excel VBA?

Nauczymy się korzystać z funkcji Dołącz VBA z kilkoma przykładami w Excelu.

Możesz pobrać ten szablon VBA Join Excel tutaj - VBA Join Excel Template

Excel VBA Join - Przykład nr 1

Najpierw zacznijmy od podstawowego przykładu. Mamy ścieżkę pliku przechowywanego w różnych komórkach naszego arkusza w arkuszu 1. Chcemy całkowitą ścieżkę do tej lokalizacji w innej komórce. Ścieżka, którą należy połączyć, jest następująca:

Chcemy ścieżki w komórce E2. Wykonaj poniższe kroki, aby użyć funkcji łączenia w programie Excel VBA.

Krok 1: Przejdź do karty programisty, a następnie kliknij Visual Basic, aby uzyskać dostęp do edytora VB.

Krok 2: Kliknij zakładkę Wstaw i wstaw moduł do projektu VBA.

Krok 3: Teraz zadeklarujmy naszą pierwszą podprocedurę w następujący sposób.

Kod:

 Sub Przykład () End Sub 

Krok 4: Ponieważ mamy ze sobą dane, możemy po prostu użyć wartości właściwości range, aby dołączyć do ścieżki w następujący sposób.

Kod:

 Sub Przykład () Zakres („E2”) Wartość = End Sub 

Krok 5: Użyj funkcji Połącz, aby połączyć wszystkie ciągi razem z separatorem jako „\”.

Kod:

 Podprzykład () Zakres („E2”). Wartość = Połącz (tablica (Zakres („A2”). Wartość, Zakres („B2”). Wartość, Zakres („C2”). Wartość, Zakres („D2”) .Value), „\”) End Sub 

Krok 6: Uruchom powyższy kod, naciskając klawisz F5 lub klikając przycisk Odtwórz, a uzyskamy wynik w komórce E2, jak pokazano poniżej.

Widzimy, że wszystkie cztery łańcuchy są połączone razem ze wspólnym separatorem, którym jest „\”.

Excel VBA Join - Przykład nr 2

Przejdźmy do przodu z praktycznym przykładem. Mam nazwisko studenta, oceny i zaliczenie lub zaliczenie w jednym arkuszu. Chcemy stworzyć osobny folder z plikami zawierającymi informację, czy uczeń zdał egzamin, czy go nie zaliczył. W tym celu pożyczymy niektóre pojęcia FSO (File System Objects) za pomocą funkcji łączenia. Dane wyglądają tak jak poniżej.

Wykonaj poniższe kroki, aby użyć funkcji łączenia w programie Excel VBA.

Krok 1: W tym samym module zacznijmy kolejną podprocedurę w następujący sposób.

Kod:

 Sub Przykład 2 () End Sub 

Krok 2: Zadeklaruj dwie zmienne jako FSO i strumień tekstu, który jest metodą FSO w następujący sposób.

Kod:

 Dim FSO As New Scripting.FileSystemObject Dim St As Scripting.TextStream 

Krok 3: Teraz zadeklarujmy więcej zmiennych, jedną jako zakres do przechowywania wierszy, a drugą jako liczbę całkowitą do przechowywania kolumn, a drugą jako String do przechowywania połączonej wartości ciągu i ścieżki folderu oraz jedną do utworzenia nazw plików.

Kod:

 Dim rw As Range Dim res As String Dim col As Integer Dim FolPath As String Dim Wynik As String 

Krok 4: Ponieważ mamy dane w arkuszu 2, najpierw aktywujmy arkusz 2.

Kod:

 Arkusze („Arkusz2”). Aktywuj 

Krok 5: Teraz policzmy liczbę kolumn, które mamy w danych w następujący sposób,

Kod:

 col = Zakres („A1”). CurrentRegion.Columns.Count 

Krok 6: Teraz przypiszmy ścieżkę do Folpath za pomocą funkcji informacyjnej ENVIRON w następujący sposób.

Kod:

 FolPath = Environ („UserProfile”) i „\ Desktop \ Result” 

Krok 7: Sprawdźmy teraz, czy folder istnieje, a jeśli nie, to utwórzmy go przy użyciu metody FSO w następujący sposób.

Kod:

 Jeśli nie FSO.FolderExists (FolPath), to FSO.CreateFolder FolPath 

Krok 8: Dodajmy teraz nazwy zapisane przy użyciu funkcji offset w następujący sposób.

Kod:

 Dla każdego rw In Range („A2”, Range („A1”). End (xlDown)) Wynik = rw.Offset (0, 1). 

Spowoduje to otwarcie plików o nazwach jednocześnie w trybie dołączania, w którym nowsze wartości będą dodawane jako ostatnie. Użyliśmy powyższego kodu, aby wartość wyniku była przypisywana jeden po drugim.

Krok 9: Teraz, odkąd funkcja Join używa tablicy 1-D, użyjemy funkcji application.transpose z funkcją join, aby przekonwertować ją na tablicę 1-D w następujący sposób.

Kod:

 Ustaw St = FSO.OpenTextFile (FolPath & "\" & Result & ".xls", ForAppending, True) res = Join (Application.Transpose (Application.Transpose (rw.Resize (1, col) .Value)), vbTab ) St.WriteLine res 

Dlaczego skorzystaliśmy z application.transpose? Ponieważ w ogólnym zakresie tablic (1-D) zakres musi być poziomy, co oznacza, że ​​jeden wiersz ma wiele kolumn. Ponieważ mamy tutaj zakres pionowy w kolumnie B, który jest wynikiem, użyliśmy tej funkcji transpozycji do przekształcenia jej w tablicę 1-D. Użyliśmy VbTab jako separatora, dzięki czemu wartości znajdują się w następnych komórkach.

Krok 10: Przed zakończeniem pętli for zamknijmy plik, a następnie zakończ pętlę w następujący sposób.

Ogólny kod wygląda jak ten poniżej.

Kod:

 Sub Przykład2 () Dim FSO As New Scripting.FileSystemObject Dim St As Scripting.TextStream Dim rw As Range Dim res As String Dim col As Integer Dim FolPath As String Dim Wynik As String Arkusze robocze („Sheet2”). Aktywuj col = Range („ A1 ”). CurrentRegion.Columns.Count FolPath = Environ („ UserProfile ”) &„ \ Desktop \ Result ”Jeśli nie FSO.FolderExists (FolPath), a następnie FSO.CreateFolder FolPath Dla każdego rw w zakresie („ A2 ”, Range („ A1 "). Koniec (xlDown)) Wynik = rw.Offset (0, 1). Wartość Ustaw St = FSO.OpenTextFile (FolPath &" \ "& Result &" .xls ", ForAppending, True) res = Join (Aplikacja .Transpose (Application.Transpose (rw.Resize (1, col) .Value)), vbTab) St.WriteLine res St.Close Next rw End Sub 

Krok 11: Teraz uruchommy powyższy kod, naciskając klawisz F5, możemy zobaczyć na naszym pulpicie, że utworzono folder o nazwie Wynik, jak pokazano poniżej.

Krok 12: Otwórz folder, będziemy mieć trzy pliki: Pass, Fail i Grace.

Jeśli otworzymy jeden z plików, powiedzmy po prostu, że otwieramy plik Fail, możemy zobaczyć dane dla uczniów, którzy ponieśli porażkę.

Rzeczy do zapamiętania

  • Służy do łączenia tablicy ciągów za pomocą wspólnego separatora.
  • Dane wyjściowe zwracane przez tę funkcję to String.
  • Jest przeciwny do funkcji Split w VBA.
  • Jeśli nie udostępniamy ogranicznika tej funkcji, domyślnie zajmuje on „spację”.
  • Tablica w argumencie powinna być tablicą jednowymiarową. Jeśli nie, możemy zastosować konwencjonalne metody application.transpose, jak wyjaśniono w przykładzie 2.

Polecane artykuły

Jest to przewodnik po funkcji łączenia VBA. Tutaj omawiamy, jak używać funkcji łączenia w programie Excel za pomocą kodu VBA, a także praktyczne przykłady i szablon programu Excel do pobrania. Możesz także przejrzeć nasze inne sugerowane artykuły -

  1. Funkcja daty w programie Excel
  2. Połącz łańcuchy w programie Excel
  3. Aplikacje VBA Union
  4. Excel Łączenie kolumn

Kategoria: