0

重複した行から 1 行の配列に変換する必要がある Excel のデータがいくつかあります。検索 > 特別に移動し、空白を値で置換しようとしましたが、行は等しくありません。

Excel データの例:

Code    Image
112001  image1.jpg
112001  image2.jpg
112001  image3.jpg

112004  image1.jpg
112004  image2jpg

554551  image1.jpg
554551  image2.jpg
554551  image3.jpg
554551  image4.jpg

結果はする必要があります

Code    Image
112001  image1.jpg  image1.jpg,image2.jpg,image3.jpg
112001  image2.jpg
112001  image3.jpg

112004  image1.jpg  image1.jpg,image2.jpg
112004  image2jpg

554551  image1.jpg  image1.jpg,image2.jpg,image3.jpg,image4.jpg
554551  image2.jpg
554551  image3.jpg
554551  image4.jpg

問題は、7.000 行があり、プログラムで行う必要があることです。

配列を行うための提案は大歓迎です。

4

1 に答える 1

1

私は小さなデータセットで遊んで、以下のコードを思いつきました。

Sub CompareAndOutput()

    Dim lastRow As Long
    Dim ws As Worksheet

    Dim row As Long, col As Long, recordCount As Long

    Dim output As String
    Dim chkStr As String, prevStr As String

    On Error GoTo err

    'set sheet we want to use
    Set ws = Sheet1

    'set check column to A
    col = 1

    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual



    lastRow = ws.Cells(ws.Rows.Count, col).End(xlUp).row

        'loop through rows
        For row = 1 To lastRow + 1

            'set column A string to compare
            chkStr = ws.Cells(row, col).Value

            'compare string to previous value
            If chkStr <> prevStr Then

            'output string at bottom of group
            ws.Cells(row - recordCount, 3).Value = output

            'clear values
            output = ""
            recordCount = 0
            End If

            'build output string
            output = output & " " & ws.Cells(row, 2).Value

            recordCount = recordCount + 1

            'set previous string for comparison next loop
            prevStr = chkStr

        Next row


    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic

Exit Sub
err:
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic

    MsgBox err.Description, vbCritical, "An error occured"

End Sub

グループの上部にある行と出力をループします...列Aグループは、それが機能するために一緒でなければなりません..

于 2013-11-12T09:25:29.540 に答える