Wie kombiniere ich einen String mit jedem durch Kommas getrennten Wert aus einer anderen Zelle?

Wie kombiniere ich einen String mit jedem durch Kommas getrennten Wert aus einer anderen Zelle?

Ich arbeite mit einer Liste von Kontonummern in Spalte A und einer Liste von Tochtergesellschaften in Spalte B. Spalte A enthält nur die Kontonummer, z. B. 310050. Spalte B enthält eine Liste von Tochtergesellschaften: Beispiel: 10,11,30. Ich versuche, eine Gleichung für Spalte C zu erstellen, die 31005010,31005011,31005030 ausgibt, aber alles, was ich recherchiere, zeigt nur, wie Kommas in Zeilen oder Spalten aufgeteilt werden. Wie würdet ihr das lösen? Aktuelles Excel-Setup

Antwort1

Wenn Sie ein Abonnement für Office 365 Excel haben, verwenden Sie diese Array-Formel:

=TEXTJOIN(",",TRUE,A1&TRIM(MID(SUBSTITUTE(B1,",",REPT(" ",999)),(ROW(INDIRECT("1:" & LEN(B1)-LEN(SUBSTITUTE(B1,",",""))+1))-1)*999+1,999)))

Da es sich um eine Matrixformel handelt, muss sie beim Verlassen des Bearbeitungsmodus mit Strg-Umschalt-Eingabe statt mit der Eingabetaste bestätigt werden. Wenn dies richtig gemacht wird, wird Excel {}die Formel umschließen.

![Bildbeschreibung hier eingeben


Wenn Sie kein Abonnement haben, können Sie diesen Code in ein an die Arbeitsmappe angehängtes Modul einfügen. Anschließend verwenden Sie die Formel wie oben beschrieben.

Function TEXTJOIN(delim As String, skipblank As Boolean, arr)
    Dim d As Long
    Dim c As Long
    Dim arr2()
    Dim t As Long, y As Long
    t = -1
    y = -1
    If TypeName(arr) = "Range" Then
        arr2 = arr.Value
    Else
        arr2 = arr
    End If
    On Error Resume Next
    t = UBound(arr2, 2)
    y = UBound(arr2, 1)
    On Error GoTo 0

    If t >= 0 And y >= 0 Then
        For c = LBound(arr2, 1) To UBound(arr2, 1)
            For d = LBound(arr2, 1) To UBound(arr2, 2)
                If arr2(c, d) <> "" Or Not skipblank Then
                    TEXTJOIN = TEXTJOIN & arr2(c, d) & delim
                End If
            Next d
        Next c
    Else
        For c = LBound(arr2) To UBound(arr2)
            If arr2(c) <> "" Or Not skipblank Then
                TEXTJOIN = TEXTJOIN & arr2(c) & delim
            End If
        Next c
    End If
    TEXTJOIN = Left(TEXTJOIN, Len(TEXTJOIN) - Len(delim))
End Function

Antwort2

Falls die Funktion TEXTJOINnicht verfügbar ist und UDFdie Lösung aus irgendeinem Grund nicht erwünscht ist, hilft in diesem Fall diese Arbeitsblattformel:

=SUBSTITUTE("@"&SUBSTITUTE(B1,",",",@"),"@",A1)

, vorausgesetzt, dieses Symbol @wird in den Daten nicht verwendet, andernfalls verwenden Sie stattdessen ein anderes, nicht verwendetes Symbol.

Bildbeschreibung hier eingeben

verwandte Informationen