[[20100525223446]] 『INDEXとMATCHで検索してますが、昇順にしなくても』(通りすがり) ページの最後に飛ぶ

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

 

『INDEXとMATCHで検索してますが、昇順にしなくても良い方法は?』(通りすがり)
 現在、INDEXとMATCHで下記、検索をしていますが、
 最小値を表示してしまいます。昇順に並べなくてもすむ方法はないでしょうか?

 A   B     C   D   E
 1	2	3	4	5
 30	20	11	12	13

 =INDEX(A1:E1,MATCH(20,A2:E2,1))	

 これで、2行目に20以下の数字があれば、E列の5を表示して
 しまうのですが、B列2を表示する方法はないのでしょうか?

 よろしくお願いいたします。			


 こんなこと?

 =INDEX(A1:E1,MATCH(20,A2:E2,0))

いえ、20以下です。0だったら、完全一致のため不可です。
 =INDEX(A1:E1,MATCH(21,A2:E2,1))で、2を表示したいのです。

 こういうこと?

 =INDEX(A1:E1,MATCH(1,INDEX((A2:E2<=20)*1,0),0))

 (sky)


 いえ、これだったら、12でも、12以下にならずに、3を表示するため不可です。

 =INDEX(A1:E1,MATCH(1,INDEX((A2:E2<=12)*1,0),0))でも、4を表示したいのです。
20でも、2を表示したいのです。


 =INDEX($A$1:$E$1,MATCH(MAX(INDEX(($A$2:$E$2<=20)*$A$2:$E$2,)),$A$2:$E$2,0))   (NB)

=INDEX($A$1:$E$1,MATCH(SMALL(INDEX(($A$2:$E$2<検索値)*10^10+$A$2:$E$2,),1),$A$2:$E$2,0))

こんな感じでしょうか。30より大きい数値だとエラーになりますが。

(yabeetsu)


 2行めに同じ数値があったら駄目だけど。
 あと、INDEXもMATCHも使ってないけど。

 =SUMPRODUCT(A1:E1*(A2:E2=MAX(A2:E2*(A2:E2<=G1))))

 追記
  この式はG1に検索したい値が入ってる場合だよ。
  もし、20固定だったらG1を20に置き換えてね。

 (春日野馨)

 =MOD(MAX(INDEX(($A$2:$E$2<=20)*$A$2:$E$2+$A$1:$E$1/10000,)),1)*10000     (NB)

11以下⇒3
12以下⇒4
13以下⇒5
20以下⇒2
30以下⇒1
を表示。
たとえば、10なら3、12.5なら5ということかと思って上記の式を考えました。

他の皆様の数式だと、このような中間値はそれぞれ違う数値が返るので、私の早とちりだったらすみません。

(yabeetsu)


 >これで、2行目に20以下の数字があれば
 ってとこから2行めの20以下の最大値に対応する1行めの値って判断したよ。

 あと、
 =INDEX(A1:E1,MATCH(20,A2:E2,1))
 の式で2行めが昇順に並んでいたら目的の値が求められるってとこも判断の根拠になるよ。
 (春日野馨)

春日野馨さん、おっしゃるとおりですね。ありがとうございます。
(yabeetsu)

コメント返信:

[ 一覧(最新更新順) ]


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