【EXCEL:VBA】重複する行を探したい

重複する行を探したい

この記事では、「重複する行を探す」作業を自動化する方法について解説します。

EXCELの機能で「重複の削除」がありますが、重複する行の削除はしてくれますが、どの行が重複していたかは教えてはくれません。

データ入力ミスで重複していたのか、本当に重複していたのかわからず、データ修正ができません。

そこで、今回はデータ一覧から重複する行を見つけてくれるツールを作りました。

重複する行に色を付けるので、どの行が重複しているのかを見つけることができます。

重複する行を見つける機能は、汎用的に作っていますので、好きなデータを利用することが可能となっています。

また、重複行と判断する列を好きに指定可能ですので、思ったように重複行を探すことができます。

 

それでは、さっそく重複データを探す機能を作っていきましょう。

 

困っている女性

大量のデータから重複している行を見つける必要があるの。

困っている女性

入力ミスならデータを修正しないといけないし、不要な行なら片方のデータを削除しないといけないし、データをみて判断したいの。

困っている女性

重複しているかの判断をする列を変えながら、確認する必要もあるの。
それなら、EXCELとVBAを使えば、重複する行を見つけてくれる機能を作ることができるよ。

解決する男性

しかも、重複しているかの判断をする列も好きに変えて、何度も確認することができるよ。

解決する男性

困っている女性

それそれ、早く教えてよ。

 

「ツール概要図」(重複する行を探す)

今回作成するツールの概要図は、以下です。

重複行を探す機能図

重複行を探すツール機能図

 

今回の「重複する行を探すツール」は、以下を作成する必要があります。

  1. 重複行を判断する列を指定するセル:ツールシート
  2. 調査対象のデータを貼り付けするシート:データシート
  3. VBA(指定された列で調査対象データの重複行を抽出する)

 

手っ取り早く、このツールを利用したい方は、以下から「ダウンロード購入」できます。
BOOTH)重複する行を探したい:【ExcelVBAツール】

 

Youtube動画に「重複する行を探すVBAツール」の作り方をアップしました。


よかったら、見てください。

 

それでは、順番にツールの作り方を説明します。

重複行を判断する列を指定する欄を準備する

列を指定する欄を作成します。

「ツール」シートを作成する

ツールシートを作成する

ツールシートを作成する

 

  1. 「ツール」という名前のシートを作成します。
  2. A1セルに「キー列」のタイトル欄を作成します。
  3. A1セルの背景色をつけておきます。(サンプルでは、「薄い緑」にしています。)
  4. A2セル以降については、重複を判断する列を入力する欄になります。

 

対象データにより、A2セル以降に指定する列は随時変更することになります。

 

重複を調査するデータを貼り付けるシートを準備する

つぎに、調査対象データを貼り付けるシートを作成していきます。

「データ」シートを作成する

データシートを作成する

データシートを作成する

  1. 「データ」という名前のシートを作成します。
  2. このシートに調査対象のデータを貼り付けます。

サンプルデータとして、A1セルからE9セルまで貼り付けています。

お好きなデータをA1セルから貼り付けてください。

 

VBAで重複する行を探す機能の作成

開発タブの「Visual Basic」をクリックして、「Microsoft Visual Basic for Applications」を起動します。

Microsoft Visual Basic for Applicationsを起動する

Microsoft Visual Basic for Applicationsを起動する

 

「Microsoft Visual Basic for Applications」にVBAプログラムを入力します。

重複する行を探すVBAプログラム

重複する行を探すVBAプログラム

標準モジュールを追加して、以下のソースを書きます。

 

次に、EXCELを「◯◯◯.xlsm」というような感じでマクロ有効ブック形式で保存します。

 

重複する行を探すツールの使い方

それでは、重複する行を探すツールの使い方を説明します。

 

「ツール」シートのA2セル以降にキー列を入力します。

今回のサンプルでは、A2セルに「2」、A3セルに「4」を入力します。

キー列を指定する

キー列を指定する

 

「開発」タブの「マクロ」をクリックします。

テーブル名とクエリ名を取得するVBAプログラムを実行する

VBAプログラムを実行する

 

先程作成したVBAプログラム「重複行をハイライト」が一覧に表示されていますので、選択します。

次に、「実行」ボタンをクリックします。

重複行をハイライトを実行する

重複行をハイライトを実行する

 

しばらく待つと、「データ」シートの重複する行が黄色でハイライトされます。

重複行がハイライトされます。

重複行がハイライトされます。

B列「従業員NO」とD列「部署名」が重複する行がハイライトされました。

先ほど、「ツール」シートで「2」と「4」を指定したからです。

 

それでは、キー列を「2、4、5」に変更して実行してみましょう。

キー列を変更する

キー列を変更する

 

今度は、B列「従業員NO」とD列「部署名」とE列「勤務地」が重複する行のみハイライトされました。

ハイライト行が変更された

ハイライト行が変更された

 

好きなデータで「重複する行を探すプログラム」を動かしてみましょう。

ちなみに、サンプルデータではE列までの5列のデータですが、10列でも20列でも好きな列数のデータを利用できます。

重複する行を探すVBAプログラム(重複行をハイライト)の説明

それでは、重複する行を探すVBAプログラム(重複行をハイライト)を説明します。

①変数を宣言する

ここでは、このあとの処理で使うシートや行番号を格納する変数を宣言しています。

 

②各シートを変数に格納する

ここでは、各シートを変数に格納しています。

 

③ツールシートのキー列の最終行を取得する

ここでは、「ツール」シートのキー列に指定しているセルの最終行を取得しています。

例えば、A3セルまで入力されていた場合、3を取得します。

④データシートの最終行を取得する

ここでは、「データ」シートに入力されているデータの最終行を取得しています。

「ツール」シートのキー列に指定されている最初の列番号を利用して、「データ」シートのその列番号の最終行を取得しています。

つまり、「ツール」シートのA2セルに「2」と入力されていた場合、「データ」シートの2列目の最終行を取得します。

 

⑤データシートのハイライトを全てクリアする

ここでは、「データ」シートのハイライトを全てクリアしています。

前回実行でセットされた黄色ハイライトを全てクリアしています。

 

⑥重複チェックし、重複する行をハイライトする

ここが今回のツールで一番重要となる処理です。

外側のループ( i )では、データシートの1行目から最終行-1行目まで処理を行います。

内側のループ( j )では、( i )+1行目からデータシートの最終行目まで処理を行います。

外側のループが1行目なら1行目の値と、内側のループが2行目から最終行までの値を比較します。

比較する列は、「ツール」シートで指定されたキー列すべてが同じになっているか確認します。

すべての列が同じなら外側のループ行と内側のループ行の両方を黄色でハイライトします。

列の値が1つでも異なれば、次のループ処理に行くようにしています。

 

この機能を利用して、重複する行を探す作業の負担を減らしましょう。

 

以上です。

手っ取り早く、このツールを利用したい方は、以下から「ダウンロード購入」できます。
BOOTH)重複する行を探したい:【ExcelVBAツール】

 

 

最後まで読んでいただきありがとうございました。
この記事をシェアしていただけると喜びます。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です