読者です 読者をやめる 読者になる 読者になる

2つのテーブルから複合キーが重複しないデータをExcelでマクロを使わないで抽出する方法を考えた

1. はじめに

2つのテーブルから複合キーが重複しないデータを抽出する方法を考えた。

2. 前提条件

お気軽に作業できるように、

  • DB(SQL)を使わない
  • プログラミングしない
  • Excel手作業でお手軽に(๑˃̵ᴗ˂̵)

3. 手順

1. 対象となるテーブルを用意する

f:id:o_masaaki:20170224114220p:plain

この例の場合、列「key」と列「value」が複合キー。
また、この方法では、列「key」と列「value」の値を文字列として結合するので、結合した文字列(複合キー)の一意性が満たされる(重複しない)必要がある。

2. 重複判定用の複合キー列を追加する

f:id:o_masaaki:20170224114250p:plain

重複判定用の複合キーの列を追加する。
複合キーの列には、以下のように各キーを&(アンパサンド)で結合する数式を入力する。
例) =B8&C8

3. 重複判定結果用の列を追加する

f:id:o_masaaki:20170224114417p:plain

他方のテーブルに複合キーが存在するか否かを判定結果の列を追加する。
判定結果の列には、以下のように他方の複合キーの範囲に複合キーと一致するデータの件数をカウントする数式を入力する。
例) =IF(COUNTIF($F$33:$F$52,F9)>0,“Yes”,“No”)
  COUNTIF($F$33:$F$52,F9)
    で、指定した範囲($F$33:$F$52)に期待する複合キー(F9)が含まれる件数を取得する。
  IF(…>0,“Yes”,“No”)
    で、重複していたら"Yes", 重複していなければ"No"を表示する。

正直、IF文の部分は見た目だけの処理なんで不要

4. 他方のテーブルに複合キーが存在しないデータを抽出する

f:id:o_masaaki:20170224114528p:plain f:id:o_masaaki:20170224114625p:plain

フィルターを使用するなどして、他方のテーブルに複合キーが存在するか否かを判定する列がNoのデータを抽出する。