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

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

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

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

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

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

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

前の記事:

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

テーマ表

以下に、具体的な手順と使用する式を示します(A1:H21の表)。まず、以下の表をご確認ください。
この中で「同じ納入年納入月納入先を持つ売上番号」を右のI列に表示させる予定です。

売上番号日付納入年納入月納入日納入先商品納入金額
100012021/10/1820211018ニシノ弁当定期雑誌28000
100022022/1/9202219ナイトウフルーツ梱包材8000
100032022/2/112022211ニシノ弁当梱包材30000
100042021/12/1020211210イマガワシューズ事務機28000
100052022/1/202022120ナイトウフルーツ定期雑誌28000
100062022/2/212022221ホリ薬局定期雑誌35000
100072022/1/112022111ニシノ弁当定期雑誌35000
100082022/2/172022217イマガワシューズ梱包材20000
100092021/12/2220211222ホリ薬局梱包材45000
100102021/11/2120211121ホリ薬局事務機21000
100112022/1/152022115ホリ薬局梱包材20000
100122021/12/1520211215サナダ歯科定期雑誌23000
100132021/11/2520211125ニシノ弁当定期雑誌47000
100142022/1/9202219サナダ歯科梱包材6000
100152021/12/2120211221ニシノ弁当事務機38000
100162022/2/212022221ホリ薬局事務機32000
100172021/10/1520211015サナダ歯科梱包材50000
100182021/12/72021127イマガワシューズ定期雑誌29000
100192022/2/212022221ナイトウフルーツ事務機35000
100202022/1/192022119ナイトウフルーツ定期雑誌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のデータ分析において、重複するレコードや値を特定することは非常に一般的な要求です。今回は、特定の列において値が重複するレコードを発見し、その重複するレコードの売上番号を表示す...

 

コメント