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.
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 TEXTJOIN
nicht verfügbar ist und UDF
die 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.