最終更新日:2013-06-09VLOOKUPを他の関数でやる方法VLOOKUPは便利な関数ですが、以下のような問題点がある場合は、これを使うことができません問題点1.検索列より左側の列を取り出す場合2.検索値が255文字を超える時そこで、他の関数で、これを実現する方法を検討します。方法1=INDEX(範囲,MATCH(検索値,検索範囲,0),列番号)方法2{=IF(MIN(IF(検索範囲=検索値,ROW(検索範囲)-1))=0,"検索値なし",INDEX(範囲,MIN(IF(検索範囲=検索値,ROW(検索範囲)-1)),列番号))}{}は配列数式です、Ctrl+Shift+Enterで入力します。以下の表で検証します。A2、A5、D2には、256文字以上が入力されていますE2=VLOOKUP(D2,$A$2:$B$7,2,FALSE)F2=INDEX($A$2:$B$7,MATCH(D2,$A$2:$A$7,0),2)G2=IF(MIN(IF($A$2:$A$7=D2,ROW($A$2:$A$7)-1))=0,"検索値なし",INDEX($A$2:$B$7,MIN(IF($A$2:$A$7=D2,ROW($A$2:$A$7)-1)),2))Ctrl+Shit+Enterで、{}の配列数式での入力になりますこの結果が上図になります。それぞれに長短があります。方法1範囲と検索範囲が別々に指定できるので、問題点1.は解決します。問題点2.は、依然として解決されていません。方法2範囲と検索範囲が別々に指定できるので、問題点1.は解決します。問題点2.もIFの配列を使う事で解決しています。外側のIFで、存在確認をせずに、{=INDEX($A$2:$B$7,MIN(IF($A$2:$A$7=D2,ROW($A$2:$A$7)-1)),2)}としてしまうと、検索値が無い場合には、先頭行が返されてしまいます。完全一致以外の検索方法が指定できません。問題点1のみなら方法1、問題点2なら方法2を使えば良いでしょう。VLOOKUPを他の関数でやる方法このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。