• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL VBAの重複行削除について)

EXCEL VBAの重複行削除について

このQ&Aのポイント
  • EXCEL VBAを使用している場合に、重複する行を削除する方法を教えてください。
  • RemoveDuplicatesを使用して行の重複を削除するコードを組んだ場合、古いデータが残ってしまう問題が発生します。
  • 欲しいデータの表のように、日付の新しいものを残すように重複行削除する方法があれば教えてください。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

RemoveDuplicates メソッドに、削除の優先(指定)順序を記述するパラメータ(引数)がない以上)、あれこれ考えても、ここに質問しても、無駄でしょう。RemoveDuplicatesメソッドでは、あとに残る1データは、最初行か最終行のどちらかにちがいないのだから、逆手に取ってデータを残すほうにデータ順序を持って行っておく(変えておく)しかないだろう。 その方法を取るかまたは、このメソッドを使わず、優先キー(重複を考えている項目)+日付でソートして、 (1)CountIF的な判別法で2になった行は削除 (2)重複を考える項目で、ソートしておいて、直前との同一を見る方法(第2以後の出現は削除)ー最初が残る などで重複を判定して、削除すればよい。 (1)では、ソートしておかないと、新しいものを残すロジックはむつかしい。 後者の2者比較で重複がわかったとき、日付を比較して、新しい(日付シリアル値的に大)法を残す手もある。(MAXやMINのレコードを見つけるロジックと同じ。) ーー 重複しているかどうかは最後のレコードまで読まないと判定できないのだから、ソートしておく方法(そこに処理時間を押しつける)が一番ロジック的に考えやすい。其の後は処理は一直線(レコード1読)で終わる。 この方法は昔からオフラインバッチ処理の常道なんだ。

KK4016
質問者

お礼

回答ありがとうございます。 ソートする方法で考えます。

その他の回答 (1)

  • f272
  • ベストアンサー率46% (8467/18126)
回答No.1

日付で逆順に並べ替えてから,重複行削除を削除する。 もし元の順に戻したいのなら,日付で逆順に並べ替える前に元の順序をあらわす列を挿入しておいてから,重複行削除を削除した後に,その列を使って元の順に戻す。

KK4016
質問者

お礼

回答ありがとうございます。 元の順序も考えて、行挿入→ソート→重複行削除→ソート で考えたいと思います。

関連するQ&A