以下のような各商品の購入数を管理している表と、各商品の最終購入日を抽出している表があります。
この最終購入日を抽出する方法について解説していきます。

最終購入日を抽出する方法
抽出する方法について2通りで解説していきます。
1つ目は「XLOOKUP関数で抽出する方法」、2つ目は「VLOOKUP関数で抽出する方法」になります。
一番簡単な方法は1つ目の方法ですが、XLOOKUP関数は比較的新しい環境(2021以降)でないと扱うことができません。
そのため、対応していない場合は、2つ目の方法で実現する必要があります。
1.XLOOKUP関数で抽出する方法
VLOOKUP関数やMATCH関数は、検索値が上から先に見つかった位置の情報を返します。
※VLOOKUP関数の使い方は、後半で解説しています。

そのため、下に行くほど最新データになる表で、最新の情報のみを抽出することが難しいです。
上記の例の場合、最新情報が必要だとすると、理想的な値は以下のようになります。

XLOOKUP関数では、このような値を簡単に求めることができます。
XLOOKUP関数の使い方は以下になります。
=XLOOKUP(検索値, 検索範囲, 戻り範囲, [見つからない場合], [一致モード], [検索モード])
// 検索値:検索したい値
// 検索範囲:検索したいセルの範囲や配列
// 戻り範囲:抽出したいセルの範囲や配列
// [見つからない場合]:検索値が検索範囲の中から見つからない場合に表示する値
// → 省略時は見つからない場合にエラーを表示
// [一致モード]:以下の中から検索方法を選択
// 0:完全一致(省略時)、-1:完全一致または次に小さい項目、1:完全一致または次に大きい項目、2:ワイルドカード文字との一致
// [検索モード]:以下の中から検索方法を選択
// 1:先頭から末尾へ検索(省略時)、-1:末尾から先頭へ検索、2:バイナリ検索(昇順の検索範囲)、-2:バイナリ検索(降順の検索範囲)
XLOOKUPの引数には[検索モード]があり、ここで「末尾から先頭への検索」を指定することで、最新情報を抽出することができます。
また、VLOOKUP関数とは異なり、「検索したい項目が表の一番左にある必要がある」などの縛りがありません。
XLOOKUP関数を用いて求めた数式は以下になります。
=XLOOKUP(F3,C:C,B:B,"",0,-1)
// データの増減に対応するため、「C:C」などと列全体を指定しています

2.VLOOKUP関数で抽出する方法
次にXLOOKUP関数が使えない環境でも実現できるように、VLOOKUP関数で実現する方法について解説していきます。
VLOOKUP関数の使い方は以下になります。
=VLOOKUP(検索値, 範囲, 列番号, [検索方法])
// 検索値:検索したい値
// 範囲:検索したい項目が一番左の列である抽出対象の列を含む範囲を指定
// 列番号:範囲から抽出したい列が左から何番目なのかを指定
// [検索方法]:以下の中から検索方法を選択
// TRUE:近似一致(省略時)、FALSE:完全一致
VLOOKUP関数は、検索したい項目が抽出対象の列より左にある必要があるため、以下の表では抽出することができません。

仮に、[日付]と[商品名]の項目が逆だったとしても、VLOOKUP関数は「検索値が上から先に見つかった位置の情報」を返すので正しく抽出することができません。
=VLOOKUP(F3,B:C,2,FALSE)

そのため、VLOOKUP関数で表の中の最終購入日を抽出するには、検索用の項目を用意する必要があります。
またその項目は、重複のない項目である必要があります。
ということで、処理用の列を以下のように挿入し追加します。

では、まずはB列の検索用の値を求めていきます。
重複しないように処理列の項目に関しては、「商品名+”-“+登場回数」にしていきます。
セルB3の場合は「A-1」、セルB8の場合は「A-2」というイメージになります。
登場回数は、3行目から対象の行までに出てきた指定の商品名の数になります。
そのような値は、COUNTIF関数で求めることができます。
=COUNTIF(範囲, 検索条件)
// 指定した範囲内に検索条件を満たすセルの数を返す
セルB3を求める場合の対象の範囲は「D3からD3」になります。
セルB4を求める場合の対象の範囲は「D3からD4」になります。
という感じに、開始のセルD3は固定で、終わりのD3やD4は対象の行までになります。
そのため、相対参照と絶対参照を上手く活用し、コピーするだけで求めることができる数式を求めます。
その数式は以下のようになります。
=COUNTIF($D$3:D3,D3)

後は、こちらの数式に商品名を加えます。
=D3&"-"&COUNTIF($D$3:D3,D3)

後は、以下の抽出対象の処理列を求めます。

抽出対象は、「対象の商品名」と「表の中で各商品名が存在する数」を組み合わせることで最新の検索用の値を求めることができるかと思います。
各商品が存在する数は以下のように求めることができます。
=COUNTIF(D:D,H3)

後は、こちらの数式に商品名を加えます。
=H3&"-"&COUNTIF(D:D,H3)

このようにしてVLOOKUP用の検索値を求めることができました。
最後に、VLOOKUP関数で最終購入日を抽出します。
=VLOOKUP(G3,B:C,2,FALSE)

このようにして求めることができました。
まとめ
前半のXLOOKUP関数は便利な関数ですが、2021以降のExcelでないと対応しておりません。
そのため、他の方に共有する資料などでは、対応していない可能性を考慮して、後半のVLOOKUP関数を用いて求めるのが好ましいかと思います。






















































































