Excelで点数表の最低点を出そうとMINA関数を使ったら、なぜか結果が0になった。そんな経験はありませんか? MINとMINAは名前がそっくりなので、違いを知らないまま選んでしまいがちです。
やっかいなのは、0という結果がエラー表示にならないこと。「欠席」の文字やTRUE・FALSEが1つ混ざるだけで、最小値が0や1に化けてしまいます。気づかずに報告資料へ載せると、あとで数字が合わなくなるでしょう。
この記事では、ExcelのMINA関数とMIN関数の違いを、値の種類ごとの早見表で整理します。結果が0・1になる原因と直し方、MINAをあえて使う実務の場面まで、順番に見ていきましょう。
ExcelのMINA関数とは?MINとの違いは「TRUE・文字列を数えるかどうか」
MINA関数は、指定した値やセル範囲の中から最小値を返す関数です。MIN関数との違いは、数値以外の値まで比べる対象に入れる点。まずは基本の動きと、MINとの使い分けを押さえておきましょう。
読み方と基本の動き(TRUE=1、FALSE・文字列=0)
読み方は「ミニマム・エー」。最小値を求めるMINに、論理値や文字列も数えることを示す「A」が付いた名前です。古い版のExcelから使える関数で、Microsoft 365でもそのまま使えます。
MINAは、セル範囲の値を次のルールで置き換えてから比べます。
- 数値:そのまま比べる
- TRUE:1として比べる
- FALSE:0として比べる
- 文字列(「欠席」など):0として比べる
- 空白セル:無視する
たとえばA2:A6に「FALSE、0.2、0.5、0.4、0.8」が入っているとします。=MINA(A2:A6) の結果は0。FALSEが0として数えられ、0.2より小さくなるからです。
同じ範囲でも、=MIN(A2:A6) ならFALSEは無視されます。数値だけで比べるので、結果は0.2。この「数値以外をどう扱うか」が、2つの関数の違いの核心です。
MINとMINAの違いを1枚の表で比較
| 比較項目 | MIN関数 | MINA関数 |
|---|---|---|
| 範囲内のTRUE | 無視する | 1として比べる |
| 範囲内のFALSE | 無視する | 0として比べる |
| 範囲内の文字列 | 無視する | 0として比べる |
| 空白セル | 無視する | 無視する |
| 数値だけの範囲 | 同じ結果 | 同じ結果 |
| 構文 | =MIN(範囲) | =MINA(範囲) |
| 対になる最大値の関数 | MAX | MAXA |
違いが出るのは、範囲内に数値以外の値が混ざっているときだけです。ただ、業務データの多くは正の数ですよね。そこに0として数えられる値が1つ混ざるだけで、MINAの結果は0になってしまいます。
ここがMINAで一番つまずきやすいポイント。最大値を求めるMAXAなら、0は正の数より小さいので結果に響きません。最小値を求めるMINAでは、その0がそのまま答えになるわけです。
MINとMINAはどっちを使う?判断基準
迷ったら、次の3つで判断してください。
- 数値の最小値を知りたいだけ → MIN関数を使う
- TRUE/FALSEを1/0として比べたい → MINAを使う
- 「欠席」などの文字列を0点として扱いたい → MINAを使う
ふだんの最小値はMINで十分です。MINAは「数値以外も0や1として数えたい」と決まっているときの専用の道具、と考えておきましょう。
数値以外の値も対象にする「A付き関数」は、ほかにもあります。空白以外のセルを数えるCOUNTA関数や、平均を求めるAVERAGEA関数が代表例。AVERAGEAはMINAと同じく、TRUEを1、文字列を0として計算します。
MINA関数の書き方と引数(直接入力とセル参照で扱いが変わる)
書き方はMIN関数とまったく同じです。ただし、値を「セル範囲で指定する」か「引数に直接書く」かで、文字列や論理値の扱いが変わります。
構文と引数
=MINA(値1, [値2], ...)
| 引数 | 必須/省略可 | 内容 |
|---|---|---|
| 値1 | 必須 | 最小値を求めたい数値・セル参照・セル範囲 |
| 値2以降 | 省略可 | 追加で比べたい値や範囲(引数は最大255個) |
引数には数値やセル範囲のほか、名前・配列・論理値・数値を表す文字列も指定できます。離れた範囲をまとめて比べたいときは、カンマで区切って並べましょう。
=MINA(B2:B10, D2:D10)
セル範囲で指定したとき
範囲内の値は、さきほどのルールで置き換えられます。TRUEは1、FALSEと文字列は0、空白セルは無視。数式が返す空文字「””」も、見た目は空白ですが文字列なので0として数えられます。
たとえばA2:A5に「8、TRUE、12、空白」が入っているケースです。
=MIN(A2:A5) → 8
=MINA(A2:A5) → 1
MINはTRUEと空白を無視して、8と12のうち小さい8を返します。MINAはTRUEを1として数えるため、結果は1。空白セルは、どちらの関数でも比べる対象になりません。
直接入力したとき(”abc” は #VALUE!、”3″ は数値3)
引数に値を直接書いた場合は、MINでもMINAでもTRUEが1、FALSEが0として計算されます。数値を表す文字列「”3″」は、数値の3に変換。一方、数値に変換できない「”abc”」を書くとエラーになります。
=MINA(5, TRUE, 8) → 1
=MIN(5, TRUE, 8) → 1
=MINA(5, "3", 8) → 3
=MINA(5, "abc", 8) → #VALUE!
直接入力では、MINとMINAの結果に差が出ません。違いが表れるのはセル範囲を指定したときだけです。実務ではほとんど範囲で指定するので、「範囲内の文字列・論理値をどう扱うか」が選び分けの決め手になります。
MINとMINAで結果が変わる例(値の種類別の早見表)
ここからは、値の種類ごとにMINとMINAの扱いを並べて確認します。「なぜ0になったのか」を調べるときの早見表として使ってください。
値の種類×入れ方の判定表
| 値の種類 | MIN・セル範囲 | MINA・セル範囲 | MIN・直接入力 | MINA・直接入力 |
|---|---|---|---|---|
| 数値 | 比べる | 比べる | 比べる | 比べる |
| TRUE | 無視 | 1 | 1 | 1 |
| FALSE | 無視 | 0 | 0 | 0 |
| 文字列「欠席」 | 無視 | 0 | #VALUE! | #VALUE! |
| 数値に見える文字列「’3」 | 無視 | 0 | 数値(”3″→3) | 数値(”3″→3) |
| 数式が返す空文字「””」 | 無視 | 0 | - | - |
| 空白セル | 無視 | 無視 | - | - |
| エラー値(#N/Aなど) | エラー | エラー | エラー | エラー |
太字にした部分が、MINAだけで起きる置き換えです。特に注意したいのは「’3」のような数値に見える文字列。セルには3と表示されているのに、範囲内では0として数えられるので、原因に気づきにくいんです。
同じ表にMINとMINAを並べて比べる
点数表を例に、1か所だけ値の種類を変えた5つの列を用意しました。6行目がMIN、7行目がMINAの結果です。
| 行 | B: 数値だけ | C: 文字列あり | D: TRUEあり | E: 数式の””あり | F: 空白あり |
|---|---|---|---|---|---|
| 2 | 72 | 72 | 72 | 72 | 72 |
| 3 | 85 | 85 | TRUE | 85 | 85 |
| 4 | 64 | 欠席 | 64 | “”(数式) | (空白) |
| 5 | 90 | 90 | 90 | 90 | 90 |
| 6: MIN | 64 | 72 | 64 | 72 | 72 |
| 7: MINA | 64 | 0 | 1 | 0 | 72 |
C列は「欠席」が0として数えられ、MINAの結果は0。D列はTRUEが1になり、MINAは1を返します。
E列は、空いて見えるセルに「””」を返す数式が入っている例です。文字列扱いなので、MINAではやはり0。F列の本当の空白セルだけは、MINAでも無視されて72のままです。
点数のように1より大きい数値が並ぶ表では、影響がはっきり出ます。文字列・FALSE・「””」が1つでもあれば結果は0、TRUEが1つでもあれば1。この2つの数字を見たら、まず混入を疑いましょう。
数値だけの範囲なら結果は同じ
上の表のB列のように、数値だけが並ぶ範囲ではMINとMINAの結果は変わりません。
=MIN(B2:B5) → 64
=MINA(B2:B5) → 64
この場合、MINAを選ぶ理由はありません。あとから「欠席」などの文字が入力されると、MINAの結果だけが0に変わってしまいます。数値だけの列には、最初からMINを使うほうが安全です。
MINA関数の実務での使い方
MINAを意図して使う場面は多くありません。それでも、TRUE/FALSEの列や「欠席」の扱いが決まっている表では、MINAがぴったりはまります。
チェック列が全部TRUEか(未完了が1件でもあるか)を判定する
C列に作業の完了チェックとして、TRUE/FALSEが入っている表を考えます。C2:C6の中身は「TRUE、TRUE、FALSE、TRUE、TRUE」。
=MINA(C2:C6)
FALSEが1件でもあれば最小値は0、全部TRUEなら1になります。IF関数と組み合わせると、判定結果を文字で表示できて便利です。
=IF(MINA(C2:C6)=1, "全員完了", "未完了あり")
この例はC4がFALSEなので、結果は「未完了あり」。
AND関数でも「全部TRUEか」は判定できます。答えをTRUE/FALSEで受け取りたいならAND。1/0の数値として他の計算につなげたいならMINA、と選ぶとよいでしょう。
注意点は、空白セルが無視されること。チェック漏れのセルが空白のままだと、残りが全部TRUEなら結果は1になってしまいます。未完了の行には、FALSEを入れる運用にしておくと安心です。
「欠席」を0点として扱った最低点を出す
テストの点数表で、B2:B6に「78、欠席、65、88、71」が入っているとします。
=MIN(B2:B6) → 65
=MINA(B2:B6) → 0
社内のルールで「欠席は0点」と決まっているなら、MINAの0が正しい最低点です。MINAを意図して使う、数少ない場面と言えます。
逆に「受験した人の中での最低点」を知りたいなら、欠席を無視するMINが正解。同じ表でも、何を最低点とみなすかで使う関数が変わります。なお、欠席者のセルを空白にしているとMINAでも無視されるので、0点として数えたいなら「欠席」と入力しておきましょう。
MINとMINAの差で文字列・空文字の混入を見つける
数値だけのはずの列に、文字列や「””」が紛れ込んでいないか。MINとMINAの差を使うと、この点検が数式1本でできます。
=MIN(B2:B20)<>MINA(B2:B20)
結果がTRUEなら、範囲のどこかに0や1として数えられる値が混ざっている合図です。候補は「未入力」などの文字列、数式が返す「””」、FALSE、TRUEの4つ。単価や数量など、1より大きい数値が並ぶ列の点検に向いています。
ただし、数値の中に0が含まれる列では、文字列が混ざっても差は出ません。数値の最小値が1以下の列では、TRUEの混入も見つけられない点に注意してください。
MAXAと組み合わせて振れ幅・全員同じ結果かを確認する
最大値版のMAXA関数と組み合わせると、TRUE/FALSEの列がそろっているかを確かめられます。
=MAXA(C2:C6)-MINA(C2:C6)
全員TRUEなら1-1で0、全員FALSEでも0-0で0です。混ざっていれば1-0で1になるので、さきほどのチェック列の例では結果は1。
数値の列なら、文字列を0とみなしたときの振れ幅も求められます。詳しい使い方はMAXA関数の記事で解説しています。
MINAの結果が0・1・エラーになるときの原因と対処
MINAで想定外の値が返るとき、原因はたいてい次の4つのどれかです。症状から当てはまるものを探してみてください。
正の数しかない表なのに0になる(「欠席」・FALSE・数式の””が混ざっている)
MINAで一番多いトラブルがこれ。正の数しかないはずの列でMINAが0を返すなら、0として数えられる値が混ざっています。よくあるのは次の3つです。
- 「欠席」「未提出」などの文字列
=IF(C2="","",C2*D2)のように、条件によって「””」を返す数式- FALSE
特に2つ目は、セルが空いて見えるので気づきにくい原因です。数式バーで中身を確かめると、「””」を返す数式が入っているのが分かります。
一番確実な対処は、MIN関数に切り替えること。MINなら文字列も「””」も無視するので、数値の中の本当の最小値が返ります。TRUE/FALSEを数えたいわけでなければ、MINAを使い続ける理由はありません。
数値として入力された0も除きたいなら、MINIFS関数で条件を付けましょう。
=MINIFS(B2:B20, B2:B20, ">0")
0より大きい数値だけを対象に、最小値を求める式。MINIFSはExcel 2019以降とMicrosoft 365で使える関数です。それより前の版では使えないので、共有先の環境も確認しておきましょう。部署別・月別といった条件で絞り込みたいときにも便利です。
なお、範囲に数値が1つもなく空白セルだけのときは、MINもMINAも0を返します。結果が0でも、範囲の指定ミスで空の列を参照していないか確かめておきましょう。
TRUEが1つあるだけで最小値が1になる
数値の最小値が1より大きい列にTRUEが1つでも混ざると、MINAの結果は1になります。在庫数や単価のように、1より大きい値が並ぶ列で起きやすい現象です。
たとえばB2:B5に「24、18、TRUE、30」が入っている場合、MINは18、MINAは1を返します。数値の最小値を知りたいなら、ここでもMINを使いましょう。
数値とTRUE/FALSEを同じ列に入れていること自体が、原因になっている場合もあります。「確認済み」などのフラグは別の列に分けると、集計しやすくなるはずです。
数値が文字列で保存されていて正しい最小値にならない
「’15」のように数値が文字列で保存されていると、MINもMINAも正しい最小値を返しません。たとえば範囲に「48」「’15」「30」が入っているケースです。
=MIN(B2:B4) → 30
=MINA(B2:B4) → 0
本当の最小値は15のはず。MINは「’15」を無視して30を返し、MINAは0として数えて0を返します。どちらも間違いですが、MINAのほうが「0」という目立つ値になるぶん、異変には気づきやすいでしょう。
見分け方は2つあります。環境によってはセルの左上に緑の三角が表示され、文字列で保存されている合図になります。=ISNUMBER(B3) がFALSEを返す場合も同じです。
関数を替えても解決しないので、データを数値に変換しましょう。VALUE関数で数値に直すか、データタブの「区切り位置」で列をまとめて変換する方法があります。CSVから取り込んだ表で起きやすいので、取り込み直後に確認するのがおすすめです。
#N/Aなどのエラー値が混ざっている
範囲に#N/Aや#DIV/0!などのエラー値があると、MINもMINAもそのエラーを返します。まずは元データのエラーを直すのが基本です。
元データを直せない場合は、AGGREGATE関数でエラー値を無視した最小値を求められます。
=AGGREGATE(5, 6, B2:B20)
第1引数の「5」が最小値、第2引数の「6」が「エラー値を無視する」の指定。ただし、この式はMINと同じ考え方で動きます。TRUE/FALSEや文字列を1・0として数えないので、MINAの代わりにはならない点に注意しましょう。
元の数式をIFERRORで囲み、エラーのとき「””」を返す方法もあります。ただ、その「””」はMINAでは0として数えられます。MINAで集計する列では、エラーを元データ側で直すのが確実です。
まとめ(よくある質問)
最後に、MINA関数のポイントを振り返っておきましょう。
- 範囲内の TRUEは1、FALSEと文字列は0 として比べる。空白セルは無視
- 数式が返す「””」や、文字列で保存された「’3」も範囲内では0扱い
- 引数に直接書いた論理値・数値の文字列は、MINでもMINAでも計算に含まれる。”abc”は#VALUE!
- 正の数の表で0、TRUEがあると1になるのは、この置き換えが原因
- 普段はMIN。TRUE/FALSEを1/0として比べたい、文字列を0点として扱いたいときだけMINA
MINとMINAはどっちを使えばいい?
基本はMINです。MINAが必要になるのは、TRUE/FALSEを1/0として比べたい場面か、「欠席」を0点とみなしたい場面だけ。迷ってMINAを選ぶと、文字列や「””」が0として紛れ込み、最小値が0に化けるおそれがあります。
通常の最小値の求め方はMIN関数の使い方にまとめています。
空白セルは0として数えられる?
本当に何も入っていない空白セルは、MINでもMINAでも無視されます。ただし、数式が返す「””」は見た目が空白でも文字列。MINAでは0として数えられるので、空いて見えるセルがあれば数式が入っていないか確かめてみてください。
2番目に小さい値を求めるには?
MINもMINAも、返すのは一番小さい値だけです。2番目、3番目に小さい値が知りたいときは、順位を指定して値を取り出せるSMALL関数を使いましょう。書き方はSMALL関数の使い方で解説しています。
GoogleスプレッドシートでもMINAは使える?
はい、GoogleスプレッドシートにもMINA関数があります。使い方はスプレッドシートのMINA関数の使い方で紹介しているので、あわせて参考にしてください。