Excelで複数のフィールドを組み合わせて重複するレコードを特定する方法
Excelでのデータ分析において、複数のフィールドの組み合わせをもとに重複するレコードを特定することは頻繁に行われる作業です。今回は、複数のフィールドを組み合わせて重複するレコードを発見し、その重複するレコードの番号を表示する方法を学びます。
このタスクを達成するために、TEXTJOIN関数とIF関数を組み合わせて使用します。
- TEXTJOIN: 複数の値や文字列を一つの文字列に結合する関数です。
- IF: 条件を満たす場合と満たさない場合で、それぞれ異なる値を返す関数です。
この記事では「複数のフィールド(列)を組み合わせて1つとし、同じ組み合わせのものを探す」方法を学習します。
事前にこの前の記事である「1つのフィールドの値だけを用いて、同じ値のものを探す」方法について以下のページを参照してください。
前の記事:
テーマ表
以下に、具体的な手順と使用する式を示します(A1:H21の表)。まず、以下の表をご確認ください。
この中で「同じ納入年・納入月・納入先を持つ売上番号」を右のI列に表示させる予定です。
売上番号 | 日付 | 納入年 | 納入月 | 納入日 | 納入先 | 商品 | 納入金額 |
10001 | 2021/10/18 | 2021 | 10 | 18 | ニシノ弁当 | 定期雑誌 | 28000 |
10002 | 2022/1/9 | 2022 | 1 | 9 | ナイトウフルーツ | 梱包材 | 8000 |
10003 | 2022/2/11 | 2022 | 2 | 11 | ニシノ弁当 | 梱包材 | 30000 |
10004 | 2021/12/10 | 2021 | 12 | 10 | イマガワシューズ | 事務機 | 28000 |
10005 | 2022/1/20 | 2022 | 1 | 20 | ナイトウフルーツ | 定期雑誌 | 28000 |
10006 | 2022/2/21 | 2022 | 2 | 21 | ホリ薬局 | 定期雑誌 | 35000 |
10007 | 2022/1/11 | 2022 | 1 | 11 | ニシノ弁当 | 定期雑誌 | 35000 |
10008 | 2022/2/17 | 2022 | 2 | 17 | イマガワシューズ | 梱包材 | 20000 |
10009 | 2021/12/22 | 2021 | 12 | 22 | ホリ薬局 | 梱包材 | 45000 |
10010 | 2021/11/21 | 2021 | 11 | 21 | ホリ薬局 | 事務機 | 21000 |
10011 | 2022/1/15 | 2022 | 1 | 15 | ホリ薬局 | 梱包材 | 20000 |
10012 | 2021/12/15 | 2021 | 12 | 15 | サナダ歯科 | 定期雑誌 | 23000 |
10013 | 2021/11/25 | 2021 | 11 | 25 | ニシノ弁当 | 定期雑誌 | 47000 |
10014 | 2022/1/9 | 2022 | 1 | 9 | サナダ歯科 | 梱包材 | 6000 |
10015 | 2021/12/21 | 2021 | 12 | 21 | ニシノ弁当 | 事務機 | 38000 |
10016 | 2022/2/21 | 2022 | 2 | 21 | ホリ薬局 | 事務機 | 32000 |
10017 | 2021/10/15 | 2021 | 10 | 15 | サナダ歯科 | 梱包材 | 50000 |
10018 | 2021/12/7 | 2021 | 12 | 7 | イマガワシューズ | 定期雑誌 | 29000 |
10019 | 2022/2/21 | 2022 | 2 | 21 | ナイトウフルーツ | 事務機 | 35000 |
10020 | 2022/1/19 | 2022 | 1 | 19 | ナイトウフルーツ | 定期雑誌 | 15000 |
複数の条件を組み合わせて判定する方法
計算式の完成例
Excelでは、*
を使用して複数の条件を組み合わせることができます。この*
は、論理積(AND)の役割を果たし、すべての条件が真の場合にのみ真を返します。
以下の式を使用して、C列、D列、F列の組み合わせが同じ場合に、対応するA列の売上番号をカンマで区切って表示します。この式をセルI2へ作成し、コピーする予定です。
=TEXTJOIN(",", TRUE, IF(($C$2:$C$21=C2)*($D$2:$D$21=D2)*($F$2:$F$21=F2), $A$2:$A$21, ""))
なお、各列に範囲名を設定しておくと式が読みやすくなります。絶対参照の設定も不要になります。
=TEXTJOIN(",", TRUE, IF((納入年=C2)*(納入月=D2)*(納入先=F2), 売上番号, ""))
この式の動作は以下の通りです:
動作の詳細
- IF(($C$2:$C$21=C2)($D$2:$D$21=D2)($F$2:$F$21=F2), $A$2:$A$21, “”)
- 各アスタリスク
*
は論理演算の「AND」と同じ役割を果たします。すなわち、すべての条件がTRUE
である場合に1
を、それ以外の場合は0
を返します。 $C$2:$C$21=C2
: C列の2行目から21行目までの各セルが、現在の行のC列のセル(C2)と等しいかどうかを確認します。範囲全体の指定時は絶対参照をします。$D$2:$D$21=D2
: 同様にD列に対しても確認を行います。$F$2:$F$21=F2
: F列に対しても確認を行います。- これら3つの条件がすべて満たされる場合(すなわち、結果が
1
の場合)、対応するA列の値(売上番号)を取得します。 - それ以外の場合は、空の文字列
""
を返します。
- 各アスタリスク
- TEXTJOIN(“,”, TRUE, …)
- 上記のIF関数の結果を元に、カンマ
,
を区切り文字として、結果の文字列を結合します。
- 上記のIF関数の結果を元に、カンマ
この式は、C列、D列、F列の3つの列が同じ行において一致するかどうかを確認し、一致する場合に対応するA列の売上番号をカンマで区切って表示する役割を果たしています。
この式をセルI2へ作成し、コピーした結果が下図となります。また、この式は配列数式であるためExcel 2019以前を使用している場合には確定時に「Ctrl + Shift + Enter」を用いてください。
まとめと前の記事紹介
今回の記事では、Excelで複数のフィールドを組み合わせて重複するレコードを特定し、そのレコードの売上番号を表示する方法を学びました。このようなテクニックは、データの整合性を確認したり、特定の条件下での重複するデータを特定したりする際に非常に役立ちます。今後もExcelの使い方や便利なテクニックについて学んでいきましょう。
前の記事:重複するレコードを特定し、その番号を表示する計算式を作る(1:単一フィールド)
比較列が1つだけの場合は、よりシンプルな前の記事にある計算式を参考にしてください。
コメント