メニュー 表示 非表示

重複行の削除@Excel マクロ・VBA

複数の列がキー値となっている場合に、
重複している行を削除します。

Collectionを用います。
データの格納してあるシートに対して、
格納してある列文だけループ処理を行います。
コレクションに、行番号とKEY値を格納します。
KEY値は、KEYとなっている列の値を繋げたものです。

この場合、エラーを無視します。
重複してある行番号は、コレクションに格納されません。

取得したコレクションを新たにループし、
対象となる行を別シートにコピーします。

もっと早い方法もあると思います。



Dim i As Integer

Dim rowCol As Collection
Dim rowCount As Integer

'コレクション生成
Set rowCol = New Collection

'列1が空までループ
i = 1
Do While Sheets("CSV").Cells(i, 1) <> ""

    'エラーを無視
    '現在の行番号をKEY値で格納
    'KEY値は、列1,2,4であり、繋げる。
    On Error Resume Next
    rowCol.Add i, Sheets("CSV").Cells(i, 1).Value & Sheets("CSV").Cells(i, 2).Value & Sheets("CSV").Cells(i, 4).Value
    On Error GoTo 0

i = i + 1
Loop

'重複行を削除したデータを格納するシートを削除
Sheets("CSV2").Cells.Clear

'コレクションをループ
'重複がないデータを新たに生成
rowCount = 1
For Each tempRowCount In rowCol
    Sheets("CSV").Rows(CInt(tempRowCount)).Copy Sheets("CSV2").Rows(rowCount)
    rowCount = rowCount + 1
Next




Copyright (C) Excelマクロ・VBAのお勉強. All Rights Reserved.