[[20180627090048]] 『VLOOKUPで重複データの最新を拾う方法』(ひで) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『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.