Excel VLOOKUPで列の最後の値を検索する(代替案あり)

  • これを共有
Hugh West

ブイルック は,Excel で非常によく使われる関数で,垂直方向のルックアップを参照します。 私たちは,内蔵の ブイルック 関数を使うか、あるいは独自の数式を作成して垂直ルックアップとして動作させ、より動的な条件で値を返すこともできます。 この記事では、列の最後の値を ブイルック をExcelで表示します。

プラクティスブックのダウンロード

この記事の作成に使用したExcelワークブックをダウンロードしてください。

VLOOKUP 列の最後の値.xlsx

VLOOKUP関数を使用して列の最後の値を検索する

まず、ワークブックの紹介をします。 このデータシートでは 3列 10列 一部の販売員の売上金額を対応する日付で表示するようにしました。

このメソッドでは、ある値の最後の出現箇所を見つけるために VLOOKUP関数 . ブイルック は、' 縦型ルックアップ これは、Excel に列の中の特定の値を検索させる関数です。 ここでは、3 つの異なる売上高の ビル では、彼が最後に売った金額を求めると セルG5

ステップス:

➦ 起動する セルG5。 は、以下の式で表されます。

=VLOOKUP(F5,C5:D13,2)

入力 ボタンをクリックすると、彼の売り上げの最後の発生を得ることができます。

しかし ブイルック は、近似モードのソートされていないデータに対しては正しい答えを出しません。 以下の画像を参照してください。

そして、もし私たちが せいごう というのは、vlookupは2値検索を行うので、検索値より大きな値を見つけたら、前の値に戻して表示するためです(下の画像参照)。

そこで、ソートされていないデータの最後の出現箇所を見つけるために、この状況を克服するには、ルックアップ関数やその他の複合式を使用する必要があります。 それらの方法については、次のセクションで説明します。

列の最後の値を検索するためのVLOOKUP関数の代替案

では、列の最後の値を見つけるために、4つの代替方法を適用してみましょう。

方法1:LOOKUP関数を使って列の最後の値を検索する

ここでは、カラムの最後の値を LOOKUP関数 をExcelで作成します。 ルックアップ 関数は、1つの列または行を調べて、2番目の列または行の同じ場所から特定の値を見つけるために使用されます。 ここでは、最後の売上金額を見つけるために セルG4。

ステップス

➦ 起動する セルG4。

➤ 以下に示す数式を入力します。

=lookup(2,1/(d:d""),d:d)

を押してください。 入力 ボタンをクリックすると、最後の値が表示されます。

👉 フォーミュラの内訳

D:D""です。

のセルをチェックします。 D列 が空であるかどうかを返します。

{false;false;false;true;true;true;false......}となります。

1/(D:D""の場合)

を分けました。 1 を意味する。 0 を意味し、TRUEは 1 ということで、結果は以下のようになります。

{#div/0!;#div/0!;#div/0!;1;1;1;1;1;1;1;#div/0!;#div/0!;}.

ルックアップ(2,1/(d:d""),d:d)

ルックアップの値を2にしたのは、ルックアップ関数がカラムを通して2を見つけ、それがエラーになったときに最も近い値1に戻り、その結果を表示するためです。 それは、「-」として返されます。

367

方法2:INDEX関数とMATCH関数を使って、列の最後の値を検索する

ここでは、その組み合わせで INDEX MATCH の機能を持つ。 INDEX機能 は、テーブルまたは範囲内の値または値への参照を返します。 そして MATCH機能 は、範囲内の指定された項目を検索し、その項目の範囲内での相対位置を返すために使用されます。

ステップス

➤ 以下に示す数式を入力します。 セルG5

=index(d5:d13,match(f5,c5:c13,1))

➦ヒット 入力 ボタンをクリックします。

👉 フォーミュラの仕組み

マッチ(f5,c5:c13,1)

こちら MATCH機能 の値を求めるために使用されます。 セルF5 配列から昇順にソートされた項目に対して C5:C13です。 第3引数を'1'にすると、近似的に一致することを示します。 この関数は、次のように返します。

6

実際には、最初のエントリから数えた行番号が表示されています。

インデックス(d5:d13,match(f5,c5:c13,1))

そして INDEX機能 は、それに対応する売上を与える( D5:D13) 配列の前のマッチにしたがって ( C5:C13) として返します。

367

にとっては、実はこれが最後の出来事なのです。 セルF5

方法3:INDEX、MAX、SUMPRODUCT、ROW関数の組み合わせで、列の最後の値を検索する

の組み合わせで、今度はその作業を行います。 INDEX、MAX、SUMPRODUCT、ROWの4種類。 の機能を持つ。 ROW機能 の行番号を見つけることができます。 サンプロダクト は、セルまたは配列の範囲を乗算し、積の合計を返す関数である。 MAX機能 が最大数を求めます。 また INDEX 関数は、テーブルまたは範囲内の値または値への参照を返します。

ステップス

での編集を可能にする ➦。 セルF7

➤ 以下に示す計算式をコピー&ペーストしてください。

=index($c$5:$c$13,sumproduct(max(row($b$5:$b$13)*($e$7=$b$5:$b$13))-4))。

➦ そして、押してください。 入力 ボタンをクリックします。

👉 フォーミュラの仕組み

行($b$5:$b$13)

ROW関数は、as-を返す配列の行番号を表示します。

{5;6;7;8;9;10;11;12;13}

($e$7=$b$5:$b$13)

こちら セルE7 はルックアップ値であり、この式はそれを配列 B5:B13 として返されます。

{false;false;false;true;false;false;true}のいずれかになります。

row($b$5:$b$13)*($e$7=$b$5:$b$13)となります。

実際に対応する行番号を掛け合わせるのは、先の2つの式の掛け算です。 FALSE てだて 0 てだて 1 というわけで、掛け算の後、as-が返されます。

{0;0;0;0;9;0;0;0;13}

max(行($b$5:$b$13)*($e$7=$b$5:$b$13))

があります。 マックス 関数は,前の結果から最大値を求め,それを

13

sumproduct(max(row($b$5:$b$13)*($e$7=$b$5:$b$13))-4)

では、その サンプロダクト 関数は,配列の行番号を求めるために使用されます。 . から始まるので 5位 行目以降になります。 4 が引き算されたので、最後に出現する位置は ビル でございます 9 を返します。

9 .

index($c$5:$c$13,sumproduct(max(row($b$5:$b$13)*($e$7=$b$5:$b$13))-4))である。

INDEX この関数は、最後にマッチした名前の売上を検索するために使用されます。 そして、この関数は次のように返します。

563

の最後の出来事です。 ビル

方法4:Excel VBAを使用して、列内の値の最後の出現を検索する

Excelでコーディングするのが好きな人には、この方法が適しています。 VBAの方法を使っても、前の操作を行うことができます。 どのようにすれば簡単にできるのか、次の手順で見ていきましょう。

そのために、まず固有名詞のドロップダウンバーを作り、次にユーザー定義関数""を新しく作ってみる。 LastItemLookup 「を使用しています。 ブイビーエー を使用することで、最後のオカレンスを見つけることができます。

ステップ1.

➦ まず、メインシートからユニークネームを新しいシートにコピーします。

ステップ2.

そして、メインシートに移動し、新しいセルをアクティブにします。 E5.

➦ クリック データ>データツール>データバリデーション。

A ダイアログボックス が表示されます。

ステップ3.

➦ 選択する リスト から 許可する バーです。

を押してください。 かいほうてき のアイコンが表示されます。 出典 バーです。

ステップ4.

その後、新しいシートに移動し、固有の名前を選択します。

➦ プレス よっしゃー

をご覧ください。 下向き矢印 をクリックすると、そのセルの右側に表示されます。 ここをクリックすると、任意の名前を選択することができるので、いちいち名前を入力する手間が省けます。

という名前の新しい関数を作ってみましょう。 LastItemLookup エクセルで VBAです。

ステップ5.

➦ R 右クリック をクリックすると、シート名が表示されます。

➦ 選択する 表示コード から コンテキストメニュー .

A ブイビーエー のウィンドウが表示されます。

ステップ6.

➤ 以下に示すコードを入力してください。

 Option Explicit Sub vlookup_last() End Sub Function LastItemLookup(Lookupvalue As String, LookupRange As Range, ColumnNumber As Integer) Dim x As Long For x = LookupRange.Columns(1).Cells.Count To 1 Step -1 If Lookupvalue = LookupRange.Cells(x, 1) Then LastItemLookup = LookupRange.Cells(x, ColumnNumber) Exit Function End If Next x End Function 

ステップ7.

➤ そして、再生ボタンを押してコードを実行します。 A ダイアログボックス 名前付き マクロ が表示されます。

➦ クリック 実行 .

新機能が完成しました。

ステップ8.

➦ さて、ワークシートに戻りましょう。

➦ 起動する セルF5

➤ 以下に示す数式を新しい関数で入力する。

=LastItemLookup(E5,B5:C13,2)です。

➦ プレス 入力 の最後の発生結果を取得するために ロン .

これで、セールスマンの名前を選択すると、そのセールスマンに対応する最後の出現頻度の値が表示されます。

結論

私は、上記のすべてのメソッドが列の最後の値をvlookupするのに十分であることを願っています。 コメント欄で何か質問をすること、そして私にフィードバックを与えること自由に感じなさい

Hugh West は、業界で 10 年以上の経験を持つ、非常に経験豊富な Excel トレーナー兼アナリストです。彼は会計と財務の学士号と経営管理の修士号を取得しています。ヒューは教えることに情熱を持っており、理解しやすい独自の教育アプローチを開発しました。彼の Excel に関する専門知識は、世界中の何千人もの学生や専門家がスキルを向上させ、キャリアで優れた成果を上げるのに役立ってきました。 Hugh はブログを通じて知識を世界に共有し、個人や企業が潜在能力を最大限に発揮できるよう無料の Excel チュートリアルとオンライン トレーニングを提供しています。