• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:重複行削除のマクロ)

VBAで重複行を削除するマクロがうまくいかない

このQ&Aのポイント
  • VBAを使用して重複行を削除するマクロを作成していますが、うまくいきません。タイトル行が最下行に残ります。
  • セルの値を並べ替えた後に重複するデータを削除するVBAマクロを使用していますが、タイトル行が最下行に残ってしまいます。
  • VBAで重複行を削除するマクロを作成しましたが、タイトル行が最下行に貼りついてしまいます。解決策を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#203218
noname#203218
回答No.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

Warabi-0212
質問者

お礼

うまくできました。 本当にありがとうございました!!!! 助かりました。

その他の回答 (2)

noname#203218
noname#203218
回答No.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

Warabi-0212
質問者

補足

ご教授いただき、ありがとうございます。 早速試してみましたが、うまくいきません。 重複削除もされず、A列の順番だけが変わっている状態です。 タイトルの受付番号が一番下の行に移動し、ソートされています。 やりたいことはA列の数字の重複を見て、重複している行を削除したいです。 申し訳ないですが、再度ご教授いただけますでしょうか。 よろしくお願いします。

  • CC_T
  • ベストアンサー率47% (1038/2202)
回答No.1

Range("A1").Sort とすれば当然、A列全体がソートされますから、その時点でタイトル行が下に行ってるのでしょうね。 範囲指定してからソートしないと。

参考URL:
http://long-distance.jp/sb/log/eid235.html