解決済みの質問
:::::::::::::::::::::::::::::aaaa::::bbbb::::cccc::::dddd
:::0~1000::::::::::::::700:::::800:::::900::::1000
1001~2000:::::::::800:::::900::::1000::::1200
2001~3000::::::1000::::1300::::1600::::1800
上記のような表で1400のbbbbの時に900を抽出する方法を教えてください
投稿日時 - 2010-02-28 00:00:09
料金表か何かでしょうか、縦横の検索ですよね。表を
A B C D E
1 検索 1400 bbbb
2 aaaa bbbb cccc dddd
3 1000 700 800 900 1000
4 2000 800 900 1000 1200
5 3000 1000 1300 1600 1800
・・・と表と準備します。
仮にB1とC1に検索したい値を入れているとして
=VLOOKUP(B2,A:E,MATCH(C2,A2:E2,FALSE),TRUE)
としてみてください。
VLOOKUP関数で縦方向に検索して、VLOOKUP関数の列数のところに
MATCH関数で2行目を検索して合致した列の番号が入るようにします。
投稿日時 - 2010-02-28 08:49:59
0人が「このQ&Aが役に立った」と投票しています
ベストアンサー以外の回答(2件中 1~2件目)
こんにちは!
一例です。
↓の画像で説明させていただきます。
この種の方法は区分け部分の境界をどのようにするかによって方法が変わってきます。
たとえば○以上~△未満 とするか □を超え~▽以下 とするかです。
行の値が整数で小数点以下がない!という前提であればお示しの表そのままでOKなのですが
微妙な数値の境界をどうするか?という場合には
上側の表のように降順に並び替えます。
そして、K2の数式を
=IF(COUNTBLANK(I2:J2)>0,"",INDEX(D2:G4,MATCH(I2,C2:C4,-1),MATCH(J2,D1:G1,0)))
とすれば希望の結果が表示できると思います。
尚余計なお世話かもしれませんが、下側の表の場合は
K8セルに
=IF(COUNTBLANK(I8:J8)>0,"",INDEX(D8:G10,MATCH(I8,A8:A10,1),MATCH(J8,D7:G7,0)))
という数式を入れています。
尚、行の値は3000を超えないものとします。
以上、長々と書きましたが
参考になれば幸いです。m(__)m
投稿日時 - 2010-02-28 08:50:04
お礼
ありがとうございました。
大変助かりました
投稿日時 - 2010-03-01 06:43:47