Od Excela 2019 została wprowadzona funkcja POŁĄCZ.TEKSTY, która w łatwy sposób umożliwia połączenie zwykłych tekstów, liczb, danych z zakresów dane, ale wcześniej nie było takiej funkcji, dlatego poniżej znajdziesz kod VBA, który taką funkcję tworzy i pozwala Ci z niej korzystać w Excelu.
Function POŁĄCZTEKST(ogranicznik As String, ignoruj_puste As Boolean _
, ParamArray tekst() As Variant) As String
'Zmienne pomocnicze
Dim i As Integer, j As Integer
'Pętla po wszystkich elementach parametru tekst
'funkcja UBound wyznacza pierwszy wymiar parametru tekst
For i = 0 To UBound(tekst)
'Sprawdzamy, czy aktualny (numer i) element parametru tekst jest zakresem
If TypeName(tekst(i)) = "Range" Then
'Jeśli jest to musimy przejść po wszyskich jego komórkach
'może być istotne, że VBA przechodzi od lewej do prawej, później góra dół
For j = 1 To tekst(i).Count
'Jeśli ustawiłeś, że mają być ignorowane wartości puste to tu jest sprawdzane,
'czyli argument ignoruj_puste musi być równy True
'i komórka zakresu (tekst(i)(j)) musi być pusta
If Not (ignoruj_puste And tekst(i)(j) = "") Then
POŁĄCZTEKST = POŁĄCZTEKST & ogranicznik & tekst(i)(j)
End If
Next j
Else
'Jeśli aktualny (numer i) element parametru tekst nie jest zakresem
'to możemy go od razu połączyć, zakładam też, że nikt nie wpisze pustej wartości
'więc nie sprawdzamy czy wartości wpisane są puste
POŁĄCZTEKST = POŁĄCZTEKST & ogranicznik & tekst(i)
End If
Next i
'a na koniec wycinamy pierwszy ogranicznik, bo wstawia się na początku połączonego tekstu
POŁĄCZTEKST = Right(POŁĄCZTEKST, Len(POŁĄCZTEKST) — Len(ogranicznik))
End Function
Chcesz ze mną poznać możliwości VBA? Zobacz kiedy planowana jest następna edycja 30dniowego kursu online:
https://excelw30dni.pl/kategoria-produktu/szkolenia-vba/
Pozdrawiam
Adam Kopeć
Miłośnik Excela
Adam, w Excelu 2016 nie ma funkcji POŁĄCZ.TEKSTY
Racja jest dopiero w 2019