重複するレコードを特定し、その番号を表示する計算式を作る(2:複数フィールド)

Excelで複数のフィールドを組み合わせて重複するレコードを特定する方法

Excelでのデータ分析において、複数のフィールドの組み合わせをもとに重複するレコードを特定することは頻繁に行われる作業です。今回は、複数のフィールドを組み合わせて重複するレコードを発見し、その重複するレコードの番号を表示する方法を学びます。

このタスクを達成するために、TEXTJOIN関数IF関数を組み合わせて使用します。

  • TEXTJOIN: 複数の値や文字列を一つの文字列に結合する関数です。
  • IF: 条件を満たす場合と満たさない場合で、それぞれ異なる値を返す関数です。

この記事では「複数のフィールド(列)を組み合わせて1つとし、同じ組み合わせのものを探す」方法を学習します。

事前にこの前の記事である「1つのフィールドの値だけを用いて、同じ値のものを探す」方法について以下のページを参照してください。

前の記事:

重複するレコードを特定し、その番号を表示する計算式を作る(1:単一フィールド)
Excelで重複するレコードを特定し、番号を表示する方法 Excelのデータ分析において、重複するレコードや値を特定することは非常に一般的な要求です。今回は、特定の列において値が重複するレコードを発見し、その重複するレコードの売上番号を表示...

テーマ表

以下に、具体的な手順と使用する式を示します(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), 売上番号, ""))

この式の動作は以下の通りです:

動作の詳細

  1. 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列の値(売上番号)を取得します。
    • それ以外の場合は、空の文字列 "" を返します。
  2. TEXTJOIN(“,”, TRUE, …)
    • 上記のIF関数の結果を元に、カンマ , を区切り文字として、結果の文字列を結合します。

この式は、C列、D列、F列の3つの列が同じ行において一致するかどうかを確認し、一致する場合に対応するA列の売上番号をカンマで区切って表示する役割を果たしています。

この式をセルI2へ作成し、コピーした結果が下図となります。また、この式は配列数式であるためExcel 2019以前を使用している場合には確定時に「Ctrl + Shift + Enter」を用いてください。

まとめと前の記事紹介

今回の記事では、Excelで複数のフィールドを組み合わせて重複するレコードを特定し、そのレコードの売上番号を表示する方法を学びました。このようなテクニックは、データの整合性を確認したり、特定の条件下での重複するデータを特定したりする際に非常に役立ちます。今後もExcelの使い方や便利なテクニックについて学んでいきましょう。

前の記事:重複するレコードを特定し、その番号を表示する計算式を作る(1:単一フィールド)

比較列が1つだけの場合は、よりシンプルな前の記事にある計算式を参考にしてください。

重複するレコードを特定し、その番号を表示する計算式を作る(1:単一フィールド)
Excelで重複するレコードを特定し、番号を表示する方法 Excelのデータ分析において、重複するレコードや値を特定することは非常に一般的な要求です。今回は、特定の列において値が重複するレコードを発見し、その重複するレコードの売上番号を表示...

 

コメント

PAGE TOP
タイトルとURLをコピーしました