Excel

Łączenie komórek znakiem średnika (przecinka, kropki itp.)

Łączenie tekstów

Często spotykam się z problemem jak wartości, które są w komórkach Excela, połączyć w tekst oddzielony  np. średnikiem.

Łączenie tekstów

Łączenie tekstów w excelu – konkatenacja

Rozwiązanie 1 – Formuła

Oczywiście można do tego użyć formuły w Excelu. Pierwsza metoda to użycie funkcji ZŁĄCZ.TEKSTY() (eng. CONCATENATE).

=ZŁĄCZ.TESKTY(A1;";";A2;";";A3....)

Inna wersja formuły to użycie operatora konkatenacji  & (brzmi to dziwnie ale to po prostu zwykłe łączenie tekstów)

=A1&";"&A2&";"&A3

Minusem takiego rozwiązania jest jego pracochłonność i ilość łączonych elementów. Pierwsza wersja formuły połączy tylko 255 elementów druga około 127. Dla wielu osób nie będzie to zadowalająca ilość. Sczegołnie kiedy chcemy połączyć 2000 adresów mailowych aby wysłać zbiorowego maila.

Rozwiązanie 2 – Użycie programu Word

Rozwiązaniem dla większej ilości elementów jest użycie wspomagająco programu Word.
Kopiujemy komórki z Excela i wklejamy je jako zwykły tekst do Worda. Aby to zrobić w Wordzie klikamy prawym przyciskiem myszy i wybieramy ikonę

Następnie używamy narzędzia Zamień (Ctrl+H) gdzie zamienimy znak nowego akapitu (przejścia do nowej linii) ^p na znak np. średnika ;


Po wciśnięciu Zamień wszystko dostaniemy elementy połączone średnikiem.

Rozwiązanie 3 – Makro w VBA

Oczywiście jednym z najlepszych rozwiązań będzie uzycie makra. Poniższy kod należy wkleić do pliku PERSONAL.XLSB (instrukcja pod tym wpisem – Dodawanie makr do pliku PERSONAL.XLSB)
Po dodaniu kodu w odpowiednie miejsce możemy bezpiecznie zaznaczyć komórki do scalenia i uruchomić makro wciskając kombinację klawiszy Alt+F8 i wybierając z listy nasze makro.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Sub konkatenacja()
Dim c As Range
Dim con, typ, znak As String
Dim i As Long
 
znak = ";"
typ = TypeName(Selection) 
 
If typ = "Range" Then 'jeżeli zaznaczony obiekt nie jest zbiorem komórek procedury łączenia
    i = 1
    For Each c In Selection
        If Not IsEmpty(c.Value) Then 'sprawdzanie czy komórka nie jest pusta
            If i = 1 Then
                con = c.Text
            Else
                con = con & znak & c.Text
            End If
            i = i + 1
        End If
    Next c
    Selection.Cells.ClearContents 'usuwanie zawartości komórek
    Selection.Cells(1, 1).Value = con 'zapisywanie do pierwszej zaznaczonej komórki złączonego tekstu
Else
    MsgBox "Ups! zaznaczyłeś " & typ & ", a miały być komórki :)"
End If
End Sub

Zamiast średnika jako łącznika możecie użyć dowolnego znaku. Wystarczy że zmienisz wartość zmiennej znak w 6 linijce kodu.

×