Excelにおいて、データの最小値を取得するには、MIN関数とMINA関数があります。
(他にもありますが・・・そちらは追々紹介します)
MIN関数とMINA関数を先日取り上げました。
『【MINA関数】使い方と解説 – 最小値 –』で、MINA関数の不可思議な動きを紹介しています。
その内容と重複する部分もありますが、MIN関数ではどういった動きになるのかをお伝えしきれておりませんでした。
ので、
MIN関数とMINA関数の挙動の違いを深掘りできればと思います。
結論から申し上げますと、
MINA関数を使うな!
MIN関数を使え!
です。
Contents
MIN関数とMINA関数の違い
論理値や文字列を、MIN関数は無視するが、MINA関数は対象とする
[関数の挿入]ダイアログに次のように書いています。- 引数の最小値を返します。論理値や文字列も対象となります。
- 引数の最小値を返します。論理値や文字列は無視されます
では、論理値や文字列を「対象にする」とは?「無視する」とは?
下記データを用いて、検証してみましょう。
主に黄色セルに注目してみましょう。
ダイアログに記入されていませんが、論理値や文字列以外の挙動にも要注意ですので、それも確認してみてください。
つまり、隠れたルールが存在します。
MIN関数とMINA関数の結果を比較する
下記がMIN関数とMINA関数の結果の違いです。
行2と行6が違っていますね。
これは、MINA関数が文字列と論理値を数値変換して、最小値の対象範囲に含めるからです。
数値の場合
MIN関数とMINA関数の結果は同じです。
これが『論理値や文字列は無視』の真相です。
文字列の場合
MIN関数とMINA関数の結果が異なります。
MINA関数では、文字列を0と判断し、最小値を算出してしまうようです。
これが『論理値や文字列も対象』の真相です。
これは危険ですね。
論理値の場合
MIN関数とMINA関数の結果が異なります。
さらに、TRUEの場合、FLASEの場合で違います。
MINA関数は論理値を最小値として算出してしまいます。
TRUEの場合は1、FALSEの場合は0として判断しています。
これが『論理値や文字列も対象』の真相です。
これは危険ですね。
エラー値の場合
MIN関数とMINA関数の結果が同じです。
さらに、TRUEの場合、FLASEの場合で違います。
[関数の挿入]ダイアログに記載はありませんでしたが、次のルールが成り立ちますね。
- MIN関数は引数の最小値を返します。論理値や文字列も対象となります。
- MINA関数は引数の最小値を返します。論理値や文字列やエラー値は無視されます
空白の場合
MIN関数とMINA関数は同じですが、
それぞれの関数で、データによって結果が違います。
MIN関数を適用すると、データの2行目の結果は5となりました。
なぜなら、空白セルは数値としてはゼロ(0)として扱われ、その中で最小の数値である5が最小値として返されたためです。
しかし、すべてのセルが空白である場合は少し異なります。
先ほどのデータの3行目を見てみましょう。
MIN関数を適用すると、結果は0となります。
これは、すべてのセルが空白の場合、MIN関数がゼロ(0)を最小値として扱うためと考えています。
同じ関数にも関わらず、ルールが変わっています。
かなり注意です。
では、MINA関数ではどうでしょうか。
MINA関数はMIN関数と同じようになっています。
というわけで、この変則ルールも考える必要がありますね。
なので、太字のルールが追加になりますね。
- MIN関数は引数の最小値を返します。論理値や文字列も対象となります。全てのセルが空白ならば、空白セルは無視されるが、それ以外ならば空白も対象になります
- MINA関数は引数の最小値を返します。論理値や文字列やエラー値は無視されます。全てのセルが空白ならば、空白セルは無視されるが、それ以外ならば空白も対象になります
MINA関数は危険!MIN関数を使用すべき
どうでしょうか。。。
やはり、強引に数値変換されて、最小値の範囲となるMINA関数は、基本的に危険と言えます。
役立つ場面もあるにありますが・・・レアケースです。
再掲になりますが、下記のようになってしまうためです。
というわけで、
MIN関数を使用することを推奨します。
小話
=MINA(999) -> 999
=MINA("999") -> 999
文字列の999にも関わらず、数値として処理されてます
999は文字列だが、0と判断されずに、数値の999と判断しているようです。
なので、「論理値および文字列も対象となります」というルールにも関わらず、
「論理値および文字列も対象となります」と矛盾しています。
が、
Microsoft社の要件はそうなっているようですね。ややこしい・・・
なお、999は文字列でなくて、数値じゃないかを思う方のために説明します。
例えば、以下の2つのケースではどちらも「999」という値が数値に見えます。
2行目999は、文字列なのです。
最後に
今回の記事では、Excelで最小値を求める際に使用される「MIN関数」と「MINA関数」の違いについて探ってきました。
基本的には・・
MIN関数は与えられた範囲内の最小値を返す一方で、
MINA関数は数値以外の要素(論理値、文字列など)を数値に変換して最小値を算出する点が異なります。
MIN関数は、論理値や文字列を数値として扱い、範囲内の最小値を返します。
これに対し、MINA関数は数値以外の要素を無視して最小値を計算します。
この挙動の違いにより、特に文字列や論理値が含まれる場合、MIN関数とMINA関数の結果が異なることがあります。
空白セルの場合も興味深い点でした。
MIN関数とMINA関数ともに、空白セルをゼロとして扱い、それを含めて最小値を返します。
しかし、すべてのセルが空白の場合、MIN関数は0を最小値として扱います。
ルールを整理すると以下です。
- MIN関数は引数の最小値を返します。論理値や文字列も対象となります。全てのセルが空白ならば、空白セルは無視されるが、それ以外ならば空白も対象になります
- MINA関数は引数の最小値を返します。論理値や文字列やエラー値は無視されます。全てのセルが空白ならば、空白セルは無視されるが、それ以外ならば空白も対象になります
このように、MIN関数とMINA関数はそれぞれ独自の特性を持ち、使い分けが重要です。
特に、データに文字列や論理値が含まれる場合や空白セルの扱いに注意が必要です。
正確な結果を得るために、関数の特性を理解し、適切に活用することが求められます。
ややこしいです。
さらに、文字列や論理値が含めて最小値を算出するのはレアケースです。
よって、
MINA関数は使わず、MIN関数を使用すべきと考えています。
解答付きサンプルデータ
解答付きサンプルデータが欲しい方は、下記からダウンロードしてください。