【複数一致するデータからの抽出】最新データを抽出する方法1 -DL有-

今回は、複数一致するデータの中から最新の情報を抽出する方法1を紹介します。
いくつか方法はありますが、「INDEX関数」「MATCH関数」「MAX関数」「IF関数」を組み合わせます。
本記事はINDEX関数を軸とした方法です。
他の方法に興味がある方は以下を見てみてください。
- 【複数一致するデータからの抽出】最新データを抽出する方法1 -DL有-
- 【複数一致するデータからの抽出】最新データを抽出する方法2 -DL有-
- 【複数一致するデータからの抽出】最新データを抽出する方法3 -DL有-
- 【複数一致するデータからの抽出】最新データを抽出する方法4 -DL有-
シナリオ
A社の受注履歴が記録されたデータを想定します。
複数の受注データの中から、最新の受注番号を取得しようと思います。
この状況をどう解決するか、ステップバイステップで見ていきましょう。

目標は、この表から最新のA社の受注番号(この例では1004)を抽出することです。
解答
関数式

=INDEX(B2:B6, MATCH(MAX(IF(A2:A6=”A社”, C2:C6)), C2:C6, 0)
解答付きサンプルデータ
解答付きサンプルデータが欲しい方は、下記からダウンロードしてください。
関数式の説明
下図は関数式の構造図です。
構造図に沿って、説明します。

関数式は引数に分けて考えるとわかりやすく、関数は引数によって成り立っています。

ステップ1:IF関数式

=IF(A2:A6=”A社”, C2:C6)は、
A2からA6までの範囲で“A社”と等しいセルを見つけ、該当する行のC列の値を返します。
(A社に一致しないセルはFALSEが返ります)
C列 |
---|
2023/1/1 |
FALSE |
2023/2/1 |
2023/3/1 |
FALSE |

元データを見比べてみると、正しいことが分かります
IF関数のお作法は以下を参考にしてください。
ステップ2:MAX関数式

MAX(IF(…))は、ステップ1で返された値の中から最大値を見つけ出します。
2023/3/1 という結果が得られます。

データを確認すると、A社の最新日付と一致しており、正しいことが分かるね。ちなみに、MAXIFS関数でも代用可能だよ。
IF関数のお作法は以下を参考にしてください。
ステップ3:MATCH関数式

MATCH(MAX(IF(…)), C2:C6, 0)は、
ステップ2で得られた最大値(2023/3/1)が、C2からC6の中で、どの位置にあるかを取得します。
ここでは、4が返ります。
MATCH関数のお作法は以下を参考にしてください。
ステップ4:INDEX関数式

INDEX(B2:B6, MATCH(…))は、ステップ3のMATCH関数で得られた位置に対応するB列の値を返します。
以上のステップを踏むと、以下の関数式が完成されます。
【再掲】
=INDEX(B2:B6, MATCH(MAX(IF(A2:A6=”A社”, C2:C6)), C2:C6, 0)
INDEX関数のお作法は以下を参考にしてください。
最後に
特定の条件にマッチする最新のデータを抽出する方法を紹介しました。
MAX関数をMIN関数にすれば、最も古い日付のデータを取得できます。
様々な条件で、データ抽出できるため、是非応用してみてください。