Documentation/Calc 関数/LOOKUP
TDF LibreOffice Document Liberation Project Community Blogs Weblate Nextcloud Redmine Ask LibreOffice Donate
Function name:
LOOKUP
Category:
Spreadsheet
Summary:
1次元のセル範囲(ベクトルとも呼ばれます)で検索を実行します。 指定された値を順序付けられた検索ベクトル内のエントリと比較し、一致が見つかった場合は、結果ベクトル内の対応するセルの内容を返します。
マッチングプロセスでは、ワイルドカードまたは正規表現を使用できます。 デフォルトでは、大文字と小文字は区別されませんが、正規表現を使用する場合は、大文字と小文字を区別して一致を実行できます。
方向が異なる一次元のインライン配列でも同方向として処理するようになった。(25.2.6 以降) tdf#167134
Syntax:
LOOKUP(検索条件; 検索ベクトル[; 結果ベクトル])
Returns:
結果ベクトル内のセルの内容(指定されている場合)、または検索ベクトルからの値(結果ベクトルが指定されていない場合)を返します。 返されるデータは、コンテキストに応じて数値または非数値のいずれかになります。
Arguments:
検索条件は、文字列(二重引用符で囲む)、数値、ブール値、またはこれらの型のいずれかを含むセルへの参照を指定します。 検索条件は、検索ベクトル内のセルの内容に一致します。
検索ベクトルはセル範囲を指定します。通常は、左上隅のセル参照、コロン(:)、右下隅のセル参照の順に入力します(たとえば、A1:E10)。 また、名前付き範囲またはデータベース範囲の名前を使用して指定するか、インライン配列として渡すこともできます。
検索ベクトルが多次元のセル範囲である場合、LOOKUP はその次元を調べ、次のように処理を進めます:
- 範囲が正方形であるか、または幅よりも大きい場合、LOOKUP は、検索条件を、検索ベクトルの最初の列の内容と照合します。
- この場合、結果ベクトル引数を省略すると、検索ベクトルの最後の列の値が返されます。
- 範囲が高さ方向に広い場合、LOOKUP は、の検索条件をの検索ベクトルの最初の行のコンテンツと照合します。
- この場合、結果ベクトル引数を省略すると、検索ベクトルの最後の行の値が返されます。
検索するベクトルは、後述の #Additional details: セクションで説明するようにソートする必要があります。これにより、LOOKUP は完全一致と不完全一致(ベストフィット)の両方を生成できます。
結果ベクトルは返される値を含むセルの1次元範囲を指定します。 通常、この範囲を定義するには、最初のセルのセル参照、コロン(:)、最後のセル参照の順に入力します(たとえば、A1:A10)。 また、名前付き範囲またはデータベース範囲の名前を使用して指定するか、インライン配列として渡すこともできます。
- 検索ベクトルが期待どおりに順序付けられていない場合、 LOOKUP によって返される結果は予測できません。このような場合、エラーが報告されず、返された結果が無意味であることが明らかでない可能性があります。
- 検索条件が、検索する範囲の左上隅のセルの内容より前にある場合、LOOKUP は #N/A エラー(値を取得できません)を返します。
- 結果ベクトルが多次元のセル範囲である場合、 LOOKUP はパラメータリストにエラーを報告します (エラー:504)。
- 検索ベクトルと結果ベクトルの長さは同じである必要はなく、一方が列ベクトルで、他方が行ベクトルであることが可能です。
- 結果ベクトルがインライン配列であり、一致位置がその長さの範囲外にある場合、LOOKUP は値が使用できないエラー(#N/A)を返します。
- 結果ベクトルがセル範囲であり、一致位置がその長さの範囲外にある場合、検索ベクトルの長さまで自動的に拡張されますが、結果ベクトルの方向に拡張されます。
- 結果ベクトルが単一のセル参照である(したがって暗黙的な方向がない)場合、LOOKUP はそれを列ベクトルとして拡張します。
Additional details:
LOOKUP 関数に固有の詳細
- 検索されるベクトルに同じコンテンツを持つ複数のセルが含まれている場合、LOOKUP は共通の内容を共有するセルの 1つにのみ一致するため、混乱が生じる可能性があります。
- 検索するベクトルは、昇順の数値がアルファベット順のテキスト値の前にくるように並べ替える必要があります。ブール値 FALSE および TRUE は、それぞれ数値 0 および 1 として扱われます。 LOOKUP は、並べ替えられた順序で検索条件が表示される場所を計算します。
- 検索条件と検索ベクトル内のエントリの 1つが完全に一致する場合、その位置を使用して戻り値が決定されます。
- 検索条件と検索ベクトル内のエントリの間に完全に一致するものがない場合、LOOKUP は、検索条件より小さい検索ベクトル内の最大値と一致します。
- 検索ベクトル'引数に多次元のセル範囲を渡す場合は、代わりにCalcのより柔軟な HLOOKUP や VLOOKUP 関数のいずれかを使用することを検討してください。
- ▸ ▸ ▸ (またはmacOSでは ▸ ▸ ▸ )ダイアログの数式のワイルドカード領域で正規表現が有効になっている場合、LOOKUP は、検索条件を正規表現として扱い、完全一致を検索します。
- ▸ ▸ ▸ (またはmacOSでは ▸ ▸ ▸ )ダイアログの数式のワイルドカード領域でワイルドカードが有効になっている場合、LOOKUP は、検索条件をワイルドカードとして扱い、完全一致を検索します。
- ▸ ▸ ▸ (またはmacOSでは ▸ ▸ ▸ )ダイアログの一般的な計算領域で、検索条件 = と <> はセル全体に適用オプションがチェックされている場合、検索条件はセル内のテキスト全体と一致する必要があります。一致しない場合は、テキストの一部のみと一致することがあります。
- ▸ ▸ ▸ (またはmacOSでは ▸ ▸ ▸ )ダイアログの一般的な計算領域で、大文字と小文字を区別するオプションは、LOOKUP の操作には影響しません。
Calc の正規表現に関する一般事項
- 正規表現とは、一致させるテキストのパターンを定義する文字列です。より詳細で一般的な背景情報は、Regular expression ページにあります。
- 正規表現は多くのドメインで広く使用されており、様々な正規表現プロセッサが利用可能です。Calc では、International Components for Unicode (ICU) のオープンソース正規表現パッケージ を採用しています。ICU 正規表現の構文の完全な定義を含む詳細については、Regular Expressions のドキュメントを参照してください。
- さらに、LibreOffice のヘルプシステムは、高水準の 正規表現リスト を提供します。
- Calc の正規表現エンジンは、番号付きキャプチャ グループ をサポートしています。これにより、一致するサブ範囲を識別し、置換テキスト内で使用できます。括弧は、正規表現のコンポーネントをグループ化し、番号付きキャプチャ・グループを作成するために使用されます。キャプチャ グループを置換テキストに挿入するには、"$n" 形式を使用します。ここで、"n" はキャプチャ グループの番号です。
Calc のワイルドカードに関する一般事項
ワイルドカードは、一部の Calc 関数に引数として渡される検索文字列で使用できる特殊文字です。また、検索と置換 ダイアログで検索条件を定義するためにも使用できます。ワイルドカードを使用すると、単一の検索文字列でより高度な検索パラメータを定義できます。
Calc は、現在のアプリケーションの設定に応じて、引数としてワイルドカードまたは正規表現をサポートします。既定では、正規表現ではなくワイルドカードがサポートされます。
ワイルドカードがサポートされていることを確認するには、 数式でワイルドカードを使用する
が選択されているかどうかを確認します。このダイアログを使用して正規表現に切り替えるには、数式で正規表現を使用する
を選択するか、ワイルドカードも正規表現もサポートしないように選択します。
次の表に、Calc でサポートされているワイルドカードを示します。
ワイルドカード | 説明 |
---|---|
? (クエスチョン マーク) |
任意の 1 文字に一致します。たとえば、検索文字列 "b?g" は "bag" および "beg" に一致しますが、"boog" または "mug" には一致しません。 "?" は正確に 1 文字に一致する必要があるため、"bg" にも一致しないことに注意してください。"?" ワイルドカードは、0 文字の一致には対応しません。 |
* (アスタリスク) |
空の文字列を含む任意の文字列と一致します。たとえば、検索文字列 "*cast" は、"cast"、"forecast" および“outcast”と一致しますが、デフォルトの Calc 設定を使用する場合 "forecaster" とは一致しません。 ▸ ▸ ▸ でオプション 検索条件 = と <> はセル全体に適用 が無効になっている場合、"forecaster" は "*cast" の検索文字列を使用し一致させることができます。
|
~ (チルダ) |
チルダ文字の直後に続く疑問符、アスタリスク、または チルダ文字の特別な意味をエスケープします。 例えば、検索文字列 "why~?" は "why?" に一致しますが、 "whys" や "why~s" には一致しません。 |
ワイルドカードの比較では大文字と小文字が区別されないため、 "A?" は "A1" と "a1" の両方に一致します。
これらのワイルドカードは、Calc と Microsoft Excel の両方でサポートされています。したがって、2 つのアプリケーション間の相互運用性が必要な場合は、正規表現ではなくワイルドカードを使用することを選択します。逆に、相互運用性が必要でない場合は、より強力な検索機能を利用できる正規表現の使用を検討してください。
Examples:
次の表は、10人の学生の名前、ID番号、試験の成績を示しています。 この表は受講者の名前のアルファベット順に並べられているため、セルA2:A11のデータは、LOOKUP 関数の呼出しで検索ベクトルとして使用できます。 この単純なテーブルを使用して、LOOKUP の様々な動作を説明します。
A | B | C | |
---|---|---|---|
1 | 名前 | 学生のID番号 | 試験の成績 |
2 | Andrew | 1257 | 32 |
3 | Bethany | 1470 | 80 |
4 | Charles | 1367 | 42 |
5 | David | 1497 | 65 |
6 | Emily | 1730 | 50 |
7 | Ferdinand | 1414 | 41 |
8 | Georgia | 1364 | 17 |
9 | Haley | 1778 | 46 |
10 | Ian | 1769 | 90 |
11 | Jennifer | 1530 | 35 |
Formula | Description | Returns |
---|---|---|
=LOOKUP("Haley"; A2:C11) | 検索ベクトルの引数が多次元のセル範囲(高さが幅より大きい)で、結果ベクトルの引数が省略されています。検索ベクトルの最初の列で文字列 "Haley" が検索され、最後の列の対応する位置からその生徒の試験の成績を返します。数式 =LOOKUP("Haley"; A2:A11; C2:C11) でも、同じ結果が得られます。 |
46 |
=LOOKUP(G2; A2:C11) セル G2 には文字列 "Ailsa" が含まれています(引用符なしで入力)。 |
検索ベクトルの引数は多次元のセル範囲(高さが幅より大きい)で、結果ベクトルの引数は省略されています。検索ベクトルの最初の列で文字列 "Ailsa" が検索されますが、"Ailsa" はアルファベット順でリスト内の最初の名前("Andrew")の前にあるため、エラーを返します。数式 =LOOKUP(G2; A2:A11) でも、同じ結果が得られます。 |
#N/A |
=LOOKUP("Ken"; A2:C11) | 検索ベクトルの引数は多次元のセル範囲(高さが幅より大きい)で、結果ベクトルの引数は省略されています。検索ベクトルの最初の列で文字列 "Ken" が検索されますが、"Ken" がアルファベット順でリスト内の最後の名前("Jennifer")の後にあるため、リスト内の最後の人の試験の成績を返します。数式 =LOOKUP("Ken"; A2:A11; C2:C11) でも、同じ結果が得られます。 |
35 |
=LOOKUP("Evan"; A2:A11) | 検索ベクトルの引数が 1次元のセル範囲で、結果ベクトルの引数が省略されています。検索ベクトルの最初の列で文字列 "Evan" が検索され、ソートされたリストで "Emily" の後、"Ferdinand" の前に"Evan"があるため、文字列 "Emily" を返します。 | Emily |
=LOOKUP("David"; A2:A11; B2:B11) | 検索ベクトルの引数が 1次元のセル範囲で、結果ベクトルの引数が指定されています。この数式は、検索ベクトルで文字列 "David" を検索し、結果ベクトルの対応する位置からその学生のID番号を返します。数式 =LOOKUP("David"; A2:B11) および =LOOKUP("David"; A2:A11; B2:B3) でも、同じ結果が得られます。 |
1497 |
次の表と関連する例では、数値、ブール値、テキスト文字列を含む検索ベクトルを使用しています。
A | B | C | D | E | F | G | H | |
---|---|---|---|---|---|---|---|---|
1 | −1 | FALSE | TRUE | 3 | Cloud | Rain | Raincoat | Sun |
2 | ||||||||
3 | Pos 1 | Pos 2 | Pos 3 | Pos 4 | Pos 5 | Pos 6 | Pos 7 | Pos 8 |
Formula | Description | Returns |
---|---|---|
=LOOKUP(−0.5; A1:H1; A3:H3) | 指定した検索条件が、検索ベクトルの -1 とFALSE (0に相当) の間にあると判断します。LOOKUP は、小さい方の値に一致し、結果ベクトルの対応する値を返します。 | Pos 1 |
=LOOKUP(TRUE; A1:H1; A3:H3) | 指定した検索条件が、検索ベクトル内のセル C1 の値と一致するかどうかを調べます。LOOKUP は、結果ベクトル内の対応する値を返します。 | Pos 3 |
=LOOKUP("Area"; A1:H1; A3:H3) | 指定した検索条件が、検索ベクトル内の他のテキスト文字列よりもアルファベット順で前にあると判断し、#N/A エラーを返します。 | #N/A |
=LOOKUP("^c.*"; A1:H1; A3:H3) 正規表現が有効な場合 |
この関数は、検索ベクトル内の "Cloud" が正規表現 "^c.*" に一致し、結果ベクトル内の対応する値を返します。 | Pos 5 |
=LOOKUP("^ra.*"; A1:H1; A3:H3) 正規表現が有効な場合 |
検索ベクトル内の "Raincoat" が正規表現 "^ra.*" に一致し、結果ベクトル内の対応する値を返します。ただし、(この場合のように)正規表現に一致する項目が複数ある場合は、あまり役に立たないかもしれません。 | Pos 7 |
=LOOKUP("s*"; A1:H1; A3:H3) ワイルドカードが有効な場合 |
この関数は、検索ベクトル内の "Sun" がワイルドカード式 "s*" に一致し、結果ベクトル内の対応する値を返します。 | Pos 8 |
=LOOKUP("ra*"; A1:H1; A3:H3) ワイルドカードが有効な場合 |
検索ベクトル内の "Raincoat" がワイルドカード式 "ra*" に一致し、結果ベクトル内の対応する値を返します。ただし、(この場合のように)ワイルドカード式に一致する項目が複数ある場合は、あまり役に立たないかもしれません。 | Pos 7 |
次の例では、検索ベクトルと結果ベクトルの引数にインライン配列を使用しています。
Formula | Description | Returns |
---|---|---|
=LOOKUP(5; 1, 2, 3, 4, 5, 6, 7, 8, 9, 10; {"Hydrogen", "Helium", "Lithium", "Beryllium", "Boron", "Carbon", "Nitrogen", "Oxygen", "Fluorine", "Neon"}) | 原子番号 5 の元素の名前を返します。 | Boron |
Related LibreOffice functions:
ODF standard:
Related (or similar) Excel functions:
LOOKUP