2017-06-23 14 views
1

基本的に私のデータ(項目番号と、それは、関連する寸法です)が2列にこのようなものです:重複値に基づいてセル値を連結しますか?

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" 

列Aが重複する値を持っている場合、私は(ラインと各サイズを分離壊す)列Bの寸法を連結する必要があります。だから、来て希望は次のようになります。

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

あなたはTEXTJOIN()とOffice 365のExcelをお持ちの場合:

、この配列数式を使用項目番号のユニークなリストを取得します:それはで確認する必要があります、配列数式であること

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

をCtrl-Shift-編集モードを終了するときにEnterの代わりに入力します。正しく実行された場合、Excelは{}を数式の周りに置きます。

出力セルとサイズに応じてを有効にすることを忘れないでください。

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

すごく、ありがとう!間違いなく将来利用されます:) –

関連する問題