2017-06-23 6 views
1

Grundsätzlich meine Daten (Artikelnummer und die dazugehörenden Dimensionen) ist wie folgt in zwei Spalten:Verketten von Zellenwerten basierend auf doppelten Werten?

FOX6215A  - Twin Dimensions (W x D x H): 38.6" x 1.3" x 59.8" 
FOX6215A  - Full Dimensions (W x D x H): 53.6" x 1.3" x 59.8" 
FOX6215A  - Queen Dimensions (W x D x H): 60.6" x 1.3" x 59.8" 
FOX6215A  - King Dimensions (W x D x H): 76.6" x 1.3" x 59.8" 
FOX6215B  - Twin Dimensions (W x D x H): 38.6" x 1.3" x 59.8" 
FOX6215B  - Full Dimensions (W x D x H): 53.6" x 1.3" x 59.8" 
FOX6215B  - Queen Dimensions (W x D x H): 60.6" x 1.3" x 59.8" 
FOX6215B  - King Dimensions (W x D x H): 76.6" x 1.3" x 59.8" 
FOX6215C  - Twin Dimensions (W x D x H): 38.6" x 1.3" x 59.8" 
FOX6215C  - Full Dimensions (W x D x H): 53.6" x 1.3" x 59.8" 

I die Abmessungen in Spalte B verketten müssen (mit Zeilenumbrüchen jede Größe trennt), wenn die Spalte A doppelte Werte hat . Also aus dem gewünschten wäre kommen:

FOX6215A  - Twin Dimensions (W x D x H): 38.6" x 1.3" x 59.8" 
      - Full Dimensions (W x D x H): 53.6" x 1.3" x 59.8" 
      - Queen Dimensions (W x D x H): 60.6" x 1.3" x 59.8" 
       ... 

Da FOX6215A mehr Größen hat. Ich bin völlig ratlos, wie das geht. Irgendwelche Ideen?

Antwort

1

Wenn Sie Office 365 Excel mit TEXTJOIN():

eine eindeutige Liste der Positionsnummern Get dann diese Matrixformel verwenden:

=TEXTJOIN(CHAR(10),TRUE,IF($A$1:$A$10=D1,$B$1:$B$10,"")) 

ist eine Matrixformel bestätigt werden muss, mit Strg-Umschalt-Enter anstelle von Enter beim Verlassen des Bearbeitungsmodus. Wenn es richtig gemacht wird, wird Excel {} um die Formel setzen.

Denken Sie daran, für die Ausgangszellen und Größe entsprechend zu aktivieren.

enter image description here


Wenn Sie Office 365 Excel nicht:

diesen Code in einer an der Arbeitsmappe angebracht Modul Setzen und die Formel verwenden, 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 
+1

That war es! Vergiss es war eine Array-Formel, vielen Dank! Sehr beeindruckend! –

+0

Jetzt haben Sie ein Faxgerät für die TEXTJOIN-Funktion. Dies wird fast alles tun, was die Funktion tun wird, verwenden Sie es nach Belieben. –

+0

Super, vielen Dank! Wird definitiv in Zukunft genutzt werden :) –

Verwandte Themen