2017-06-23 83 views
1

基本上我的數據(項目號碼和它的相關聯的尺寸)是這樣的兩列:基於重複值連接單元格值?

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" 

我需要連接在列B中的尺寸(與換行符每個尺寸分離)如果塔A具有重複值。因此,期望走出來是:

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" 
       ... 

因爲FOX6215A具有多種尺寸。我完全被困在如何做到這一點。有任何想法嗎?

回答

1

如果您有Office 365的Excel與TEXTJOIN():

獲取項目編號的唯一列表,然後使用這個數組公式:

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

是它需要被證實數組公式在退出編輯模式時,按Ctrl-Shift-Enter而不是Enter。如果正確完成,Excel將在公式周圍放置{}

請記住啓用Wrap Text相應的輸出單元格和大小。

enter image description here


如果您沒有Office 365中的Excel:

將這個代碼附加到工作簿模塊中,並使用上述公式描述:

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

那是它!忘記它是一個數組公式,非常感謝你!非常令人印象深刻! –

+0

現在你有了一個傳真到TEXTJOIN功能,這將做的功能將做的一切,使用它在你的樂趣。 –

+0

太棒了,非常感謝你!將來一定會被利用:) –