「営業部で一番低い売上はいくらだろう」「総務部の最小コストを調べたい」。条件を絞って最小値を知りたい場面、Excelの業務でよく出てきますよね。
MIN関数なら範囲全体の最小値を出せます。でも部署別や期間別に絞り込むことはできません。
そんなときに使うのがMINIFS関数です。この記事では基本の書き方から複数条件やワイルドカードの応用パターンまで解説します。「結果が0になる」ときの対処法もカバーしています。
この記事では、次のサンプルデータを使って解説を進めます。
| A列(社員名) | B列(部署) | C列(月) | D列(売上) | |
|---|---|---|---|---|
| 2行目 | 田中 | 営業部 | 4月 | 850,000 |
| 3行目 | 鈴木 | 営業部 | 4月 | 620,000 |
| 4行目 | 佐藤 | 総務部 | 4月 | 480,000 |
| 5行目 | 高橋 | 営業部 | 5月 | 730,000 |
| 6行目 | 伊藤 | 総務部 | 5月 | 510,000 |
| 7行目 | 渡辺 | 営業部 | 5月 | 0 |
| 8行目 | 山本 | 総務部 | 6月 | 390,000 |
| 9行目 | 中村 | 営業部 | 6月 | 920,000 |
MINIFS関数とは?読み方と基本の仕組み
MINIFS関数は、条件を満たすデータだけに絞って最小値を返す関数です。
読み方は「ミニイフエス関数」です。MIN(最小値)+ IF(もし)+ S(複数形)で、「複数のもしで最小値を求める」という意味になっています。
サンプルデータで言えば、MINIFS関数を使うと「営業部だけの最小売上」を一発で取り出せます。フィルターで絞り込んでからMIN関数を使う手間がなくなりますよ。
対応バージョンはExcel 2019以降とMicrosoft 365です。Excel Web AppおよびGoogleスプレッドシートでも同じ書き方で使えます。
NOTE
Excel 2016以前をお使いの場合は、配列数式
=MIN(IF(条件範囲=条件, 最小範囲))をCtrl+Shift+Enterで入力する方法で代用できます。
| 入力 | 出力 |
|---|---|
| 最小値を求めたい範囲 + 条件(最大126組) | 条件を満たす行の中で一番小さい数値(1つ) |
MINIFS関数の書き方(構文と引数)
基本構文
=MINIFS(最小範囲, 条件範囲1, 条件1, [条件範囲2, 条件2], ...)
引数の説明
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 最小範囲 | 必須 | 最小値を求めたい数値が入っている範囲 |
| 条件範囲1 | 必須 | 1つ目の条件を判定する範囲 |
| 条件1 | 必須 | 1つ目の条件(例: “営業部”) |
| 条件範囲2 | 省略可 | 2つ目の条件を判定する範囲 |
| 条件2 | 省略可 | 2つ目の条件 |
条件のペア(条件範囲と条件)は最大126組まで追加できます。条件はすべてAND条件(かつ)で評価されます。
大事なポイントが2つあります。
MINIFS関数の基本的な使い方
結論から言うと、最小範囲と条件のペアを指定するだけです。
サンプルデータで、営業部の最小売上を求める式はこちらです。
=MINIFS(D2:D9, B2:B9, "営業部")
B列が「営業部」の行だけに絞り、D列の中で最小の数値を返します。結果は 0(渡辺の売上)です。
「あれ、0が返ってきた」と思った方もいるかもしれません。これはデータに0が含まれているためです。0を除外したい場合の書き方は、後ほど「パターン4」で詳しく解説します。
条件にはセル参照も使えます。F1セルに部署名を入力しておけば、ドロップダウンリストで切り替えられます。
=MINIFS(D2:D9, B2:B9, F1)
F1の値を「営業部」から「総務部」に変えるだけで、結果が自動的に切り替わります。集計レポートを作るときに便利ですよ。
条件に比較演算子を使う
「売上が50万以下」のように数値条件を指定する場合は、比較演算子を文字列として渡します。
=MINIFS(D2:D9, D2:D9, ">=500000")
使える比較演算子は次のとおりです。
| 演算子 | 意味 | 記述例 |
|---|---|---|
= | 等しい | "=100" |
<> | 等しくない | "<>0" |
> | より大きい | ">500000" |
>= | 以上 | ">=500000" |
< | より小さい | "<1000" |
<= | 以下 | "<=1000" |
セル参照と組み合わせる場合は、演算子とセルを & で結合します。
=MINIFS(D2:D9, D2:D9, ">="&F1)
F1セルに基準値を入れておけば、後から自由に変更できます。
MINIFS関数の実務活用パターン
基本の使い方がわかったところで、実務でよく使われる応用パターンを見ていきましょう。パターン3(日付の期間指定)のみ別の列構成で説明します。それ以外はサンプルデータを使って解説します。
パターン1: 複数条件で最小値を求める
「営業部」かつ「4月」のデータだけに絞って最小売上を求めます。条件のペアを追加するだけでOKです。
=MINIFS(D2:D9, B2:B9, "営業部", C2:C9, "4月")
B列が「営業部」かつC列が「4月」の行だけを対象に、D列の最小値を返します。結果は 620,000(鈴木の売上)です。
3つ以上の条件も同じ要領で追加できます。条件範囲と条件のペアを続けて書くだけです。
パターン2: ワイルドカードで部分一致
社員名に「藤」を含む人だけを対象にしたいときは、ワイルドカード * を使います。
=MINIFS(D2:D9, A2:A9, "*藤*")
「佐藤」と「伊藤」がマッチし、それぞれの売上480,000と510,000のうち最小値 480,000(佐藤)を返します。
| ワイルドカード | 意味 | 使用例 |
|---|---|---|
* | 任意の文字列(0文字以上) | "藤" |
? | 任意の1文字 | "?月" |
? は1文字だけを表します。「?月」なら「4月」「5月」にはマッチしますが、「10月」にはマッチしません。
TIP
ワイルドカードの使い方はCOUNTIF関数やSUMIFS関数と共通です。条件付き関数をまとめて覚えると効率が良いですよ。
パターン3: 日付の期間指定で最小値を求める
「2025年4月1日から2025年6月30日まで」のように期間を絞って最小値を求める書き方です。ここでは日付データがA列、売上がB列に入っている場合を想定します。
=MINIFS(B2:B100, A2:A100, ">="&DATE(2025,4,1), A2:A100, "<="&DATE(2025,6,30))
同じ条件範囲(A列)に対して「以上」と「以下」の2条件を指定します。これで期間の絞り込みができます。
DATE関数を使うと、日付の指定ミスを防げます。">=2025/4/1" と文字列で書くこともできますが、DATE関数のほうが確実です。
パターン4: 「0以外」の最小値を求める
MINIFS関数で一番よくある困りごとがこれです。データに0が混ざっていると、意図せず0が最小値として返ってきます。サンプルデータでは渡辺の売上が0になっています。
=MINIFS(D2:D9, D2:D9, "<>0")
最小範囲と条件範囲に同じ範囲を指定し、条件を "<>0" にします。0以外のデータだけを対象に最小値を返します。結果は 390,000(山本の売上)です。
部署の絞り込みと組み合わせることもできます。
=MINIFS(D2:D9, B2:B9, "営業部", D2:D9, "<>0")
この式なら「営業部で0以外の最小売上」が求められます。結果は 620,000(鈴木)です。
TIP
MAXIFS関数では0があっても最大値に影響しないケースがほとんどです。一方、MINIFS関数では0が意図しない最小値になりやすいため、この
"<>0"条件はMINIFS関数を使うときの定番テクニックとして覚えておいてください。
パターン5: INDEX+MINIFS関数で最小値の行データを取得する
「営業部の最小売上はわかったけど、それは誰の売上?」というときに使うパターンです。
=INDEX(A2:A9, MATCH(MINIFS(D2:D9, B2:B9, "営業部"), D2:D9, 0))
処理の流れはこうなります。
結果は 渡辺 です。ちょっとむずかしく見えますが、「最小値を求める → 位置を探す → 対応データを返す」の3ステップです。
0を除外して「実質的な最小売上の担当者」を調べたい場合は、MINIFS関数の部分に "<>0" 条件を加えます。
=INDEX(A2:A9, MATCH(MINIFS(D2:D9, B2:B9, "営業部", D2:D9, "<>0"), D2:D9, 0))
「営業部」かつ「0以外」の条件を追加すると、結果は 鈴木(620,000)になります。
よくあるエラーと対処法
MINIFS関数で「思った結果が出ない」ときの原因と対処法を整理しました。
| 症状 | 原因 | 解決策 |
|---|---|---|
結果が 0 になる | データに0が含まれている | "<>0" 条件を追加して0を除外 |
結果が 0 になる | 条件に一致するデータがない | 条件の文字列を確認(全角/半角、前後のスペース) |
結果が 0 になる | 数値に見える文字列が入っている | ISNUMBER関数で確認し、VALUE関数で変換 |
#VALUE! エラー | 範囲のサイズ不一致 | すべての範囲の行数を確認して揃える |
#NAME? エラー | Excel 2016以前で使用している | Excel 2019以降にアップグレード、または配列数式で代用 |
結果が「0」になるときの対処法
MINIFS関数で一番多いトラブルがこれです。原因は大きく3つあります。
1. データに0が含まれている
最も多いパターンです。売上0や未入力セルが0として扱われ、それが最小値になります。対処法はパターン4で紹介した "<>0" 条件の追加です。
=MINIFS(D2:D9, B2:B9, "営業部", D2:D9, "<>0")
2. 条件に一致するデータがない
条件の文字列が全角/半角で違っていたり、前後に見えないスペースが入っていたりすることがあります。TRIM関数で空白を除去してから比較すると解決することが多いですよ。
3. 数値に見えて中身が文字列
CSVファイルの取り込み後に起きやすい問題です。
=ISNUMBER(D2)
TRUE なら数値、FALSE なら文字列です。文字列だった場合は、データタブの「区切り位置」機能で変換するか、VALUE関数を使って数値に変換してみてください。
#VALUE! エラーが出るとき
最小範囲と条件範囲の行数が合っていないときに出ます。たとえば最小範囲が D2:D9 なのに条件範囲が B2:B5 だと #VALUE! になります。
すべての範囲の開始行と終了行を揃えれば解決します。
似た関数との違い・使い分け
MINIFS関数に関連する条件付き関数をまとめて比較します。
| 関数 | 機能 | 使い分けのポイント |
|---|---|---|
| MIN | 最小値を返す | 条件なしで全体の最小値を求めるとき |
| MINIFS | 条件付きの最小値 | 部署別・月別など条件で絞りたいとき |
| MAXIFS | 条件付きの最大値 | 条件を絞って最大値を求めたいとき |
| SUMIFS | 条件付きの合計 | 条件を絞って合計を求めたいとき |
| COUNTIFS | 条件付きの件数 | 条件を絞って件数を数えたいとき |
| AVERAGEIFS | 条件付きの平均 | 条件を絞って平均を求めたいとき |
| SMALL | N番目に小さい値 | 下から2位・3位の値を取得したいとき |
| LARGE | N番目に大きい値 | 上から数えたいとき |
MIN関数との違い
MIN関数は範囲全体から最小値を返します。条件指定はできません。「全体の最小値」ならMIN関数、「条件を絞った最小値」ならMINIFS関数です。
=MIN(D2:D9)
=MINIFS(D2:D9, B2:B9, "営業部")
上の式はD列全体の最小値、下の式は営業部だけの最小値です。使い分けはシンプルですよ。
MAXIFS関数との違い
MAXIFS関数は構文がMINIFS関数と完全に同じで、方向が逆なだけです。
=MINIFS(D2:D9, B2:B9, "営業部")
=MAXIFS(D2:D9, B2:B9, "営業部")
営業部の「最小売上」と「最大売上」をセットで出すと、データの振れ幅がすぐにわかります。
SUMIFS関数との違い
SUMIFS関数は条件付きの「合計」を返す関数です。MINIFS関数は条件付きの「最小値」を返します。
引数の構造は同じ(対象範囲が第1引数)なので、関数名を変えるだけで切り替えられます。
=SUMIFS(D2:D9, B2:B9, "営業部")
=MINIFS(D2:D9, B2:B9, "営業部")
「営業部の売上合計」と「営業部の最小売上」を並べて比較すると、低パフォーマンスの把握に役立ちますよ。
まとめ
- MINIFS関数は条件を満たすデータだけに絞って最小値を返す関数
- 書き方は
=MINIFS(最小範囲, 条件範囲1, 条件1, ...)で、条件は最大126組まで指定できる - 比較演算子(
>=、<>など)やワイルドカード(*、?)も使える - 日付の期間指定はDATE関数と組み合わせると確実
- 「0が返る」ときは
"<>0"条件の追加がMINIFS関数の定番テクニック - データ型の確認にはISNUMBER関数を使う
- 条件なしの最小値はMIN関数、条件付きの最大値はMAXIFS関数を使う
- Excel 2019以降またはMicrosoft 365で利用可能
MINIFS関数は条件付き集計関数の中でも、「0が返る問題」をきちんと理解しておくことが大切な関数です。まずは =MINIFS(範囲, 条件範囲, 条件) の基本形から試してみてください。MAXIFS関数やSUMIFS関数もセットで覚えると、条件付きの集計がぐっと効率的になりますよ。
