• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCELの関数探してます、lookupのような)

Excel関数探し!横の値を出すLOOKUP関数はある?

このQ&Aのポイント
  • Excelで横の値を出すためのLOOKUP関数の探し方を教えてください。
  • A列に1,10,20,30と対応する値がB列にありますが、LOOKUP関数を使って1のときは200、10のときは300、20のときは400のように横の値を出したいです。
  • また、2,3,4,5,6,7,8や11,12,13~19などの検索値で不完全一致の場合にも対応したLOOKUPのような関数があれば教えてください。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.6

 もし、A列の値が、昇順でも降順でもなく、順不同に並んでいる場合には、E1セルに入力する関数を次の様なものとして下さい。 =INDEX($B:$B,MATCH(SMALL($A:$A,COUNTIF($A:$A,"<"&$D1)+1),$A:$A,0))  只、このままでは、検索値を入力するセルが空欄となっている場合や文字列が入力されている場合には、A列に最小値が入力されている行のB列の値(御質問文中の例では200)が表示されてしまいますし、検索値がA列に入力されている値の最大値(御質問文中の例では30)を上回っている場合には、#NUM!エラーとなってしまいますから、これを防ぐためには次の様にします。 =IF(OR($D1="",$D1>MAX($A:$A)),"",INDEX($B:$B,MATCH(SMALL($A:$A,COUNTIF($A:$A,"<"&$D1)+1),$A:$A,0)))  又、D列やE列のセルに対して、セルの切取り・挿入・削除等を行っても、正しい結果が表示される様にするためには、次の様にします。 =IF(OR(INDEX($D:$D,ROW())="",INDEX($D:$D,ROW())>MAX($A:$A)),"",INDEX($B:$B,MATCH(SMALL($A:$A,COUNTIF($A:$A,"<"&INDEX($D:$D,ROW()))+1),$A:$A,0)))

kaniza_dayo
質問者

お礼

すごい!その一言に尽きる。

その他の回答 (5)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.5

 もし、A列の値を、降順ではなく、どうしても昇順に並べなくてはならない場合には、E1セルに入力する関数を次の様なものとして下さい。 =INDEX($B:$B,MATCH(SMALL($A:$A,COUNTIF($A:$A,"<"&$D1)+1),$A:$A))  只、このままでは、検索値を入力するセルが空欄となっている場合や文字列が入力されている場合には、A列に最小値が入力されている行のB列の値(御質問文中の例では200)が表示されてしまいますし、検索値がA列に入力されている値の最大値(御質問文中の例では30)を上回っている場合には、#NUM!エラーとなってしまいますから、これを防ぐためには次の様にします。 =IF(OR($D1="",$D1>MAX($A:$A)),"",INDEX($B:$B,MATCH(SMALL($A:$A,COUNTIF($A:$A,"<"&$D1)+1),$A:$A)))  又、D列やE列のセルに対して、セルの切取り・挿入・削除等を行っても、正しい結果が表示される様にするためには、次の様にします。 =IF(OR(INDEX($D:$D,ROW())="",INDEX($D:$D,ROW())>MAX($A:$A)),"",INDEX($B:$B,MATCH(SMALL($A:$A,COUNTIF($A:$A,"<"&INDEX($D:$D,ROW()))+1),$A:$A)))

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

 何度も申し訳御座いません。  ANo.2において最初に挙げた関数は、そのままでも何ら問題なく正常に動作致しますが、セルの切取り・挿入・削除等を行う事に対応するための工夫が、中途半端に(不完全に)応用されている形となっていて、関数の基本的な考えを理解する際の妨げになるかも知れませんので、基本的な考え方を理解するためには、ANo.2で1番目に挙げた関数を、次のものと差し替えて下さい。 =INDEX($B:$B,MATCH($D1,$A:$A,-1))  そして、ANo.2で2番目に挙げた関数は、次のものと差し替えて下さい。 =IF(OR($D1="",$D1>MAX($A:$A)),"",INDEX($B:$B,MATCH($D1,$A:$A,-1)))  尚、3番目に挙げた関数に関しましては、帝政箇所は御座いません。

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

例えばD列に2,3,4,14・・・のように数値が有るとしたらE1セルには次の式を入力して下方にドラッグコピーします。 =INDEX(B:B,MATCH(D1,A:A,1)+1)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 ANo.1です。  もしう訳御座いません。先程の回答の関数では、検索値がA列の最小値(御質問文中の例では1)よりも小さな値の場合には、#N/Aエラーとなってしまう事に後から気付きました。  それに、少々寝ぼけていた様で、もっと簡単な方法が御座いました。  まず、A列の値を上から順に、1,10,20,30ではなく、30,20,10,1の様に降順に並べ替えて下さい。  そして、E1セルに入力する関数は以下の様なものにして下さい。 =INDEX($B:$B,MATCH(INDEX($D:$D,ROW()),$A:$A,-1))  只、このままでは、検索値を入力するセルが空欄となっている場合には、A列に最小値が入力されている行のB列の値(御質問文中の例では200)が表示されてしまいますし、検索値がA列に入力されている値の最大値(御質問文中の例では30)を上回っている場合には、#N/Aエラーとなってしまいますから、これを防ぐためには次の様にします。 =IF(OR($D1="",$D1>MAX($A:$A)),"",INDEX($B:$B,MATCH(INDEX($D:$D,ROW()),$A:$A,-1)))  又、D列やE列のセルに対して、セルの切取り・挿入・削除等を行っても、正しい結果が表示される様にするためには、次の様にします。 =IF(OR(INDEX($D:$D,ROW())="",INDEX($D:$D,ROW())>MAX($A:$A)),"",INDEX($B:$B,MATCH(INDEX($D:$D,ROW()),$A:$A,-1)))

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 今仮に、A列の値は必ず昇順に並んでいて、2,3,4,5,6,7,8や11,12,13~19などの検査値がD列に並んでいて、検索結果をE列に表示するものとします。  その場合、E1セルに入力する関数の一例は、 =INDEX($B:$B,MATCH($D1,$A:$A)+(COUNTIF($A:$A,$D1)=0)) となります。  只、このままでは、検索値を入力するセルが空欄であったり、検索値がA列に入力されている値の最大値である500を上回っている場合には、#N/Aエラーとなってしまいますから、これを防ぐためには次の様にします。 =INDEX($B:$B,MATCH($D2,$A:$A)+(COUNTIF($A:$A,$D2)=0))  又、D列やE列のセルに対して、セルの切取り・挿入・削除等を行っても、正しい結果が表示される様にするためには、次の様にします。 =IF(OR(INDEX($D:$D,ROW())="",INDEX($D:$D,ROW())>MAX($A:$A)),"",INDEX($B:$B,MATCH(INDEX($D:$D,ROW()),$A:$A)+(COUNTIF($A:$A,INDEX($D:$D,ROW()))=0)))

関連するQ&A

専門家に質問してみよう