• ベストアンサー

重複行を完全削除するエクセルのマクロ

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列目の列が重複したときのみ重複した行をすべて削除させたいと思っております。どうぞお教えください。

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

  • ベストアンサー
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.4

[回答番号: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 ですね。

BlackJunk
質問者

お礼

マクロが完璧に動きました。 本当に感謝いたします。ありがとうございました。また機会がございましたら宜しくお願いいたします。

その他の回答 (4)

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.5

[回答番号: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

BlackJunk
質問者

お礼

何度もありがとうございます。 只今試したところ正常に動きました。 ご丁寧な対応ありがとうございます。 また、機会がございましたら宜しくお願いいたします。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.3

取りあえず下記でどうでしょうか。 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

BlackJunk
質問者

補足

ありがとうございます。 大変勉強になりました。

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.2

>結果として1と3と6、4と5行目を削除し2行目だけ残すというものを作りたい  何か、矛盾があるような気もいたしますが。 Delete Shift:=xlUp のトコロを Rows(ii).Delete Shift:=xlUp でいかがでしょうか?

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

どのようなデータの羅列で、削除したい条件と削除されると困る条件などを提示された方がいいかも。

BlackJunk
質問者

補足

   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行目だけ残すというものを作りたいです。どうぞ宜しくお願い致します。

関連するQ&A