[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VLOOKUPで重複データの最新を拾う方法』(ひで)
A B C D
1月 101 鈴木 りんご
1月 102 佐藤 みかん
2月 103 田中 ぶどう
3月 101 鈴木 もも
3月 104 井上 すいか
上記をVLOOKUPでB列を検索値としてデータを拾うとき、該当が複数あった場合、一番最初に引っかかったものが抽出されると思いますが、それを最後のものにすることは可能でしょうか。
(例として、101が重複検索値なので、「りんご」ではなく「もも」を持ってきたい)
できるのならば、新たに作業列を加えたりせずに実装したいです。
なぜ今回のような実装を希望しているかというと、
実際に管理しているものは営業の成績なのですが、一度取り下げたものもログとして載せたままにしているからです。
そして、再度申請をあげたときに、B列の通し番号は案件の管理番号なので、同じものになるからです。
単純なVLOOKUP以外にも、何か良い案がありましたら、ご教授くださると幸いです。
よろしくお願い致します。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
検索値がF1セルだとして
=IFERROR(LOOKUP(1,0/($B$1:$B$100=$F$1),$D$1:$D$100),"")
訂正) =IFERROR(LOOKUP(1,0/($B$1:$B$100=F1),$D$1:$D$100),"") ~~ こういうこと? (笑) 2018/06/27(水) 09:21
一つ質問なのですが、LOOKUPの引数は順に、「検索値」「検索範囲」「戻り値」だと思うのですが、
今回の実装での、検索値と検索範囲で一番最後の値を一意で指定できている仕組みが分かりません。
もしよろしければ、どのような理屈で指定しているのか教えていただけると、今後の参考になります。
よろしくお願い致します。
(ひで) 2018/06/27(水) 11:08
作業列(E列)を使って説明します。
A B C D E F G 1 1月 101 鈴木 りんご 0 101 もも 2 1月 102 佐藤 みかん #DIV/0! 3 2月 103 田中 ぶどう #DIV/0! 4 3月 101 鈴木 もも 0 5 3月 104 井上 すいか #DIV/0!
E1 =0/(B1=$F$1) 下コピー
B列とF1セルの番号が同じなら「0」、違っていたらエラーになる。 =0/TRUE → 0 =0/FALSE → #DIV/0!
E列の最後の「0」を検索すれば、それが条件と一致する最後の行 ↓ LOOKUPの検査値を、範囲内のどの数値よりも大きな値にすると最後の数値を検索する ↓ ~~~~~~~~~~~~~~~~~~~~~~ E列の数値は「0」しかないので、それよりも大きな値「1」を検査値にする
=LOOKUP(1,E1:E100,D1:D100)
E列の最後の「0」と同じ行のD列の値が返ります。
これを作業列を使わずにやると
=LOOKUP(1,0/(B1:B100=F1),D1:D100)
以上です (笑) 2018/06/27(水) 11:52
波戦を引いてくださった箇所が重要な部分ですね。
とても参考になりました。
改めて、ありがとうございました。
(ひで) 2018/06/28(木) 08:26
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.