- ベストアンサー
VBAで重複行を削除するマクロがうまくいかない
- VBAを使用して重複行を削除するマクロを作成していますが、うまくいきません。タイトル行が最下行に残ります。
- セルの値を並べ替えた後に重複するデータを削除するVBAマクロを使用していますが、タイトル行が最下行に残ってしまいます。
- VBAで重複行を削除するマクロを作成しましたが、タイトル行が最下行に貼りついてしまいます。解決策を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
#2です。 重複削除が出来ないそうですが、その部分はWarabi-0212さんが作成されたもので、 Set currentCell = Worksheets("貼り付け用用マクロ").Range("A1")を Set currentCell = ws.Range("A3")に変更しただけです。 削除できない理由として考えられるのは、currentCell がA1のままかつ、A1又はA2が空白であればDo~Loopを抜けてしまうので、行削除がされない可能性はあります。 私はcurrentCellをA3から開始するように変更していますが、A1のままという事はありませんか? コードを全てコピペすれば動くはずのですが。 下記方法でも可能だと思います。 Sub Sample02() Dim i, Maxrow As Long Dim ws As Worksheet 'ワークシート名を変数wsに格納 Set ws = Worksheets("sheet1") 'A列の最終行取得 Maxrow = ws.Cells(Rows.Count, "A").End(xlUp).Row 'セルA3以下を降順ソート ws.Range(Cells(3, "A"), Cells(Maxrow, "A")) _ .Sort key1:=ws.Range("A3"), order1:=xlAscending 'A3以降の重複行を削除 With ws.Range("A3") For i = .CurrentRegion.Rows.Count To 1 Step -1 If .Offset(i, 0) = .Offset(i - 1, 0) Then .Offset(i, 0).EntireRow.Delete Next i End With End Sub
その他の回答 (2)
VBAの一例です。ご参考まで。 A列をA3以下で降順ソートしたいようですが、A列全体でソートしているようです。 A列の最終行を取得し、ソート範囲を指定するVBAとしてみました。 ワークシート名が頻繁に出てくるので変数wsに格納するように変更しました。 Sub GoodRemoveDuplicates() 'A列にデータが入力されており、そのデータを並べ替えた後、 '重複するデータが含まれている行を削除するマクロ Dim i, Maxrow As Long Dim currentCell, nextCell As Range Dim ws As Worksheet 'ワークシート名を変数wsに格納 Set ws = Worksheets("貼り付け用用マクロ") 'A列の最終行取得 Maxrow = ws.Cells(Rows.Count, "A").End(xlUp).Row 'セルA3以下を降順ソート ws.Range(Cells(3, "A"), Cells(Maxrow, "A")) _ .Sort key1:=ws.Range("A3"), order1:=xlAscending 'セルA3以下の重複行を削除 Set currentCell = ws.Range("A3") Do While Not IsEmpty(currentCell) Set nextCell = currentCell.Offset(1, 0) If nextCell.Value = currentCell.Value Then currentCell.EntireRow.Delete End If Set currentCell = nextCell Loop End Sub
補足
ご教授いただき、ありがとうございます。 早速試してみましたが、うまくいきません。 重複削除もされず、A列の順番だけが変わっている状態です。 タイトルの受付番号が一番下の行に移動し、ソートされています。 やりたいことはA列の数字の重複を見て、重複している行を削除したいです。 申し訳ないですが、再度ご教授いただけますでしょうか。 よろしくお願いします。
- CC_T
- ベストアンサー率47% (1038/2202)
Range("A1").Sort とすれば当然、A列全体がソートされますから、その時点でタイトル行が下に行ってるのでしょうね。 範囲指定してからソートしないと。
お礼
うまくできました。 本当にありがとうございました!!!! 助かりました。