目次
ExcelのLOOKUP関数のベクトル形式と配列形式を説明し、ExcelでのLOOKUPの典型的な使い方と自明でない使い方を数式例で紹介します。
Excelユーザーなら誰でも一度は聞く、よくある質問の1つがこれです: " あるシートの値を調べて、それに一致する値を別のシートに引き出すにはどうしたらよいですか? 「もちろん、完全一致ではなく最も近いものを探す場合、列の縦方向や行の横方向を検索する場合、1つまたは複数の条件を評価する場合など、基本シナリオにはさまざまなバリエーションがあります。
Microsoft Excelには、さまざまな検索方法がありますが、ここでは、最も単純な縦方向と横方向の検索を行うための関数を紹介します。 簡単に推測できるように、LOOKUP関数のことです。
Excel LOOKUP関数 - 構文と使い方
ExcelのLOOKUP関数は、ある列または行の値を検索し、それに一致する別の列または行の同じ位置の値を返すという、最も基本的な機能を備えています。
ExcelのLOOKUPには、2つの形式があります。 ベクター と アレイ 以下、それぞれの形式について個別に説明します。
Excel LOOKUP関数 - ベクトル形式
このような状況の中で ベクトル したがって、LOOKUPのベクトル形式は、1行または1列のデータから指定された値を検索し、別の行または列の同じ位置から値を取得するために使用されます。
ベクターLookupの構文は以下の通りです。
LOOKUP(lookup_value、lookup_vector、[result_vector])どこで
- ルックアップ値 (必須) - 検索する値。 数値、テキスト、TRUEまたはFALSEの論理値、または検索値を含むセルへの参照であることができます。
- ルックアップ_ベクター (必須) - 検索対象となる1行または1列の範囲。 でソートされている必要があります。 しょうじゅんれい .
- 結果_ベクター (オプション) - 結果を返したい1行または1列の範囲 - ルックアップ値と同じ位置の値。 結果_ベクター でなければなりません。 同形 かわりに ルックアップレンジ 省略した場合、結果は ルックアップ_ベクター .
次の例は、2つの簡単なルックアップ式の動作を示しています。
縦型Lookup式 - 1列の範囲を検索する
例えば、D 列に販売者のリスト (D2:D5) があり、E 列に販売した製品 (E2:E5) があるとします。 ユーザーが B2 に販売者の名前を入力し、B3 に対応する製品を引き出す数式が必要なダッシュボードを作成します。 この作業は、次の数式で簡単に行うことができます。
=lookup(b2,d2:d5,e2:e5)
このスクリーンショットをご覧いただくと、よりよくご理解いただけると思います。
横並び検索式 - 1行の範囲を検索する
ソースデータが水平レイアウトの場合、つまり、項目が列ではなく行に存在する場合、1行の範囲を ルックアップ_ベクター と 結果ベクトル の引数、こんな感じです。
=lookup(b2,e1:h1,e2:h2)
このチュートリアルの後半では、より複雑なタスクを解決するExcel Lookupの例をいくつか紹介します。 それまでの間、以下の簡単な事実を覚えておくと、起こりうる落とし穴を回避し、よくあるエラーを防ぐことができます。
Excel LOOKUPのベクトル形式について知っておくべき5つのこと
- の値 ルックアップ_ベクター で並べる必要があります。 しょうじゅんれい そうでない場合、Excelの検索式はエラーまたは不正確な結果を返す可能性があります。 非整理データ で、INDEX MATCH または OFFSET MATCH のいずれかを使用します。
- ルックアップ_ベクター と 結果ベクトル でなければなりません。 一列 または 一段落 の範囲である。
- エクセルのLOOKUP関数は ケースインセンシティブ 大文字と小文字の区別はありません。
- ExcelのLOOKUPは、以下の基準で動作します。 近似一致 より正確には、Lookup式はまず完全一致を検索し、正確に検索できない場合は さいしょうげんち の中で最大の値である。 ルックアップ_ベクター 以下であること ルックアップバリュー .
例えば、ルックアップ値が "5 "であれば、まずそれを検索し、"5 "が見つからなければ "4 "を検索し、"4 "が見つからなければ "3 "を検索し、...というように計算式は検索されることになります。
- もし ルックアップバリュー でございます より小さい の最小値よりも小さい。 ルックアップ_ベクター Excel LOOKUP は、#N/A エラーを返します。
Excel LOOKUP関数 - 配列形式
LOOKUP関数の配列形式は、配列の最初の列または行から指定された値を検索し、配列の最後の列または行から同じ位置の値を取得します。
配列Lookupには2つの引数があり、どちらも必須です。
LOOKUP(lookup_value,配列)どこで
- ルックアップ値 - 配列から検索する値。
- アレイ - ルックアップ値を検索するセル範囲。 配列の最初の列または行(VルックアップかHルックアップかによる)の値は、昇順にソートされている必要があります。 大文字と小文字は同等と見なします。
たとえば、販売者の名前が配列の最初のカラム (カラム A) にあり、注文日が配列の最後のカラム (カラム C) にある場合、次の式を使用して名前を検索し、一致する日付を取得できます。
=lookup(b2,d2:f5)
注意:ExcelのLOOKUP関数の配列形式は、Excelの配列数式と混同してはいけません。 LOOKUPは配列で操作しますが、通常の数式であり、Enterキーを押すことで通常の方法で完了します。
ExcelのLOOKUPの配列形式について知っておくべき4つのこと
- もし 勢揃い 持つ 行数より列数 または同じ数の列と行がある場合、ルックアップ式は最初の列を検索します(水平ルックアップ)。
- もし 勢揃い 持つ 列数より多い ExcelのLOOKUPは、1行目を検索します(垂直検索)。
- 数式がルックアップ値を見つけられなかった場合、そのルックアップ値は 最大値 よりも小さいか等しい配列で ルックアップバリュー .
- もし ルックアップ値が小さくなる が配列の最初の列または行の最小値より小さい場合 (配列の寸法による)、Lookup 式は #N/A エラーを返します。
重要なお知らせ ExcelのLOOKUP配列形式は機能が限定されているため、使用はお勧めしません。 代わりに、縦方向と横方向のルックアップを行うための改良版であるVLOOKUP関数またはHLOOKUP関数をそれぞれ使用することができます。
ExcelでLOOKUP関数を使う方法 - 計算式の例
Excelにはもっと強力な検索・照合関数がありますが(これは次回のチュートリアルのテーマです)、LOOKUPは多くの場面で便利です。 以下の数式はすべて、Excel LOOKUPのベクトル形式を使用していることに注意してください。
列の最後の空白でないセルで値を検索する
動的に入力されるデータの列がある場合、最も新しく追加された項目、つまり、列の最後の空でないセルを取得したい場合があります。 この場合、次の一般的な数式を使用します。
LOOKUP(2, 1/( 列 ""), 列 )上記の式では、列参照を除くすべての引数が定数であるため、特定の列の最後の値を取得するには、対応する列参照を指定すればよい。 たとえば、A列の最後の非空白セルの値を抽出するには、次の式を使用する。
=lookup(2, 1/(a:a""), a:a)
他の列から最後の値を取得するには、以下のスクリーンショットに示すように列参照を変更します。最初の参照は、空白/非空白セルをチェックする列で、2番目の参照は、値を返す列です。
この式の仕組み
での ルックアップバリュー 引数に 2 または 1 より大きい数を指定します (すぐにその理由がわかるでしょう)。
での ルックアップ_ベクター 引数に、次の式を入れます:1/(A:A"")
- まず、A列の各セルと空の文字列を比較し、空のセルにはTRUEを、空でないセルにはFALSEを返す論理演算A:A""を実行します。 上記の例では、F2の式は次のような配列を返します: {TRUE;TRUE;TRUE;FALSE ...}。
- TRUEを1、FALSEを0として、1と#DIV/0!のエラー(0で割った結果)からなる新しい配列が得られ、この配列を ルックアップ_ベクター この例では、{1;1;1;1;#DIV/0!...}となっています。
さて、この式が列の最後の空でない値を返すのはなぜかというと、次のようなことが考えられるからです。 ルックアップバリュー のどの要素にも一致しない。 ルックアップ_ベクター ExcelのLOOKUPは、近似一致で検索を行うため、正確な値が見つからない場合は、その次に大きな値を検索します。 ルックアップ_ベクター よりも小さい ルックアップバリュー . 私たちの場合 ルックアップバリュー の最大値は2であり ルックアップ_ベクター は1なので、LOOKUPは配列の最後の1、つまり空でない最後のセルにマッチします!
での 結果ベクトル 引数を使用すると、値を返したい列を参照し、ルックアップ式はルックアップ値と同じ位置の値を取得します。
ヒント:ご希望の方は 行番号 で最後の値を保持し、ROW関数で取り出す。 例えば、以下のように。 =lookup(2,1/(a:a""),row(a:a))
行の最後の空白でないセルで値を検索する
ソースデータが列ではなく行でレイアウトされている場合、この数式を使用して最後の空でないセルの値を取得することができます。
LOOKUP(2, 1/( 列 ""), 列 )実はこの式は、前の式を少し変えたものに他ならないのですが、唯一違うのは、列の参照ではなく、行の参照を使うことです。
例えば、1行目の最後の空白でないセルの値を取得するには、次の数式を使用します。
=lookup(2, 1/(1:1""), 1:1)
次の画面は、その結果を示したものです。
行の最後のエントリに関連する値を取得する
例えば、ある行の特定の値の最後のインスタンスに関連する値を取得するために使用することができます。 少しわかりにくいかもしれませんが、次の例で理解しやすいと思います。
A 列に売り手の名前、B 列に月別のデータが格納された表があるとします。 この例では、ある売り手がある月に少なくとも 1 件の取引を成立させた場合、セルには "yes" が含まれます。 目標は、ある行の最後の "yes" エントリーに関連する月を取得することです。
この課題は、以下のLOOKUP式で解くことができる。
=LOOKUP(2, 1/(B2:H2="yes"), $B$1:$H$1)
この式の論理は、基本的に最初の例で説明したものと同じですが、「等しくない」("")の代わりに「等しい」("=")という演算子を使い、列ではなく行で演算する点が異なります。
次のスクリーンショットは、その結果を示しています。
ネストされたIFの代替としてのルックアップ
これまで説明してきたすべてのLookup式で ルックアップ_ベクター と 結果ベクトル しかし、ExcelのLOOKUP関数の構文では、ベクトルを垂直配列定数の形で与えることができ、よりコンパクトで読みやすい数式で入れ子IFの機能を再現することができます。
例えば、A列に略語のリストがあり、「C」は「Completed」、「D」は「Development」、「T」は「Testing」を意味するフルネームに置き換えたいとします。 この作業は、以下の入れ子のIF関数で達成することができます。
=IF(A2="c", "完成", IF(A2="d", "開発", IF(A2="t", "テスト", "")))
または、このLookupの計算式を使って。
=LOOKUP(A2, {"c"; "d"; "t"}, {"完成"; "開発"; "テスト"})
下のスクリーンショットに示すように、どちらの計算式も同じ結果を得ることができます。
注:ExcelのLookup式が正しく動作するためには、以下の値が必要です。 ルックアップ_アレイ は、AからZ、または小さいものから大きいものへとソートする必要があります。
ルックアップテーブルから値を取り出すのであれば、Vlookup関数を埋め込んで ルックアップバリュー 引数でマッチを取得します。
ルックアップ値がセル E2 にあり、ルックアップテーブルが A2:C7 で、対象の列(「ステータス」)がルックアップテーブルの 3 列目であると仮定すると、次の数式で処理が行われます。
=LOOKUP(VLOOKUP(E2, $A$2:$C$7, 3, FALSE), {"c"; "d"; "t"}, {"完了"; "開発"; "テスト"})
下のスクリーンショットに示すように、この数式はルックアップテーブルからプロジェクトの状態を取得し、略語を対応する単語に置き換えています。
ヒント:Office 365のサブスクリプションの一部としてExcel 2016を使用している場合、同様の目的でSWITCH関数を使用することができます。
これらの例でLOOKUP関数がどのように機能するのか、少しはご理解いただけたでしょうか。 数式の理解を深めるために、これらのExcel Lookup例をダウンロードしてください。 次のチュートリアルでは、Excelで検索を行う他のいくつかの方法と、どのLookup式をどの状況で使用するのが最適かを説明します。 読んでくださってありがとうございます!来週のブログでお会いしましょう。