XLOOKUP(エックスルックアップ)

XLOOKUP(エックスルックアップ)は、指定した列から検索して同じ行にある値を呼び出します
またSPILL(スピル)で複数の行の範囲を取得することができます
XLOOKUP関数は検索列の左側も取得でき、エラー時の指定もできるので
VLOOKUP関数にINDEX関数やMATCH関数、ISERROR関数、IFERROR関数を含めた検索ができます
・関数XLOOKUP(エックスルックアップ)
・書式=XLOOKUP(検索値,検索範囲,戻り範囲,無い場合,一致モード,検索の型)
・内容指定された範囲の列で特定の値を検索し、指定した列の範囲の対応するセルの値を返します。
使い方(VLOOKUPと同じ結果
=XLOOKUP(B2,B5:B16,C5:C16)

エクセル表サンプル
  A B C D E F
1   本日の担当者         
2   5月29日 高橋 6789 10:00~19:00  
3            
4   日時 担当 内線 受付  
5   5月27日 鈴木 1234 9:00~18:00  
6   5月28日 佐藤 5678 10:00~19:00  
7   5月29日 高橋 6789 10:00~19:00  
8   5月30日 鈴木 1234 9:00~18:00  
9   5月31日 鈴木 1234 9:00~18:00  
10   6月1日 高橋 6789 9:00~18:00  
11   6月2日 鈴木 1234 9:00~18:00  
12   6月3日 鈴木 1234 9:00~18:00  
13   6月4日 佐藤 5678 10:00~19:00  
14   6月5日 佐藤 5678 10:00~19:00  
15   6月6日 高橋 6789 9:00~18:00  
16   6月7日 小林 3456 9:00~18:00  
17            

日時から担当者を検索する場合
=XLOOKUP(B2,B5:B16,C5:C16)

見つからない場合エラーになるのでエラー時に「0」を表示
=XLOOKUP(B2,B5:B16,C5:C16,0)

見つからない場合エラーになるのでエラー時に「見つかりません」と表示
=XLOOKUP(B2,B5:B16,C5:C16,"見つかりません")
(空白にする場合は""、指定しないと見つからないときは#N/Aエラーになります)

見つからない場合に次に大きい近似値を取得
=XLOOKUP(B2,B5:B16,C5:C16,0,1)
0:完全一致
1:見つからない場合に次に大きい近似値を取得
-1:見つからない場合に次に小さい近似値を取得
2:ワイルドカード文字と一致

検索方向上から(VLOOKUP)、または右から(HLOOKUP) =XLOOKUP(B2,B5:B16,C5:C16,0,1,1)

1:先頭から末尾まで検索
-1:末尾から先頭へ検索

VLOOKUPと大きな違い戻り範囲を複数列選択すると複数列取得することができます(スピル機能)
日時から担当者を検索する場合の戻り値を「C5:E16」とすることでD列とE列も取得します
=XLOOKUP(B2,B5:B16,C5:E16)


結果がエラーになる、日時を呼び出せない場合

3通りが考えられます
・指定日時の担当を呼び出す場合
=XLOOKUP(検索値,検索範囲,戻り範囲,検索の型)
=XLOOKUP("8月18日",B5:B16,C5:C16,0)

1つ目:範囲の日時が文字列で入力されている場合
検索値は「"8月18日"」と直接指定した場合「8月18日」という数字と漢字の文字列を探します 範囲の日時も文字列で入力されていれば呼び出せますが、通常セルにある日時はシリアル値として認識されます

範囲の日時:「8月18日」シリアル値「43695」
検索値:「"8月18日"」文字列
文字列の「8月18日」を探してもシリアル値「43695」とは一致しません
対応策:検索値の8月18日をシリアル値に変換します
=XLOOKUP(VALUE("8月18日"),B5:B16,C5:C16,0)
※(検索値の年号を省略すると今年になります)

2つ目:日時をセルで指定した場合はシリアル値になりますが
何かの表や去年から使いまわして日付をコピーした場合
「8月18日」が実は「2017年8月18日」など今年ではない時は見た目は一緒でも中身は「2017年8月18日」と「2018年8月18日」なので一致しません
対応策:セルをクリックして見ると年号も表示されるので今年に直します

また検索している関数がTODAYやNOWの場合
TODAYもNOWも表示を日付にすれば「5月29日」ですが
シリアル値が違うので一致しません
=NOW()  43980.226782407
=TODAY() 43980
NOW()は小数点以下に時間を表示しています
今日を検索するにはNOW()ではなくTODAY()を使います

3つ目:スピルの結果範囲内に何かが入力されている
この場合セルに「#SPILL!」と表示されます
上記のサンプルで
セルB2
=XLOOKUP(B2,B5:B16,C5:E16)
とした場合
戻り値の範囲が「C5:E16」とC列~E列を指定しているのでセルD2とE2には自動で数式が入ります
「#SPILL!」と表示されている場合は戻り範囲に何か入力されていないか、入力されていれば削除するかそのセルに含まないように戻り範囲を変更します

検索範囲戻り範囲を横を指定することでHLOOKUPと同じ使い方もできます
「XLOOKUP」の登場で「VLOOKUP」「HLOOKUP」を使うことは少なくなるでしょう

表からの抽出などで「SEARCH」「INDEX」「MATCH」「ISERROR」「IFERROR」などを組み合わせなくても「XLOOKUP」1つで簡単に抽出できるようになりました

「XLOOKUP」はかなり役に立つ関数なので使いこなせるようになると便利になります

VLOOKUPTOP
(C) 2001-2020 Digital World