• ベストアンサー

表の抽出方法を教えてください

:::::::::::::::::::::::::::::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を抽出する方法を教えてください

質問者が選んだベストアンサー

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

料金表か何かでしょうか、縦横の検索ですよね。表を     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行目を検索して合致した列の番号が入るようにします。

その他の回答 (2)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

B1セルからE1セルにかけてaaaa,bbbb,cccc,ddddが入力されており、0~1000などの値がA2セルから下方に入力されているとします。 そこで例えばG1セルに1400、G2セルにbbbbと入力したとし、その答えをG3セルに表示させるとしたら次の式をG3セルに入力します。 =INDEX(A:E,ROUNDUP(G1/1000,0)+1,MATCH(G2,A1:E1,0))

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.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

syunra
質問者

お礼

ありがとうございました。 大変助かりました

関連するQ&A

専門家に質問してみよう