0より大きい最小値


イギリスの方からメールで質問を受けました。

下図のようなデータから最小値を求めたいのですが、0は除外したいと。要するに0ではない最小値を調べるにはどうしたらいいでしょう?という質問でした。普通にMIN関数を使ったのでは0が返ってしまいますからね。

まず思いつくのはSMALL関数です。SMALL関数は「小さい方から指定した順位」の数値を返す関数です。「0ではない最小値」ということは「2番目に小さい数値」ということですから、=SMALL(A2:A8,2) という式で求められそうです。

しかし、これは0が必ず1つ存在する場合に限られます。もし0が複数あったらどうしましょう。そんなときは、SMALL関数の第2引数「順位」に工夫が必要です。上図の式では「0が1つ」とわかっているので、順位に「2」を指定しました。もし「0が2つ」だったら順位は「3」ですね。ここから次のようなルールがわかります。

0の数 順位
1 2
2 3
: :
n n+1

作成する式は =SMALL(A2:A8,0の個数+1) です。0が何個あるかはCOUNTIF関数でわかりますので、=SMALL(A2:A8,COUNTIF(A2:A8,"0")+1) となります。

これを応用すれば次のように「0より大きい最小値」や、

「70以上の最小値」なども簡単に調べることができます。