EXCELで最初に出てくる指定値以上(以下)の条件を満たす行を取得

エクセルであるセルの範囲で条件を満たす一番上の行を取得する方法について、ちょっとつまづいたのでメモ。

★前置き
MATCHに同値であるものを探すオプションがあり、以上や以下が指定できるため、解決と思っていた。

しかし、MATCHはソートされていることを前提としている。
■参考
MATCH関数(Microsoftサポート)

つまり、以上、や以下でなく同値であるものを探す場合や、探査する列がソートされている場合はMATCHを利用するだけでよいが、
範囲内の条件を満たす、一番上の行を取得といった動作はしないのだ。
※MATCHで以上を指定すると、条件を満たすいずれかの行をとってきているようだ。二分探索とも違うし、アルゴリズムは不明。
※Microソフトがソートしろといっているからソートしないで利用すれば、よくわらかない動きをしてもしょーがない。

今回はソートを行わずに条件を満たす最初の行を取得したい。

★解決策
配列数式を利用する。

=MIN(IF([探索する範囲と条件],ROW([探索する範囲の行数])))

探索する範囲と条件 : A1:A10>100 など
探索する範囲の行数 : (A1~A10を探索するなら)1:10

気をつける点は・・・
セルの中身を確定する際にShift+Ctrl+Enterで確定させる。(ちゃんと確定させると入力した内容に中括弧がつく)
配列数式を利用する際は必要な使い方らしい。わかりにくい。
ただエンターを押してしまうと一番上の数値(配列としてみたときの最初の値)が表示されてしまう。

エクセルを利用する場面はなかなか無いけれど、仕事上どうしても使わないといけないときの忘却録

コメントを残す

メールアドレスが公開されることはありません。