在庫の最少数、テストの最低点、一番安い仕入れ価格。「この中で一番小さい値はどれ?」と調べたい場面、仕事でよく出てきますよね。
そのたびに目視で数字を追いかけていませんか? データが数百行になると見落としも起きやすくなります。
ExcelのMIN関数を使えば、どんなに大きな表でも最小値を一瞬で取り出せます。 この記事では基本の書き方から条件付き最小値、日付対応、エラー対処法まで解説していきます。
MIN関数とは?読み方と基本の仕組み
MIN関数は、指定した範囲の中から最小の数値を1つ返す関数です。
読み方は「ミン関数」です。英語の「Minimum(ミニマム=最小値)」の略が語源になっています。Excelの全バージョンとMicrosoft 365で使えます。職場のExcelならまず問題なく動きますよ。
やっていることはとてもシンプルです。渡された数値をすべて比較して、一番小さい数値を返すだけです。
| 入力 | 出力 |
|---|---|
| 数値やセル範囲(最大255個) | その中で一番小さい数値(1つ) |
この記事ではサンプルデータとして、次の売上表を使って解説していきます。
| A | B | C | |
|---|---|---|---|
| 1 | 社員名 | 部署 | 4月売上 |
| 2 | 佐藤 | 営業部 | 580,000 |
| 3 | 鈴木 | 営業部 | 430,000 |
| 4 | 高橋 | 総務部 | 310,000 |
| 5 | 田中 | 営業部 | 720,000 |
| 6 | 伊藤 | 総務部 | 290,000 |
| 7 | 渡辺 | 営業部 | 650,000 |
MIN関数がデータを扱うルール
MIN関数がセルのデータをどう処理するか知っておくと、トラブルを防げます。
| データの種類 | MIN関数の扱い |
|---|---|
| 数値 | 比較対象になる |
| 空白セル | 無視される |
| 文字列 | セル範囲内では無視される |
| 論理値(TRUE/FALSE) | セル範囲内では無視される |
| エラー値(#N/Aなど) | そのままエラーが返る |
ポイントは、引数に直接書いた場合の扱いが異なることです。=MIN(TRUE, 5) のように直接入力すると、TRUE=1・FALSE=0として計算されます。セル範囲内のTRUE/FALSEは無視されるので注意してください。
数値が1つも含まれていない場合は 0 を返します。エラーではなく0になる点が要注意です。「あれ、最小値が0?」というときは、後半のエラー対処セクションをチェックしてみてください。
NOTE
論理値や文字列もすべて含めて計算したい場合は、MINA関数を使います。TRUE=1、FALSE=0、文字列=0として扱ってくれますよ。
MIN関数の書き方と基本的な使い方
基本構文と引数
=MIN(数値1, [数値2], ...)
| 引数 | 必須/任意 | 内容 |
|---|---|---|
| 数値1 | 必須 | 最小値を求めたい数値、セル参照、またはセル範囲 |
| 数値2〜255 | 任意 | 追加で比較したい数値や範囲(最大255個まで) |
引数には数値の直接入力、セル参照、セル範囲を指定できます。名前付き範囲(名前の定義)も使えるので、大きなデータを管理するときに便利ですよ。
セル範囲で最小値を求める
サンプル表の4月売上(C2:C7)の最小値を求めてみましょう。
=MIN(C2:C7)
結果は 290,000 です。6件の売上は290,000・310,000・430,000・580,000・650,000・720,000。最小の290,000(伊藤)が正しく取れていますね。
数値を直接入力する書き方もできます。
=MIN(80, 95, 72, 88)
この場合は 72 が返ります。ちょっとした確認に便利ですが、実務ではセル範囲を指定するパターンがほとんどです。
データが今後増える可能性がある場合は、列全体を指定できます。
=MIN(C:C)
C列のすべてのセルが対象になります。ただしデータ量が多いシートでは計算が遅くなります。範囲を絞れる場合は C2:C1000 のように明示するのがおすすめです。
複数の離れた範囲から最小値を求める
引数をカンマで区切ると、離れたセル範囲をまとめて比較できます。
=MIN(B2:B13, D2:D13)
たとえばB列に上半期、D列に下半期の売上が入っているとします。この式なら年間を通した最小売上を一発で出せます。間の列は自動的にスキップされるので、必要なデータだけを対象にできますよ。
条件付きで最小値を求める方法
「営業部だけの最低売上を出したい」「特定の月だけの最安値を知りたい」など、条件を絞って最小値を求めたい場面はよく出てきますよね。
MIN関数単体では条件指定ができません。条件付き最小値を求める方法は、Excelのバージョンによって使い分けが必要です。
MINIFS関数で条件付き最小値を求める
MINIFS関数(条件付きで最小値を返す関数)を使うのが一番シンプルな方法です。
=MINIFS(最小値の範囲, 条件範囲1, 条件1, [条件範囲2, 条件2], ...)
サンプル表で営業部の最低売上を求めるにはこう書きます。
=MINIFS(C2:C7, B2:B7, "営業部")
B列が「営業部」の行だけを対象にして、C列の最小値を返します。営業部の売上は580,000・430,000・720,000・650,000の4件。結果は 430,000(鈴木)になります。
総務部の最低売上も同じ要領です。
=MINIFS(C2:C7, B2:B7, "総務部")
総務部は310,000と290,000の2件なので、結果は 290,000(伊藤)です。
複数条件を組み合わせることもできます。「営業部」かつ「売上50万以上」のデータに絞る場合はこちらです。
=MINIFS(C2:C7, B2:B7, "営業部", C2:C7, ">="&500000)
営業部で50万以上は580,000・720,000・650,000の3件。結果は 580,000 です。
WARNING
MINIFS関数はExcel 2019以降またはMicrosoft 365で使えます。Excel 2016では使えません。Excel 2016以前では次のMIN(IF)配列数式を使ってください。
MINIFS関数の詳しい使い方は「MINIFS関数の使い方」もあわせてどうぞ。
MIN(IF)配列数式で条件付き最小値を求める(Excel 2016以前)
MINIFS関数が使えないバージョンでは、MIN関数とIF関数を組み合わせた配列数式で代用できます。
サンプル表で営業部の最低売上を求める式です。
=MIN(IF(B2:B7="営業部", C2:C7))
入力時はCtrl+Shift+Enterを押してください。 Enterだけで確定すると正しい結果になりません。正しく入力できると、数式バーに {=MIN(IF(B2:B7="営業部", C2:C7))} と波括弧が自動で付きます。
この波括弧は手入力では効きません。必ずCtrl+Shift+Enterで確定してくださいね。
TIP
Excel 365(Microsoft 365)では動的配列に対応しているため、通常のEnterキーだけで配列数式が動作します。Ctrl+Shift+Enterは不要です。
バージョン別の使い分け
条件付き最小値を求める方法をまとめました。使っているExcelのバージョンに合わせて選んでください。
| 方法 | 対応バージョン | 入力方法 | 特徴 |
|---|---|---|---|
| MIN関数(条件なし) | 全バージョン | Enter | 条件指定は不可 |
| MIN(IF)配列数式 | 全バージョン | Ctrl+Shift+Enter | 古いExcelでも使える |
| MINIFS関数 | Excel 2019以降 / 365 | Enter | 最もシンプル |
| AGGREGATE関数 | Excel 2010以降 | Enter | エラーを含む範囲向き |
Excel 2019以降ならMINIFS関数が一番おすすめです。それ以前のバージョンではMIN(IF)配列数式を使ってみてください。
実務で使えるMIN関数の活用パターン
基本と条件付きがわかったところで、実務でよく使われる応用パターンを見ていきましょう。
0を除外して最小値を求める
データの中に「0」が含まれていて、それを除外したいケースは実務で頻出します。未入力や実績なしのセルに0が入っていると、MIN関数の結果が0になってしまいます。
MIN関数とIF関数の組み合わせで対応しましょう。
=MIN(IF(B2:B10<>0, B2:B10))
0以外の値だけを対象にして最小値を返す式です。Microsoft 365ではそのままEnterで確定できます。古いバージョンではCtrl+Shift+Enterで配列数式として入力してください。
MINIFS関数が使える環境なら、もっとシンプルに書けます。
=MINIFS(B2:B10, B2:B10, "<>0")
どちらの方法でも0を除外した最小値が取得できますよ。
日付データに使って最古日を取得する
意外と知られていませんが、MIN関数は日付データにも使えます。Excelでは日付がシリアル値(連番の数値)で内部管理されています。そのためMIN関数で「一番古い日付」を取得できます。
たとえばA列に入社日が入っている場合はこう書きます。
=MIN(A2:A50)
一番古い日付が返ります。結果セルの表示形式を「日付」にしておけば、見た目もきちんと日付で表示されますよ。
特定の条件に合う最古日を取りたい場合もあります。たとえば「営業部の最初の受注日」を求めるなら、MINIFS関数が便利です。
=MINIFS(D2:D100, B2:B100, "営業部")
D列に受注日、B列に部署名が入っている場合の式です。結果セルの表示形式を「日付」に設定するのを忘れないでくださいね。
TIP
逆に「一番新しい日付」を取り出したい場合はMAX関数を使います。最大のシリアル値=最新の日付を取得できますよ。
条件付き書式でMIN関数を使う
表の中で最小値のセルを自動的に目立たせたい場合は、条件付き書式とMIN関数を組み合わせます。
設定手順は次の3ステップです。
- 対象範囲(C2:C7)を選択
- 「ホーム」タブ →「条件付き書式」→「新しいルール」
- 「数式を使用して…」を選び、数式欄に
=C2=MIN($C$2:$C$7)と入力
MIN関数の範囲を絶対参照($C$2:$C$7)にするのがポイントです。これで最小値のセルだけが自動でハイライトされます。売上一覧や在庫表でボトムを目立たせたいときに使ってみてください。
N番目に小さい値はSMALL関数で
「最下位じゃなくてワースト2位の値を知りたい」という場合は、MIN関数ではなくSMALL関数を使います。
=SMALL(C2:C7, 2)
サンプル表なら2番目に小さい 310,000(高橋)が返ります。
ちなみに =SMALL(C2:C7, 1) はMIN関数と同じ結果です。MIN関数は常にワースト1位専用なので、2位以降が必要なときはSMALL関数の出番ですよ。
MIN関数のよくあるエラーと対処法
MIN関数自体がエラーを出すことは少ないですが、「期待どおりの結果にならない」 ケースはよくあります。
| 症状 | 原因 | 解決策 |
|---|---|---|
結果が 0 になる | 数値に見える文字列が入っている | ISNUMBER関数で確認→変換 |
結果が 0 になる | 範囲の指定ミス | 数式バーで範囲を確認 |
結果が 0 になる | 対象範囲がすべて空白 | データ入力を確認 |
#N/A や #VALUE! が出る | 範囲内にエラーセルがある | AGGREGATE関数で回避 |
| 期待より大きい値が返る | 一部が文字列で無視されている | 文字列を数値に変換 |
結果が「0」になるときの対処法
MIN関数で一番多いトラブルがこれです。原因はほぼ「見た目は数字だが中身が文字列」というケースです。
特にCSVファイルを取り込んだあとに起きやすい現象です。次のようなケースで数値が文字列化します。
- セルの書式が「文字列」に設定されている
- 先頭にゼロが付いている(例: 007)
- 数値の前後に空白文字が含まれている
まずISNUMBER関数で確認してみましょう。
=ISNUMBER(A1)
TRUE なら数値、FALSE なら文字列です。ISNUMBER関数でチェックする習慣をつけておくと、トラブルの切り分けが早くなります。
文字列だった場合の対処法は3つあります。
- データタブの「区切り位置」 — 範囲を選択→「区切り位置」→そのまま「完了」で一括変換
- VALUE関数 —
=VALUE(A1)で1セルずつ数値に変換 - エラーチェックオプション — セル左上の緑三角をクリック→「数値に変換」
大量のデータを変換するなら「区切り位置」が一番手軽です。
範囲内にエラーがあるときの対処法
対象範囲に #N/A や #VALUE! が1つでも含まれていると、MIN関数もそのエラーを返してしまいます。
このときはAGGREGATE関数を使います。エラーを無視して最小値を求められます。
=AGGREGATE(5, 6, C2:C7)
第1引数の 5 は「最小値」、第2引数の 6 は「エラー値を無視」という意味です。ちょっと覚えにくいですが、5, 6 の組み合わせだけメモしておけば大丈夫です。
AGGREGATE関数はExcel 2010以降で使えます。
IFERROR関数で個別のエラーセルを処理する方法もあります。ただしデータが多い場合はAGGREGATE関数のほうが手軽ですよ。
まとめ
MIN関数は指定した範囲から最小値を1つ返すシンプルな関数です。ここまでの内容を整理しておきましょう。
- 書き方は
=MIN(範囲)で、引数は最大255個まで指定できる - 条件付き最小値はMINIFS関数(Excel 2019以降)が最もシンプル
- Excel 2016以前ではMIN(IF)配列数式をCtrl+Shift+Enterで入力
- 日付データにも使える(最古日の取得に便利)
- 「0が返る」ときはISNUMBER関数でデータが文字列になっていないか確認
- エラーを含む範囲にはAGGREGATE関数で対処
- 2位以降の値が必要ならSMALL関数を使う
- 最大値を求めたいときはMAX関数とセットで覚えると便利
まずは =MIN(C2:C7) の基本形から使ってみてください。条件付き最小値やエラー対処も覚えると、データ集計の幅がぐっと広がりますよ。
