【Excel関数 応用】LOOKUP関数×条件指定で「最後の一致値」を取り出す方法 


はじめに

LOOKUP関数は、基本的には「昇順に並んだデータから近い値を探す」関数ですが、条件を複数組み合わせて “最後の一致値” を取得することも可能です。

この記事では、次のような実務で役立つLOOKUP関数の応用テクニックを解説します:

  • 同じIDが複数ある中で、最後の登録情報を取り出したい
  • 空白以外の最新データを取得したい

そのキーとなるのが、次の式です:

=IFERROR(LOOKUP(2,1/((条件1)*(条件2)), 対象範囲), "")

なぜLOOKUP関数を使うの?

LOOKUP関数なんて馴染があまりないし、似たようなことをVLOOKUP関数でもできるじゃないか。
と思われる方もおられると思いますが、VLOOKUP関数には明確にできないことがあります。

それは ”最初に一致した値しか返せない” という点です。

=VLOOKUP(検索値, 範囲, 列番号, FALSE)

この形式でVLOOKUP関数を使われると思いますが
この形式だと上から順にデータを検索をしていき、一致する値を見つけたら
その時点で検索を終了させてしまいます。
つまり、複数一致するデータがある場合に最後に一致するデータにたどり着けないのです。

他にも-1のような複雑な配列式が組み込めない ということもあります。
これらのことから今回はLOOKUP関数を使った仕事に役立つ使い方を発信したいと思います。


準備:最後に入力された履歴を取得する

新規Excelファイルで以下の様に準備します。

シート名:在庫表
A列:品名(今回は機材A~Dとしております。)
B列:最後に貸出した相手(ここに今回の数式を入れます。)

シート名:貸出リスト
A列:品名
B列:貸出相手

この様な形でシートを2つ作成します。
これで準備は完了しました。

実践:最後に入力された履歴を取得する

ここまでできたら早速数式をシート名在庫表のB列に入れてみましょう!
今回の場合は、以下の様なコードを入れてください。

=IFERROR(LOOKUP(2,1/((貸出リスト!$A$2:$A$9=A2)*(貸出リスト!$B$2:$B$9<>””)),貸出リスト!$B$2:$B$9),””)

これを実際に貼り付けしてみると、おそらく在庫表の機材Aの横に“高科”と出てくると思います。

これができたら残りの機材B~Dにも同じ様に関数を貼り付けます。

これでB列に表示される名前が、貸出リスト内の一番最後に貸出した相手の名前が表示されれば
成功となります。


どこで使うの?

どんな場面で活用するの?という声もあるかと思います。

私の場合は、実際に職場で活用しており、設備の貸出を別の部署へ貸し出すことが
定期的にありますが、使用部署によって取り付ける部品が異なります。
部品の組み換えを貸出先でやってもらえれば良いのですが、動作確認もこちらで行う必要があるので
そうはいきませんでした・・・。

なのでいかにめんどくs負担を減らそうかと考えた末に設備の一覧を見て
今ついている部品が一目でわかれば交換の手間のない設備を選んで渡せばいいじゃないか! となり
今回の様な関数を使う運びとなりました。

最後に

いかがだったでしょうか?
今回は最後に貸出した相手の名前を表示させる。という使い方をしておりますが
もう少し幅広く見ればその会社にあった使用方法も浮かんでくるかと思います。

作業の簡易化、効率化に向けて引き続き取り組んでいきますので今後ともよろしくお願いいたします。

コメント

タイトルとURLをコピーしました