[[20060830211313]] 『VLOOKUP関数について』(わたし) ページの最後に飛ぶ

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

 

『VLOOKUP関数について』(わたし)
A1に50、A2に100、A3に150と入力し、B1に1、B2に2、B3に3と入力して
範囲をA1〜B3、列番号2で検索値が90の場合90<100なのでB2の2をかえすような
ことは可能でしょうか?
Windows2000 Excel98 です。

 こんなのじゃダメかしら^^;
 
 =VLOOKUP(C1+49,A1:B3,2)
 
 (キリキ)(〃⌒o⌒)b

検索値のセル番地に+49を入れると#N/Aのエラーになるのですが・・
検索値は90に限らずランダムな整数を入力してA1の値<検索値<=A2の値
のときB2の2を返し、A2の値<検索値<=A3の値のときB3の3を返したい
のですが、可能でしょうか?

 >検索値のセル番地に+49を入れると#N/Aのエラーになるのですが・・
 そうでしょうか?
 σ(^o^;)は、こんな感じでやりました。
 
	[A]	[B]	[C]	[D]
[1]	50	1	100	2
[2]	100	2		
[3]	150	3		
 
 C1 に検査値
 D1 =VLOOKUP(C1+49,A1:B3,2)
 
 検査値
 50  : 1
 51  : 2
 100 : 2 
 101 : 3
 
 となりましたが。。。
 (キリキ)(〃⌒o⌒)b

 もっと素直に次のようにしたほうが、すんなりすると思うのですが・・・。
 50ごとという範囲にも制約されないし。(MOCHI)

	[A]	[B]	[C]	[D]
[1]	1	1	100	2
[2]	51	2		
[3]	101	3		
 
 C1 に検査値
 D1 =VLOOKUP(C1,A1:B3,2)


 >A1の値<検索値<=A2の値のときB2の2を返し
という事は、検索値が50の場合には2を、100の場合には3を 返すという事でいいのですね?
A列が昇順に並んでいる事が条件になりますが、キリキさんの表を無断借用してw
=IF(AND(MIN($C1,$A$1:$A$3)=C1,COUNTIF($A$1:$A$3,$C1)=0),"検索値 要確認!",
VLOOKUP(OFFSET($A$1,MATCH($C1,$A$1:$A$3,TRUE),0),$A$1:$B$3,2,FALSE))
改行してます。
(sin)

 意図と矛盾してたので、こっちに替えて下さい。
=IF(OR($C1="",MAX($C1,$A$1:$A$3)=C1),"検索値???",
VLOOKUP(IF($C1<$A$1,50,OFFSET($A$1,MATCH($C1,$A$1:$A$3,TRUE),0)),$A$1:$B$3,2,FALSE))
(sin)

キリキさんsinさんありがとうございます。
キリキさんのをためしたときfalseを消していなかったのでエラーが出たみたいです。
まだ初心者なのでsinさんの高度な関数の意味がわからず残念さと申し訳なさを感じます。
すいません。
さらにキリキさんの検索先セル番地+49でなぜ正しい値が返ってくるのかわかりません。
A1列が昇順であればfalseを入れなくて良いとういことにも関連して、まだわかっていない
ことが多々ありますので一つ一つ勉強します。
有難うございました。


 キリキさんは、しばらくお忙しいらしいので、代理です。
 >検索先セル番地+49でなぜ正しい値が返ってくるのかわかりません。
 ●VLOOKUP関数のヘルプの抜粋ですが、
[検索の型]
検索値と完全に一致する値だけを検索するか、その近似値を含めて検索するかを、論理値で指定します。
TRUE を指定するか省略すると、検索値が見つからない場合に、検索値未満で最も大きい値が使用されますFALSE を指定すると、検索値と完全に一致する値だけが検索され見つからない場合はエラー値 #N/A が返されます。
とあります。今回の式 =VLOOKUP(C1+49,A1:B3,2) では、
検索の型を省略することで、検索値未満で最も大きい値を返したいから省略しています。
 ●上記の『検索値未満で・・・』という部分は、
+49する事で、50の場合は、99となり{50,100,150}では、50を 51の場合は100となり100を見つけ出すという事になります。
 もし、検索値(C1セル)が整数とは限らない場合には、別の方法を提示されたと思います。
仮にC1セルに50.5と入力されると、+49で99.5となり、50を見つける事になりますから・・・。

 また、私の条件の解釈が違っている模様ですので、私が提示している式はポイして下さい。
なにせ、C1セルに100を入力すると、D1は、3 になりますから・・・
※これを求める為に細工してあるだけです。高度とはかけ離れてますし。。。
(sin)

sinさん重ね重ね有難うございます!!
この質問は、昔LOTUSを使っていた時は+49とかfalseとかを入れなくても50<検索値<=100で値が返っていたことに気付かなかったために始まってしまいました。
EXSELのVLOOKUP関数はこれまでピッタリ一致する値を返していると思い込んでいました。完全一致か近似値か、近似値であれば検索値未満で最も大きな値に対応する値を返すというからくりがあるとは!
大変勉強になりました有難うございました!!
(わたし)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.