VLOOKUP(ブイルックアップ)関数は、指定された範囲の左端の列で特定の値を検索し、範囲内の対応するセルの値を返します。
=VLOOKUP(検索値,範囲,列番号,検索の型)
検索値:検索する値またはセルを指定
範囲:検索する列を左(1列目)に範囲を指定します
列番号:検索値の列から何列目かを指定
検索の型:「TRUE」「1」「省略」近似値を取得。「FALSE」「0」完全一致を取得
検索の型の「1」と「0」
「1」または「省略」した場合検索値は列をすべて検索して近似値を返します
「0」または「FALSE」の場合、検索する列を上から検索して一致したらそれ以降は検索しません。同じ結果があっても上にある行が選ばれます
使い方
=VLOOKUP(F1,B3:E14,2,0)
※注意:検索値が複数ある場合
検索の型0の場合:
範囲内を上から検索して合致した値を見つけるとそれ以上探しませんので最初に見つけた値が呼び出されます。一致したセルが無い場合は「#N/A」エラーになります
検索の型1の場合:
範囲内のすべて検索して同じ検索値があると上書きされ最後の値が呼び出され、無いと近似値(小さい値)が選ばれます。近似値(小さい値)が無い場合は「#N/A」エラーになります
「#N/A」エラーを表示したくない場合、または指定の文字を出す場合
IFERROR(テストする値,エラーの時の値)関数を使います
=IFERROR(VLOOKUP(F1,B:E,4,0), "")
エラーの時の値はダブルクォーテーションで囲う必要があります
空白の場合:「""」
文字入力:「"検索値が見つかりません"」
※結果がエラーになる、日時を呼び出せない場合
2通りが考えられます
・指定日時の担当を呼び出す場合
=VLOOKUP(検索値,範囲,列番号,検索の型)
=VLOOKUP("8月18日",B3:E14,2,0)
1つ目:範囲の日時が文字列で入力されている場合
検索値は「"8月18日"」と直接指定した場合「8月18日」という数字と漢字の文字列を探します
範囲の日時も文字列で入力されていれば呼び出せますが、通常セルにある日時はシリアル値として認識されます
範囲の日時:「8月18日」シリアル値「43695」
検索値:「"8月18日"」文字列
文字列の「8月18日」を探してもシリアル値「43695」とは一致しません
対応策:検索値の8月18日をシリアル値に変換します
=VLOOKUP(VALUE("8月18日"),B3:E14,2,0)
※(検索値の年号を省略すると今年になります)
2つ目:日時をセルで指定した場合はシリアル値になりますが
何かの表や去年から使いまわして日付をコピーした場合
「8月18日」が実は「2017年8月18日」など今年ではない時は見た目は一緒でも中身は「2017年8月18日」と「2018年8月18日」なので一致しません
対応策:セルをクリックして見ると年号も表示されるので今年に直します
また検索している関数がTODAYやNOWの場合
TODAYもNOWも表示を日付にすれば「11月21日」ですが
シリアル値が違うので一致しません
=NOW() 45617.798680556
=TODAY() 45617
NOW()は小数点以下に時間を表示しています
今日を検索するにはNOW()ではなくTODAY()を使います