• ベストアンサー

LOOKUP関数で

こんばんは。 ある範囲内で右の列を基準にして左側のデータを検索したいのですが、 (VLOOKUPの基準が右になったようなもの) LOOKUP関数ではデータが昇順に並ぶ必要があるなど、 制約が多く上手く求める結果が得られません。 元のデータ(昇順になってません)を触ることなく 右側を基準にVLOOKUPした時のような答えを得るにはどうすれば良いでしょうか? 何か別の関数を指定すればよいのでしょうか? 色々考えてみるのですが、どうも上手く行きません。 ご存知の方がいらっしゃればぜひご教示いただけませんでしょうか? よろしくお願いいたします

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

INDEXとMACTH関数の組み合わせかと。 セル範囲A1~C10 検索値D1 検査結果E1 照合範囲C1~C10 求める範囲A1~A10 だとしたら、 =INDEX(A1:C10,MATCH(D1,C1:C10,0),1) と言うのはどうでしょう?

eadgbe
質問者

お礼

すごい!できます! INDEX関数は思いついたのですが、 行指定の方法がさっぱりわからず「これじゃないんだ」と勝手に断念しておりました。 MACTH関数で行を指定するんですね。全然思いつきませんでした。 本当にありがとうございます! 寝る前に見てみて良かった~。ぐっすり寝れそうです

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

質問が長い割りに良く意味がわからないが、多分 検索列が、情報を取ってくる列より右にあるということでしょうか。 VLOOKUPでは使えない状態であることは、有名なことです。 基本は、「情報を取ってくる列より左」へ列挿入して、そこへ検索列とし、値をコピーする、ということだと思います。 ーー VLOOKUP関数はTRUE型とFALSE型があり(第4引数)、FALSE型では、昇順降順に並べておかなくても良いです。誤解無いですか。 ーー 上記の作業(列挿入)をできない事情があれば、MATCH関数で等しい文字列が入っている行(番号数)を見つけて、それを、INDEX、OFFSET関数に利用します。 ーー 既出回答で出ていない、珍しい方法では、配列数式 =INDEX($A$2:$B$7,MIN(IF(A2:A7="c",ROW(A2:A7)-1,"")),2) と入れて、 SHIFT,CTRL,ENTERの3つのキーを同時に押す。 B列のCを探し、見つかった行のA列を探す。 でもできます。 MIN(・・)の配列数式で、cのある第3行目の3を出しています。 (SUMPRODUCTでも、下記例で第3行目が見つけられるかも) 例 データ A列  B列 x a y b z c u d v e w f 結果 z

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

次の方法もあります。 表範囲をA1:C5として、C列を検索して対応するB列のセルを抽出します。 =OFFSET(基準セル,行,列,高さ,幅)とMATCH関数を組み合わせると =OFFSET($A$1,MATCH(検索値,C:C,0)-1,1) ※行は、OFFSET関数が0相対の為、MATCH関数で検出した値から「-1」します。 ※列も同様でA列は0、B列は1、C列は2となります。又、基準がB列の場合、基準より左側は-1,-2で表現します。 ※その他は、HELPを参照して下さい。