表の一番下のデータを取得するために、INDEX関数とCOUNTA関数を使う方法と、INDIRECT関数とCOUNTA関数を使う方法をご紹介しました。
表の一番下のデータを取得する方法は、他にもありますのでご紹介しておきます。
LOOKUP関数を利用する方法です。
※B列の一番下のデータを取得してE1セルに表示する例
E1セルに
「=LOOKUP(10^10,B:B)」
という数式を入力する
▼サンプルファイル(003450.xls 24KByte)ダウンロード
LOOKUP関数は、本来、データを昇順に並べておいて、第1引数に指定した値を、第2引数で指定された複数のデータから探して、検索値に一致するか、検索値未満で一番大きい値をみつけてくる関数です。
しかし、第2引数に指定されているデータのどれよりも大きな値を検索するような指定を行うと、データの並びの一番最後、すなわち一番下か一番右のデータを取得するようになっています。
「=LOOKUP(10^10,B:B)」という数式の第1引数「10^10」は、10の10乗、「10,000,000,000」という値です。
第2引数「B:B」すなわちB列には、こんな大きな値はないため、B列の一番下の値を返してくるのです。
誰がはじめに見つけたのかわかりませんが、Excelを使いこんでいる方の間では結構有名な、「裏ワザ」といっていい方法です。
「裏ワザ」という言葉は、こういうときに使う言葉のはずですよね。本来の使い方とは違う使い方をするようなときなどに。
本来の使い方で、知ってる人がちょっと少ない使い方というのは、「裏ワザ」でもなんでもなくて、ただあまり知られていない「表ワザ」なだだけで。。
Excelには今回ご紹介しているLOOKUP関数の他にも、表引き系の関数があります。
それら表引き系の関数でデータを昇順に並べておくことが要件になっているもの(VLOOKUP関数の第4引数に「TRUE」を指定したときや、MATCH関数の第3引数に「1」を指定したようなとき)は、今回のLOOKUP関数と同じ動きをします。
ところで、
この方法は、一部のExcelユーザーにとっては有名なものなのですが、将来的には注意も必要かもしれないと、私個人はちょっと思っています。
この方法は、LOOKUP関数などの表引き系関数の内部で現在採用されているアルゴリズムが、ご紹介したような引数を指定したときに表の一番下のデータを取得してくるように、たまたまなっているために使える、「裏仕様」「裏ワザ」的なものに思えるからです。
この方法を紹介しているようなMicrosoftの公式な資料を、私は見た記憶がありません。
例えば将来、どこかの数学者とかプログラマが、ものすごく高速な検索アルゴリズムを考えついて、Excelの表引き系関数でそのアルゴリズムを採用したときには、今回ご紹介したような使い方をしたときにまったく別の値を返すようになって、使えなくなってしまう可能性は否定できないと思っています。
ですから、Excelの大きなバージョンアップがあったときなどにはこの方法で表の一番下のデータが取得できるのか、検証しておく必要はあるように感じます。
今回のLOOKUP関数を使った方法を使う際は、そのこともご記憶ください。(まあ、非常に有名なやり方なので、もし使えなくなったときには、あちこちで騒ぐ方が出てきて、対策などもすぐ知られるようになるとは思いますが。)
もし、今回ご紹介した方法を公式に、裏ワザではなく表ワザであることを認めている、Microsoftの技術文書をご存じの方がいらっしゃれば、是非教えてください。
- Newer:ウィンドウを最小化するショートカットキー−Windowsキー+↓キー
- Older:Office2007の2種類のボタン
Home » Excel(エクセル)の関数・数式の使い方 » 検索・行列 » 一番下のデータを取得する−LOOKUP関数