XLOOKUP
XLOOKUP関数は、指定した値を範囲内で検索し、別の列の同じ行にある値を返します。
XLOOKUP(検索値, 検索範囲, 返す範囲, 見つからない場合, 一致タイプ, 検索タイプ)
検索範囲: 検索するセル。
返す範囲: 返すセル。
見つからない場合: 一致が見つからない場合の表示メッセージを指定する引数(オプション)。
一致タイプ: 検索する一致のタイプを指定する引数(オプション)。
完全または次の最小(-1): 一致するものがない場合、エラーを返します。
完全一致(0または省略): 正確に一致するものがない場合、エラーを返します。
完全または次の最大(1): 一致するものがない場合、エラーを返します。
ワイルドカード(2): *、?、および~には特定の意味があります。XLOOKUPで「ワイルドカード」を使用する場合、REGEXのみ使用できます。
検索タイプ: 範囲の検索順序を指定する引数(オプション)。
2進の降順(-2): 範囲を降順で並べ替える必要がある二分探索。降順で並べ替えられていない場合はエラーが返されます。
最後から最初へ(-1): 範囲を最後から最初に向かって検索します。
最初から最後へ(1または省略): 範囲を最初から最後に向かって検索します。
2進の昇順(2): 範囲を昇順で並べ替える必要がある二分探索。昇順で並べ替えられていない場合はエラーが返されます。
参考
「検索範囲」または「返す範囲」のいずれかで複数の範囲を参照する場合(「B」など)、ヘッダとフッタは自動的に無視されます。
配列から結果を返すには、XLOOKUPでINDEXを使用します。
例 |
---|
下の「製品」というタイトルの表には、製品と属性(サイズや価格など)がリストされています: |
A | B | C | D | E | |
---|---|---|---|---|---|
1 | 製品 | 長さ (cm) | 幅 (cm) | 重さ (kg) | Price |
2 | 製品 1 | 16 | 17 | 10 | $82.00 |
3 | 製品 2 | 16 | 20 | 18 | $77.00 |
4 | 製品 3 | 11 | 11 | 15 | $88.00 |
5 | 製品 4 | 15 | 16 | 20 | $63.00 |
XLOOKUPを使用して検索する |
---|
XLOOKUPを使用して、最初に製品名、次に返したい値が入っている列を指定すると関連する値が返される数式をスプレッドシートに挿入できます。例えば、上の表の「製品 1」の幅を返したい場合は、次の数式を使用でき、これにより17 cmが返されます: この数式では、以下の引数が使用されています:
|
「見つからない場合」の文字列を設定する |
---|
特定の製品の長さを検索して、それに一致する幅、また一致が見つからない場合は文字列を返したい場合は、次の数式を使用でき、これにより「一致なし」が返されます: この数式では、「見つからない場合」引数を使用して、より具体的な検索を行います:
|
次の最近似値を探す |
---|
XLOOKUPでは、特定の値やそれに近い値に基づいて、より広範な検索を行うこともできます。上の数式の「一致タイプ」を変更すると、13 cmの長さに一致する幅、または次の最小値を返すことができます。下の数式は、11 cmの幅を返します: この数式では、引数は上の例と同じですが、「一致タイプ」に別の値を使用して表の検索方法を変更している点が異なります:
|
検索順序を変更する |
---|
場合によっては、XLOOKUPでの表の検索順序を変更すると役立つことがあります。例えば、上の表では16 cmの製品が2つあるため、「検索値」と「検索範囲」を使用して「長さ」列で16 cmを検索すると、一致候補が2件あります。次のような数式を使用すると検索順序を設定でき、これにより20 cmが返されます: この数式では、「検索タイプ」引数を使用して、XLOOKUPが表で一致を検索する順序を設定しています:
|
ほかの関数と共にXLOOKUPを使用する |
---|
XLOOKUPは、SUMなど、ほかの関数と共に使用することもできます。例えば、下のような数式を使用して、製品 1、2、3の価格の合計である$247を返すことができます: この例では、最初のXLOOKUPで「製品 1」の価格を検索し、2番目のXLOOKUPで「製品 3」の価格を検索しています。2つのXLOOKUP関数の間のコロン(:)は、SUMで「製品 1」と「製品 3」の合計価格だけでなく、その間にあるすべての値も返す必要があることを示します。 |
下の数式では、REGEXと共にXLOOKUPを使用して、幅が「2」で始まる最初の製品である「製品 2」を返します: この例では、REGEX関数でワイルドカードを利用するために、「一致タイプ」に「ワイルドカード(2)」を使用しています。 |
その他の例 |
---|
次のような表があるとします: |
A | B | C | |
---|---|---|---|
1 | 名前 | 年齢 | 給与 |
2 | Amy | 35 | 71000 |
3 | Matthew | 27 | 81000 |
4 | Chloe | 42 | 86000 |
5 | Sophia | 51 | 66000 |
6 | Kenneth | 28 | 52000 |
7 | Tom | 49 | 62000 |
8 | Aaron | 63 | 89000 |
9 | Mary | 22 | 34000 |
10 | Alice | 29 | 52000 |
11 | Brian | 35 | 52500 |
「=XLOOKUP(49,B2:B11,C2:C11)」は「62000」を返します。これは、年齢が49である最初の社員の給与です。 「=XLOOKUP(60000,C2:C11,B2:B11,"一致なし")」は「一致なし」を返します。給与が$60,000の社員がいないためです。 「=XLOOKUP(REGEX("^C.*"), A2:A11, B2:B11, FALSE, 2)」は「42」を返します。これは、指定された範囲内で名前が「C」で始まる最初の社員である「Chloe」の年齢です。 「=INDEX(XLOOKUP(A2,A2:A11,B2:C11),2)」は、XLOOKUPで返される配列内の2番目の値である「71000」を返します。 |