Wie kombiniere ich String mit jedem durch Komma getrennten Wert von einer anderen Zelle

412
Ardel

Ich arbeite mit einer Liste von Kontonummern in Spalte A und einer Liste von Subs in Spalte B. Spalte A hat nur die Kontonummer, zum Beispiel: 310050. Spalte B enthält eine Liste von Subs: Beispiel: 10,11,30. Was ich versuche zu tun, ist eine Gleichung für Spalte C zu erstellen, um auszuspucken 31005010,31005011,31005030, aber alles, was ich erforsche, zeigt nur, wie man Kommas in Zeilen oder Spalten aufteilt. Wie würden Sie das lösen? Aktuelles Excel-Setup

0
@Yass diese Frage wurde bereits von Scott gelöst. Trotzdem danke. Ardel vor 7 Jahren 0

2 Antworten auf die Frage

0
Scott Craner

Wenn Sie ein Abonnement für Office 365 Excel haben, verwenden Sie diese Matrixformel:

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

Als Array-Formel muss sie beim Verlassen des Bearbeitungsmodus mit Strg-Umschalt-Eingabe anstelle von Eingabe bestätigt werden. Wenn es richtig gemacht wird, wird Excel {}die Formel verwenden.

![enter image description here


Wenn Sie nicht über einen Abonnement verfügen, können Sie diesen Code in ein an die Arbeitsmappe angehängtes Modul einfügen. Dann würden Sie die Formel wie oben beschrieben verwenden.

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 
Danke, für die schnelle Antwort. Ich habe Office 365, aber es scheint ein kleines Missverständnis zu geben. Zelle B1 ist 10,11,30. Ich werde der Originalfrage einen Screenshot beifügen Ardel vor 7 Jahren 0
@Ardel siehe Bearbeiten. Denken Sie daran, wenn es funktioniert, markieren Sie es als richtig, indem Sie auf das Häkchen bei der Antwort klicken. Scott Craner vor 7 Jahren 0
Ich habe es sowohl eingegeben als auch kopiert / eingefügt und es gibt mir #Name? Error. Ich durchforste es jetzt, um zu sehen, ob ich den Fehler finden kann, den ich gemacht habe. Ich habe STRG + UMSCHALT + EINGABETASTE verwendet und das {} wurde um ihn herum gesetzt. Ardel vor 7 Jahren 0
Dann haben Sie kein Abonnement für 365 oder Sie haben es nicht aktualisiert. Der Code muss in einem an die Arbeitsmappe angefügten Modul enthalten sein, nicht in den Arbeitsblattcode oder in den ThisWorkbook-Code. Scott Craner vor 7 Jahren 0
Das ist es! Dies ist ein großartiger Mann, vielen Dank. Ardel vor 7 Jahren 0
0
g.kov

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

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

Angenommen, das Symbol @wird nicht in den Daten verwendet. Verwenden Sie andernfalls ein anderes nicht verwendetes Symbol.

enter image description here