3

私のExcelシートは次のようになります

      c1        c2      c3      c4

ROW1   abc      def      1       2

ROW2   abc      def      3       4

ROW3   klm      efg     11       5

ROW4   klm      efg     12      89

重複する c1 エントリのために、データを 1 つのコンマで区切られた 1 つの列に結合したいと考えています。したがって、Excelシートは次のようになります。

       c1        c2      c3      c4

ROW1   abc      def      1,3     2,4

ROW2   klm      efg     11,12    5,89
4

2 に答える 2

6

このコードは

  • 現在のシートの列 A:D で実行
  • 列 A と列 B で共通のグループ レコードと、それぞれ列 C と列 D の値を組み合わせたもの
  • 大文字と小文字を区別しないで実行
  • 新しいシートに出力します

ここに画像の説明を入力

    Sub QuickCombine()
    Dim X()
    Dim Y()
    Dim objDic As Object
    Dim lngRow As Long
    Dim lngCol As Long
    Dim ws As Worksheet

    X = Range([a1], Cells(Rows.Count, "D").End(xlUp))
    Y = X
    Set objDic = CreateObject("scripting.dictionary")

    For lngRow = 1 To UBound(X, 1)
        If Not objDic.exists(LCase$(X(lngRow, 1) & X(lngRow, 2))) Then
            objDic.Add LCase$(X(lngRow, 1) & X(lngRow, 2)), lngRow
        Else
            Y(lngRow, 1) = vbNullString
            Y(objDic.Item(LCase$(X(lngRow, 1) & X(lngRow, 2))), 3) = Y(objDic.Item(LCase$(X(lngRow, 1) & X(lngRow, 2))), 3) & "," & X(lngRow, 3)
            Y(objDic.Item(LCase$(X(lngRow, 1) & X(lngRow, 2))), 4) = Y(objDic.Item(LCase$(X(lngRow, 1) & X(lngRow, 2))), 4) & "," & X(lngRow, 4)
        End If
    Next

    Set ws = Sheets.Add

    ws.[a1].Resize(UBound(X, 1), UBound(X, 2)) = Y
    ws.Columns("A").SpecialCells(xlBlanks).EntireRow.Delete

End Sub
于 2012-05-16T06:38:40.377 に答える
0

これは、Excel の連結関数を使用して行うことができます。ここに良いチュートリアルへのリンクがあります

また、重複に対処するために、Excel で重複エントリを強調表示して、簡単に削除できるようにすることができます。こちらをご覧ください

于 2012-05-16T05:16:57.743 に答える