- ベストアンサー
エクセルで数値を検索して値を返す方法
- エクセルのLOOKUP関数を使って、指定した数値を検索し、その値に対応するセルの値を返す方法について教えてください。
- アルファベットの列に連続する数値が入っており、その数値を検索して対応するセルの値を取得する方法について教えてください。
- 数値が連続しているが、一部の数値が欠けている場合に、欠けている数値に対応するセルの値を取得する方法について教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
A列は文字列として入力されているのでしょうか?それならば=LOOKUP("3",A:A,B:B)のような式を使っても良いのでしょうが一般にはVLOOKUP関数を使った方がよいでしょう。 LOOKUP(3,A:A,B:B)ですとA列のデータが昇順で並んでいることが必要ですし、値が無い場合にはその下の数値に対応するデータが表示されることになります。 なお、データが無い場合の処理方法は =IF(COUNTIF(A:A,3)=0,"-",LOOKUP(3,A:A,B:B)) より望ましい式は =IF(COUNTIF(A:A,3)=0,"-",VLOOKUP(3,A;B,2,FALSE))
その他の回答 (3)
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! 横からおじゃまします。 >VLOOKUP(3,A;B,2,FALSE) >のA;Bの部分の意味、2の部分の意味が分からないです>< に関してですが・・・ VLOOKUP関数は =VLOOKUP(検査値,範囲,列番号,検索方法) となりますので、 >VLOOKUP(3,A;B,2,FALSE) で説明すると A・B列の範囲で、A列の「3」と一致する2列目(B列)の行を返す! という意味になります。 すなわち質問文通りだと他の方々が回答されていらっしゃる通りで問題なく表示されるはずです。 ただ、 >A列にある『3』を検索し >『3』の行にあるM列の値を返すという式がつくりたいのです とありますので、VLOOKUP関数でも当然対応できますが、 A~M列までを範囲指定する必要があります。 その場合、Excel2007以降のバージョンですと =IFERROR(VLOOKUP(3,A:M,13,FALSE),"-") Excel2003以前のバージョンだと =IF(COUNTIF(A:A,3),VLOOKUP(3,A:M,13,FALSE),"-") となってしまいます。 尚、今回のように列が飛んでいる場合は 2007以降のバージョンの場合 =IFERROR(INDEX(M:M,MATCH(3,A:A,FALSE)),"-") 2003以前の場合 =IF(COUNTIF(A:A,3),INDEX(M:M,MATCH(3,A:A,FALSE)),"-") のように必要のない列は範囲指定しない方法もあります。m(_ _)m
お礼
結果的にはtom04 様の回答を使わせていただきましたが、 質問内容を途中で変更した形になってしまいましたので 詳しく回答して頂き申し訳ありませんが No.2をBAとさせていただきます。 分かりやすくご説明していただきありがとうございました。
- Gaffgarion
- ベストアンサー率45% (45/99)
=IF( ISERROR(VLOOKUP(3, A:B, 2, 0)), "-", VLOOKUP(3, A:B, 2, 0) ) 検査値が文字列ではなく数字なので、「"3"」ではなく「3」としました。
お礼
ありがとうございました
- mt2008
- ベストアンサー率52% (885/1701)
A列に「3」があるかどうかを確認し、ない場合は「-」を表示するようにします。 =IF(COUNTIF(A:A,3)>0,LOOKUP(3,A:A,B:B),"-")
お礼
ありがとうございました。
お礼
望ましい式の VLOOKUP(3,A;B,2,FALSE) のA;Bの部分の意味、2の部分の意味が分からないです>< というのは 実はB列ではなくM列に年代がありそれを反映したいのです A列にある『3』を検索し 『3』の行にあるM列の値を返すという式がつくりたいのです