Excelで重複するレコードを特定し、番号を表示する方法
Excelのデータ分析において、重複するレコードや値を特定することは非常に一般的な要求です。今回は、特定の列において値が重複するレコードを発見し、その重複するレコードの売上番号を表示する方法を学びます。
このタスクを達成するために、TEXTJOIN関数とIF関数を組み合わせて使用します。
- TEXTJOIN: 複数の値や文字列を一つの文字列に結合する関数です。
- IF: 条件を満たす場合と満たさない場合で、それぞれ異なる値を返す関数です。
テーマ表
以下に、具体的な手順と使用する式を示します(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 |
使用する関数の紹介
TEXTJOIN関数の基本的な動作
TEXTJOIN関数関数は、複数の値を指定した区切り文字で結合するための関数です。この関数の特徴として、結合する際に空の文字列を無視することができる点が挙げられます。
=TEXTJOIN(区切り記号, 空のセルは無視, テキスト1, [テキスト2], ...)
引数の説明
- 区切り記号:テキスト値を結合する際の区切り記号を指定します。引用符(“”)で囲んで指定してください。例: “,”, “/”, “、” など。
- 空のセルは無視:この引数にTRUEを指定すると、空のセルは無視して結合を行います。FALSEを指定した場合、空のセルも区切り記号で結合されます。
- テキスト1、テキスト2…:結合するテキスト値を指定します。複数のテキスト値を指定することができます。また、この引数にはセル範囲(例:A2:C2)を指定することも可能です。これにより、一度に複数のセルの値を結合することができます。
IF関数での条件分岐
IF関数は、指定した条件を満たすかどうかに応じて、2つの異なる値のいずれかを返す関数です。
=IF(論理式, [真の場合の値], [偽の場合の値])
引数の説明
- 論理式: 評価する条件式。この条件が真の場合、真の場合の値を返し、偽の場合は偽の場合の値を返します。例:A1>15
- 真の場合の値: 条件が真の場合に返す値。例1:〇 例2:500 例3:B1+400
- 偽の場合の値: 条件が偽の場合に返す値。例1:× 例2:200 例3:B1+200
計算式の実際の動作
計算式の完成例
以下の式を使用して、B列の日付が重複する場合に、対応するA列の売上番号をカンマで区切って表示します。たとえばI2へ入力してみてください。
=TEXTJOIN(",", TRUE, IF($B$2:$B$21=B2, $A$2:$A$21, ""))
また、各列に範囲名を設定しておけば読みやすくシンプルな計算式とすることができます。絶対参照の設定も不要になります。
=TEXTJOIN(",", TRUE, IF(日付=B2, 売上番号, ""))
この式の動作は以下の通りです:
動作の詳細
- IF($B$2:$B$21=B2, $A$2:$A$21, “”)
$B$2:$B$21=B2
: B列の2行目から21行目までの各セルが、現在の行のB列のセル(B2)と等しいかどうかを確認します。- 一致する場合(TRUEの場合):
$A$2:$A$21
の対応するセルの値(売上番号)を取得します。 - 一致しない場合(FALSEの場合):空の文字列
""
を返します。
- TEXTJOIN(“,”, TRUE, …)
- 上記のIF関数の結果を元に、カンマ
,
を区切り文字として、結果の文字列を結合します。 - 2番目の引数に
TRUE
が指定されているため、空の文字列は結果から除外されます。これにより、不要なカンマが結果に現れることを防ぎます。
- 上記のIF関数の結果を元に、カンマ
例えば、B2の値がB列の他のいくつかのセルと一致する場合、この式はそれらのセルに対応するA列の売上番号をカンマで区切った形で返します。一致する値がない場合、結果は空の文字列になります。
このように、この式は特定の値がB列のどのセルと一致するかを確認し、対応するA列の値をカンマで区切って表示する役割を果たしています。
この式をセルI2へ作成し、コピーした結果が下図となります。また、この式は配列数式であるためExcel 2019以前を使用している場合には確定時に「Ctrl + Shift + Enter」を用いてください。
例えば、B2の値がB列の他のいくつかのセルと一致する場合、この式はそれらのセルに対応するA列の売上番号をカンマで区切った形で返します。一致する値がない場合、結果は空の文字列になります。
このように、この式は特定の値がB列のどのセルと一致するかを確認し、対応するA列の値をカンマで区切って表示する役割を果たしています。
まとめと次のテーマ
今回の記事では、Excelで重複するレコードを特定し、そのレコードの売上番号を表示する方法を学びました。このようなテクニックは、データの整合性を確認したり、重複するデータを特定したりする際に非常に役立ちます。
次の記事:重複するレコードを特定し、その番号を表示する計算式を作る(2:複数フィールド)
次の記事では複数の列を取り扱い、同じ組み合わせを持つレコードの一覧を表示する計算式の作成方法を紹介します。
コメント