- ベストアンサー
重複行を完全削除するエクセルのマクロ
Sub sakujyo() Dim i, ii As Long For i = 1 To Range("a65336").End(xlUp).Row For ii = Range("a65336").End(xlUp).Row To i + 1 Step -1 If Cells(i, 4).Value = Cells(ii, 4).Value _ And Cells(i, 13).Value = Cells(ii, 13).Value Then Delete Shift:=xlUp End If Next ii Next i End Sub マクロに関しては、素人でございます。 こちらのマクロを作ってみたのですがうまくいきません。 4列目と13列目の列が重複したときのみ重複した行をすべて削除させたいと思っております。どうぞお教えください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
[回答番号:No.2] の DOUGLAS_ です。 >結果として1と3と6、4と5行目を削除し2行目だけ残すというものを作りたい 失礼いたしました。意味が分かりました。 Delete Shift:=xlUp End If Next ii を Dim iii As Byte iii = 1 Rows(ii).Delete Shift:=xlUp End If Next ii If iii = 1 Then Rows(i).Delete Shift:=xlUp iii = 0 ですね。
その他の回答 (4)
- DOUGLAS_
- ベストアンサー率74% (397/534)
[回答番号:No.4] の DOUGLAS_ です。 たびたび失礼いたしました。 [回答番号:No.4] の Rows(i).Delete Shift:=xlUp の部分で「i」のインデックス番号が無くなってしまいますので、 i = i - 1 の処理が必要でした。 Sub sakujyo() Dim i, ii As Long Dim iii As Byte For i = 1 To Range("a65336").End(xlUp).Row For ii = Range("a65336").End(xlUp).Row To i + 1 Step -1 If Cells(i, 4).Value = Cells(ii, 4).Value _ And Cells(i, 13).Value = Cells(ii, 13).Value Then iii = 1 Rows(ii).Delete Shift:=xlUp End If Next ii If iii = 1 Then Rows(i).Delete Shift:=xlUp i = i - 1 End If iii = 0 Next i End Sub
お礼
何度もありがとうございます。 只今試したところ正常に動きました。 ご丁寧な対応ありがとうございます。 また、機会がございましたら宜しくお願いいたします。
- xls88
- ベストアンサー率56% (669/1189)
取りあえず下記でどうでしょうか。 Sub tes1() Dim i As Long, ii As Long For i = 1 To Range("a65336").End(xlUp).Row For ii = Range("a65336").End(xlUp).Row To i + 1 Step -1 If Cells(i, 4).Value = Cells(ii, 4).Value _ And Cells(i, 13).Value = Cells(ii, 13).Value Then Cells(ii, 4).Delete Shift:=xlUp Cells(ii, 13).Delete Shift:=xlUp End If Next ii Next i End Sub
補足
ありがとうございます。 大変勉強になりました。
- DOUGLAS_
- ベストアンサー率74% (397/534)
>結果として1と3と6、4と5行目を削除し2行目だけ残すというものを作りたい 何か、矛盾があるような気もいたしますが。 Delete Shift:=xlUp のトコロを Rows(ii).Delete Shift:=xlUp でいかがでしょうか?
- n-jun
- ベストアンサー率33% (959/2873)
どのようなデータの羅列で、削除したい条件と削除されると困る条件などを提示された方がいいかも。
補足
A B C E 1 1/26 a1234 jkl; 5000 2 1/27 a4567 abcd 4000 3 1/28 a1234 ghij 5000 4 1/30 b4567 yuio 6600 5 2/1 b4567 fdsa 6600 6 2/2 a1234 nmvc 5000 アドバイスありがとうございます。 B列とE列が同じ値のときに削除がしたいです。 結果として1と3と6、4と5行目を削除し2行目だけ残すというものを作りたいです。どうぞ宜しくお願い致します。
お礼
マクロが完璧に動きました。 本当に感謝いたします。ありがとうございました。また機会がございましたら宜しくお願いいたします。