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

【複数一致するデータからの抽出】最新データを抽出する方法2, ダウンロード,アイキャッチ画像,FILTER,MAX

今回は、複数一致するデータの中から最新の情報を抽出する方法2を紹介します。

方法1は、『【複数一致するデータからの抽出】最新データを抽出する方法1 -DL有-』で紹介しています。

本記事はFILTER関数を軸とした方法です。

シナリオ

A社の受注履歴が記録されたデータを想定します。

複数の受注データの中から、最新の受注番号を取得しようと思います。

この状況をどう解決するか、ステップバイステップで見ていきましょう。

複数一致するデータからの抽出:最新データを抽出する方法1 -DL有-,INDEX,match,max,if


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

解答

関数式

複数一致するデータからの抽出:最新データを抽出する方法,ダウンロード,,FILTER,If,max

=FILTER(B2:B6, (A2:A6=”A社”) * (C2:C6=MAX(FILTER(C2:C6, A2:A6=”A社”))))

解答付きサンプルデータ

解答付きサンプルデータが欲しい方は、下記からダウンロードしてください。

関数式の説明


下図は関数式の構造図です。
構造図に沿って、説明します。

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

複数一致するデータからの抽出:最新データを抽出する方法,ダウンロード,,FILTER,If,max,構造図

ステップ1: A2:A6=”A社”の詳細な説明

複数一致するデータからの抽出:最新データを抽出する方法,ダウンロード,,FILTER,If,max,構造図

A2からA6までの各セルに含まれる値が「A社」と等しいかどうかを評価します。

これは、「=」演算子を用いて配列内の各値を特定の値(ここでは「A社」)と比較し、
結果を論理値(TRUEまたはFALSE)の配列として返します。

複数一致するデータからの抽出:最新データを抽出する方法,ダウンロード,,FILTER,If,max

「=」演算子による配列と値の比較の解説

「=」演算子は個別のセルだけの機能でありません。
セル範囲(配列)全体に対する一括比較が可能です。

この場合、A2:A6="A社"という式では、
A2:A6がセル範囲を表し、
この範囲内の各セルが「A社」という文字列と等しいかどうかが一括で評価されます。
各セルごとにTRUEまたはFALSEの値が生成されます。

ステップ2:FILTER(C2:C6,A2:A6=”A社”)

複数一致するデータからの抽出:最新データを抽出する方法,ダウンロード,,FILTER,If,max,構造図

ステップ1で設定した第2引数(A2:A6="A社")の条件に一致するデータを、
第1引数の範囲(C2:C6)から抽出します。

A2:A6で”A社”に一致する行のC列(日付)のデータを抽出します。

複数一致するデータからの抽出:最新データを抽出する方法,ダウンロード,,FILTER,If,max

FILTER関数の構文は、
【FILTER関数】条件に合わせてデータを抽出する方法 DL可 で詳しく説明しています。

ステップ3:MAX(FILTER(C2:C6, A2:A6=”A社”))

複数一致するデータからの抽出:最新データを抽出する方法,ダウンロード,,FILTER,If,max,構造図

MAX関数は、与えられた数値の中から最大値を返す関数です。

ステップ2でフィルタリングされた日付、つまり FILTER(C2:C6, A2:A6=“A社”) の中から、
最大値(最新の日付)を見つけています。
この場合、最大値は「2023/03/01」です。

MAX関数の構文は、MAX関数の構文 – 最大値 – DL有で詳しく説明しています。

ステップ4:(C2:C6=MAX(FILTER(C2:C6, A2:A6=”A社”)))

複数一致するデータからの抽出:最新データを抽出する方法,ダウンロード,,FILTER,If,max,構造図

 C2:C6の範囲内で、ステップ3で求めた最大値(最新の日付)と一致するデータを抽出します。
つまり、”A社”の最新の日付に一致するデータをC2:C6の範囲から抽出します。

この結果は以下のようになります:

  • データが最新の日付と一致 ⇒ TRUE(1)
  • データが最新の日付と一致しない ⇒ FALSE(0)

これらの値が返されます。

複数一致するデータからの抽出:最新データを抽出する方法,ダウンロード,,FILTER,If,max

ステップ5:(A2:A6=”A社”) * (C2:C6=MAX(FILTER(C2:C6, A2:A6=”A社”)))

複数一致するデータからの抽出:最新データを抽出する方法,ダウンロード,,FILTER,If,max,構造図

ステップ1で設定した第1引数(A2:A6=“A社”)
と、
ステップ4で求めた第2引数(C2:C6=MAX(FILTER(C2:C6, A2:A6=“A社”)))

の結果を要素ごとに乗算します。

この乗算は、両方の条件が

  • 両条件がTRUE ⇒ TRUE(または数値で1)
  • それ以外 ⇒ FALSE(または数値で0)

    を返す論理AND演算と同じです。

つまり、A列が”A社”かつC列が最新日付ならTRUE、それ以外はFALSEです。

複数一致するデータからの抽出:最新データを抽出する方法,ダウンロード,,FILTER,If,max

乗算とAND演算子は同じ動きすると覚えておいてください。

簡単に言うと・・・

0×1=0、1×1=1
 ※0=FALSE,1=TRUE

という考え方です。

ステップ6:FILTER(B2:B6, (A2:A6=”A社”) * (C2:C6=MAX(FILTER(C2:C6, A2:A6=”A社”))))

複数一致するデータからの抽出:最新データを抽出する方法,ダウンロード,,FILTER,If,max,構造図

ステップ5で得た結果((A2:A6="A社") * (C2:C6=MAX(FILTER(C2:C6, A2:A6="A社"))))をフィルタ条件として使用します。
具体的には、B2:B6(受注番号)からステップ5の結果が1(TRUE)である行のみを抽出します。
ここでは、ステップ5でTRUEと評価されたのは4行目のみでした。

結果として、「1004」という受注番号を返します。
これはA社で最新の日付に関連する受注番号です

最後に

特定の条件にマッチする最新のデータを抽出する方法を紹介しました。

MAX関数をMIN関数にすれば、最も古い日付のデータを取得できます。

様々な条件で、データ抽出できるため、是非応用してみてください。

—————————————
参考記事
—————————————

原理原則に関する記事

Excel関数自体の原理原則に関する記事です。こちらを参照すると、個別の関数の理解がさらに深まるでしょう。

構文に関する記事

Excel関数の引数と戻り値は何だっけ?という時に、役立つ記事です。

Excel関数にはそれぞれ構文がある

Excel関数には構文があります。それが、引数と戻り値です。構文に沿えばいいだけです。言わば、数学の公式のようなものです。理論を知らなくても、公式に当てはめれば答え…

Excel関数の引数とは

Excelの引数は、料理を完成させるための材料のようなものです。しかも、材料に種類があります。その種類を理解すると、Excel関数を上手く使いこなせるようになります。

ダイアログボックスの使い方に関する記事

Excel関数名は何だっけ?VLOOKUP関数の使い方は何だっけ?という時に、ダイアログボックスを使うと便利です。
下記はそのダイアログボックスに関する記事です。

Excelの検索ダイアログから、関数を探す

Excelの検索ダイアログに使えば、目的の関数を発見しやすくなります。WEB検索する前に、Excel関数の検索ダイアログを使ってみましょう。

Excelのダイアログに沿って、関数を使う

Excelのダイアログに使えば、関数の使い方を調べることができます。言わば、関数のガイドラインのようなものです。

参照形式に関する記事

関数式をコピーする時はどうしたらいい?
$マークは、どう付けたらいいだろう?
といった悩みをお持ちの方は以下をご覧ください。

絶対参照/相対参照/複合参照とは

絶対参照/相対参照/複合参照とは何かをどこよりも分かりやすく解説します。

絶対参照/相対参照/複合参照の使い方

「絶対参照」「相対参照」「複合参照」は、どうやって使うのかを紹介します。 ポイントは、「$マークは、直後にあるモノを固定する」です。