2025年1月22日【ID:0】
【Excel】表の一番右側のデータを自動抽出
以下の表は、各商品の価格をまとめた表になります。

価格が改定される度、表の右側に改定後の価格を登録する想定になります。
この表から、以下のように最新価格(表の一番右側の価格)を自動で抽出する数式の作成方法について解説していきます。

手順1: 抽出方法
こちらでは、VLOOKUP関数とCOUNTA関数を組み合わせて最新の価格を抽出していきます。
まずは、VLOOKUP関数から順番に解説していきます。
手順2: VLOOKUP関数の基本設定
VLOOKUP関数の使い方は、以下になります。
=VLOOKUP(検索値, 範囲, 列番号, [検索方法])
// 指定した[範囲]から[検索値]で検索し、該当するデータの指定した[列番号]の位置にある項目値を返す
// [検索値]で検索する項目は、指定した[範囲]の一番左側の項目である必要がある
// [検索方法]で抽出する条件を指定する(TRUE:近似一致(省略時)、FALSE:完全一致)
実際に活用して、最新の価格(4列目)を抽出する場合の数式は、以下になります。
=VLOOKUP(B4,$B$13:$XFD$16,4,FALSE)
// B4: 検索する商品名が入力されているセル
// $B$13:$XFD$16: 商品別価格表の範囲(「$」で固定)
// 4: 最新価格がある列番号(仮設定)
// FALSE: 完全一致で検索

最新価格の列の位置が固定の場合は、上記のような数式で、最新価格を抽出することができます。
手順3: COUNTA関数の組み合わせ
先ほどの数式のままですと、価格が追加された際に、最新価格を抽出することができなくなります。

そのため、COUNTA関数を用いて、常に最新の価格が抽出されるように修正します。
COUNTA関数の使い方は、以下になります。
=COUNTA(値1, [値2], [値3], …)
// 指定した[値]の中で空でない値の数を返す
COUNTA関数を活用することで、動的な列番号を取得することができます。
VLOOKUP関数で抽出する列番号とは、今回の表の場合、改定日が入力されている、もしくは今後入力される範囲(セルC12からセルXFD12)内で値が入力されているセルの数に1を加えた数になります。
実際に列番号を抽出する場合の数式は、以下のようになります。
=COUNTA(C12:XFD12)+1
// C12:XFD12:改定日の範囲

こちらの数式をVLOOKUP関数に組み合わせると、以下のようになります。
=VLOOKUP(B4,$B$13:$XFD$16,COUNTA($C$12:$XFD$12)+1,FALSE)
// COUNTA($C$12:$XFD$12)+1:列番号の取得(「$」で固定)

このように、先頭の商品に関して、最新価格を抽出することができました。
手順4: 数式のコピー
最後に、先頭に入力した数式を下の行までコピーすることで、以下のように、各商品に対して、最新価格を自動で抽出することができます。

関数を組み合わせることによって、実現できることが大幅に広がります。
ぜひ試してみてください。