イギリスの方からメールで質問を受けました。
下図のようなデータから最小値を求めたいのですが、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以上の最小値」なども簡単に調べることができます。