重複行を削除するマクロを作っていますが、うまくいきません。
2行目にタイトルが入っていて、3行目以降が必要なデータになります。
この中でA列が一致しているデータ行を削除したいと考えており、
重複データが削除された後、タイトル行がなぜか一番下の行にはりついてしまいます。
どなたか詳しい方助けてください!!!よろしくお願いします。
ちなみに以下が現在使用しているVBAコードです。
===============================================================
Sub GoodRemoveDuplicates()
'A列にデータが入力されており、そのデータを並べ替えた後、
'重複するデータが含まれている行を削除するマクロ
Worksheets("貼り付け用用マクロ").Range("A1").Sort _
key1:=Worksheets("貼り付け用用マクロ").Range("A1")
Set currentCell = Worksheets("貼り付け用用マクロ").Range("A1")
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
===============================================================
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
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
この回答への補足
ご教授いただき、ありがとうございます。
早速試してみましたが、うまくいきません。
重複削除もされず、A列の順番だけが変わっている状態です。
タイトルの受付番号が一番下の行に移動し、ソートされています。
やりたいことはA列の数字の重複を見て、重複している行を削除したいです。
申し訳ないですが、再度ご教授いただけますでしょうか。
よろしくお願いします。
No.1
- 回答日時:
Range("A1").Sort
とすれば当然、A列全体がソートされますから、その時点でタイトル行が下に行ってるのでしょうね。
範囲指定してからソートしないと。
参考URL:http://long-distance.jp/sb/log/eid235.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 2つのシートの任意のセルの番号が一致したら、一致した行をコピーする VBA 2 2023/06/19 20:48
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) 【至急】Excel 同一人物の情報を一行にまとめる(複数行) 6 2022/05/24 17:58
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Excel(エクセル) 【VBA】A列にある連続したデータの1番下に文字列を入力したい 1 2023/01/28 04:40
- Excel(エクセル) マクロで行を追加、削除すると行位置がずれますが、解決方法はありませんか?。 5 2022/05/28 16:03
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【VBA】条件に一致しない行を削...
-
エクセルで空白行を削除する ...
-
Excel VBAでオートフィルタで抽...
-
マクロで最終行を取得してコピ...
-
エクセルのデータがない行には...
-
マクロにて指定の文字間の文字...
-
【VBA】条件に一致しない行を削...
-
VB.net
-
Excel マクロ 検索結果を別シ...
-
Excel97 指定した行だけマク...
-
Access2003レポート:最終ペー...
-
エクセルのVBAで指定した行数の...
-
【至急】Excel 同一人物の情報...
-
列から特定の文字列検索→該当以...
-
EXCELマクロで自動改行
-
VBAで入力の結果を他のセルに反...
-
vbaエクセルマクロについて she...
-
EXCEL VBAでA列にある空白行よ...
-
VBA 行削除した連番
-
数値に見えるものはすべて数値...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで空白行を削除する ...
-
数値に見えるものはすべて数値...
-
エクセルのデータがない行には...
-
マクロで最終行を取得してコピ...
-
【VBA】条件に一致しない行を削...
-
【VBA】条件に一致しない行を削...
-
エクセルのVBAで指定した行数の...
-
VB.net
-
Excel VBAでオートフィルタで抽...
-
マクロにて指定の文字間の文字...
-
Excel97 指定した行だけマク...
-
EXCEL VBAでA列にある空白行よ...
-
excel2021で実行できないマクロ...
-
Excel 別ブックから該当データ...
-
VBAでの重複データに色付け
-
Excel VBA オートフィルタの結...
-
エクセルで階層図を作る方法
-
VBAで特定の行と一つ上の行を削...
-
【至急】Excel 同一人物の情報...
-
Excelで、マウスで範囲を選択し...
おすすめ情報