【複数一致するデータからの抽出】最新データを抽出する方法1 -DL有-
今回は、複数一致するデータの中から最新の情報を抽出する方法1を紹介します。
いくつか方法はありますが、「INDEX関数」「MATCH関数」「MAX関数」「IF関数」を組み合わせます。
本記事はINDEX関数を軸とした方法です。
目次
シナリオ
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が返ります。
なぜ、最大値かと言うと・・・
C列の最大値が最新日付になるからだよ。
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関数にすれば、最も古い日付のデータを取得できます。
様々な条件で、データ抽出できるため、是非応用してみてください。
—————————————
参考記事
—————————————
原理原則に関する記事
Excel関数自体の原理原則に関する記事です。こちらを参照すると、個別の関数の理解がさらに深まるでしょう。
構文に関する記事
Excel関数の引数と戻り値は何だっけ?という時に、役立つ記事です。
ダイアログボックスの使い方に関する記事
Excel関数名は何だっけ?VLOOKUP関数の使い方は何だっけ?という時に、ダイアログボックスを使うと便利です。
下記はそのダイアログボックスに関する記事です。
参照形式に関する記事
関数式をコピーする時はどうしたらいい?
$マークは、どう付けたらいいだろう?
といった悩みをお持ちの方は以下をご覧ください。