「営業部で一番安い購入額はいくらだろう」「商品カテゴリごとの最低単価を調べたい」。こんな場面、フィルタで絞り込んでからMIN関数を使っていませんか。
条件が変わるたびにフィルタをかけ直すのは面倒ですよね。しかもフィルタ操作は元のデータ表示を変えてしまうので、共有シートだと他の人の作業にも影響します。
そんなときに便利なのがDMIN関数です。条件を別のセル範囲に書いておくだけで、該当するデータの最小値を自動で返してくれます。この記事では、スプレッドシートのDMIN関数の基本から複数条件・OR条件の応用、MIN関数やMINIFS関数との使い分けまでまとめて紹介します。
スプレッドシートのDMIN関数とは?
DMIN関数(読み方: ディー ミン)は、データベース形式の表から条件に合うレコードを探し、指定した列の最小値を返す関数です。
名前は「Database MIN(データベースの最小値)」の略です。DSUM(条件付き合計)やDAVERAGE(条件付き平均)と同じ「データベース関数」の仲間になります。DMAX関数が条件付きの最大値を返すのに対して、DMIN関数は最小値を返す関数です。
DMIN関数の特徴をまとめると、次のとおりです。
- 条件をセル範囲(条件範囲)で指定するスタイル
- 条件範囲を書き換えるだけで集計条件をすぐ切り替えられる
- 複数条件(AND条件・OR条件)にも対応
- 見出し付きのリスト形式のデータが前提
NOTE
DMIN関数はGoogleスプレッドシートの全バージョンで使えます。Excelにも同じ関数があるので、ファイルのやり取りでも安心です。
MIN関数との違い(全体の最小値 vs 条件付き最小値)
DMIN関数とMIN関数の最大の違いは「条件を付けられるかどうか」です。
| 比較項目 | MIN関数 | DMIN関数 |
|---|---|---|
| 条件指定 | できない(範囲全体が対象) | できる(条件範囲で絞り込み) |
| 構文 | =MIN(範囲) | =DMIN(データベース, フィールド, 条件) |
| 用途 | シンプルに最小値を求める | 特定の条件に合うデータだけの最小値 |
たとえば「全体の最低金額」を知りたいならMIN関数で十分です。「営業部だけの最低金額」のように条件を付けたいなら、DMIN関数の出番になります。
DMIN関数の書き方(構文と引数)
基本構文
=DMIN(データベース, フィールド, 条件)
引数は3つです。すべて必須で、省略はできません。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| データベース | 必須 | 見出し行を含むデータ範囲(例: A1:D100) |
| フィールド | 必須 | 最小値を求める列の見出し名(文字列)または列番号(数値) |
| 条件 | 必須 | 条件を記述したセル範囲(見出し行+条件行) |
それぞれ詳しく見ていきましょう。
データベース(第1引数)
データベースには、見出し行を含めたデータ範囲を指定します。先頭行に列の見出し(「部署」「商品名」「金額」など)が入っている必要があります。
フィールド(第2引数)
最小値を求めたい列を指定します。指定方法は2つあります。
- 文字列で指定:
"金額"のように、見出しと同じ文字列をダブルクォーテーションで囲む - 数値で指定: データベースの左端列を1として、列の位置を数値で指定する(4列目なら
4)
文字列で指定するほうが、あとから見たとき何の列かわかりやすいのでおすすめです。
条件(第3引数)
条件範囲には、見出し行と条件行の2行以上のセル範囲を指定します。これがDMIN関数の最大の特徴です。
条件範囲の作り方は次のセクションで詳しく説明しますね。
TIP
フィールドに列番号を使う場合、データベース範囲の左端が1です。シートのA列が1とは限らないので注意してください。
DMIN関数の基本的な使い方
サンプルデータ
次のような売上データを使って説明します。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | 部署 | 担当者 | 商品 | 金額 |
| 2 | 営業部 | 田中 | ノートPC | 150000 |
| 3 | 総務部 | 鈴木 | プリンター | 35000 |
| 4 | 営業部 | 佐藤 | モニター | 48000 |
| 5 | 経理部 | 高橋 | ノートPC | 150000 |
| 6 | 営業部 | 田中 | キーボード | 8000 |
| 7 | 総務部 | 伊藤 | モニター | 48000 |
条件範囲の設定方法
DMIN関数の条件は、別のセル範囲に書きます。ここがMINIFS関数との大きな違いです。
条件範囲は次のルールで作ります。
- 1行目に見出しを書く — データベースの見出しと完全に同じ文字列を使う
- 2行目に条件値を書く — 一致させたい値を入力する
たとえば「営業部」の金額で最小値を求めたい場合、シートの空いているエリア(たとえばF1:F2)に次のように書きます。
| F | |
|---|---|
| 1 | 部署 |
| 2 | 営業部 |
数式はこうなります。
=DMIN(A1:D7, "金額", F1:F2)
結果は 8000 です。営業部の3件(150000、48000、8000)のうち最も小さい値が返されます。
TIP
条件範囲の見出しは、データベースの見出しと1文字でも違うとエラーになります。コピー&ペーストで作ると確実ですよ。
比較演算子を使った条件
条件値には比較演算子も使えます。
| 条件値の書き方 | 意味 |
|---|---|
営業部 | 「営業部」と完全一致 |
>=50000 | 50,000以上 |
<100000 | 100,000未満 |
<>営業部 | 「営業部」以外 |
たとえば「金額が100,000未満」のレコードのうち最小値を求めたい場合は、条件範囲をこう書きます。
| F | |
|---|---|
| 1 | 金額 |
| 2 | <100000 |
=DMIN(A1:D7, "金額", F1:F2)
結果は 8000 です(48000、35000、8000、48000のうち最小)。
DMIN関数の実践的な使い方・応用例
複数条件(AND条件)で最小値を求める
「営業部」かつ「金額が10,000以上」のように、複数の条件をすべて満たすレコードから最小値を求めたい場合です。
AND条件は、条件範囲の同じ行に複数の見出し・条件値を横に並べて書きます。
| F | G | |
|---|---|---|
| 1 | 部署 | 金額 |
| 2 | 営業部 | >=10000 |
=DMIN(A1:D7, "金額", F1:G2)
結果は 48000 です。営業部で金額10,000以上のレコードは、田中のノートPC(150000)と佐藤のモニター(48000)の2件です。そのうち最小値の48000が返されます。
OR条件で最小値を求める
「営業部」または「総務部」のように、どちらかの条件に合うレコードから最小値を求めたい場合です。
OR条件は、条件値を別の行に書くのがポイントです。
| F | |
|---|---|
| 1 | 部署 |
| 2 | 営業部 |
| 3 | 総務部 |
=DMIN(A1:D7, "金額", F1:F3)
結果は 8000 です。営業部の最小額(8000)と総務部の最小額(35000)を合わせた中で、最も小さい8000が返されます。
同じ行に書くとAND条件、別の行に書くとOR条件。このルールを覚えておきましょう。
AND条件とOR条件を組み合わせる
「営業部で金額10,000以上」または「総務部で金額10,000以上」の最小値を求める場合です。
| F | G | |
|---|---|---|
| 1 | 部署 | 金額 |
| 2 | 営業部 | >=10000 |
| 3 | 総務部 | >=10000 |
=DMIN(A1:D7, "金額", F1:G3)
結果は 35000 です。営業部10,000以上の最小(48000)と総務部10,000以上の最小(35000)を合わせた中で、最も小さい35000が返されます。
DMAX関数と組み合わせて範囲を把握する
条件付きの「最大値」と「最小値」の両方を見れば、データの幅がわかります。DMAX関数とDMIN関数を同じ条件範囲で使うと便利です。
=DMAX(A1:D7, "金額", F1:F2) → 営業部の最大値: 150000
=DMIN(A1:D7, "金額", F1:F2) → 営業部の最小値: 8000
差額は142,000円。営業部の購入金額にはかなりの幅があることがひと目でわかりますよね。部署ごとの予算レンジを把握したいときに役立ちます。
条件範囲を切り替えて集計を素早く変える
DMIN関数の大きな強みは、条件をセルに書いているため、セルの値を書き換えるだけで集計結果が即座に変わる点です。
たとえば条件範囲のF2セルを「営業部」から「総務部」に書き換えるだけで、DMIN関数の結果が自動的に総務部の最小値に切り替わります。数式を修正する必要はありません。
ドロップダウンリスト(データの入力規則)と組み合わせると、選択するだけで部署別の最低額をサッと確認できる簡易ダッシュボードが作れますよ。
DMIN関数とMINIFS関数の使い分け
スプレッドシートで条件付き最小値を求めるなら、MINIFS関数も使えます。どちらを選ぶか迷う方が多いので、違いを整理します。
| 比較項目 | DMIN関数 | MINIFS関数 |
|---|---|---|
| 条件の指定方法 | セル範囲(条件範囲) | 数式の引数に直接書く |
| OR条件 | 条件範囲の行を追加するだけ | 数式では直接対応できない |
| 条件の切り替えやすさ | セルを書き換えるだけ | 数式を編集する必要あり |
| 数式の見やすさ | シンプル(引数3つ固定) | 条件が多いと数式が長くなる |
| 条件範囲の管理 | シート上にスペースが必要 | 数式内で完結 |
| ワイルドカード | 使える | 使える |
使い分けのポイント:
- 条件が固定で変わらない → MINIFS関数がシンプルでおすすめ
- 条件を頻繁に切り替えたい → DMIN関数が便利(セルを変えるだけで結果が変わる)
- OR条件が必要 → DMIN関数のほうが直感的に書ける(MINIFS関数ではOR条件を直接扱えない)
- 条件範囲のスペースを取りたくない → MINIFS関数で数式内に完結させる
実務では、定型レポートの集計にDMIN関数、単発の集計にMINIFS関数と使い分けるとスムーズですよ。
よくあるエラーと対処法
DMIN関数で「思った結果にならない」ケースをまとめました。
| 症状 | 原因 | 対処法 |
|---|---|---|
| 結果が0になる | 条件範囲の見出しがデータベースの見出しと一致していない | 見出しをコピー&ペーストして完全一致させる |
| 結果が0になる | 条件値の前後に余分なスペースが入っている | TRIM関数でスペースを除去するか、手入力し直す |
| #VALUE! エラー | フィールドに存在しない列名を指定している | データベースの見出しと同じ文字列を使う |
| 想定より小さい値が返る | 条件範囲に空白行が含まれている | 条件範囲を必要な行だけに絞る(空白行は「すべて一致」と解釈される) |
| 想定と違う列の最小値が返る | フィールドの列番号を間違えている | 列番号ではなく見出し名(文字列)で指定するのがおすすめ |
| 条件が部分一致になる | 条件値にアスタリスクが含まれている | 完全一致にしたい場合は ="=営業部" のように先頭に = を付ける |
| 文字列の列で0が返る | DMIN関数は数値の最小値を返す関数 | 文字列の列を指定すると0が返る。数値列を指定すること |
TIP
結果が0になるトラブルで最も多いのは「見出しの不一致」です。全角・半角やスペースの違いも不一致になります。条件範囲の見出しはデータベースからコピー&ペーストで作りましょう。
まとめ
DMIN関数は、データベース形式の表から条件に合うデータの最小値を求める関数です。
ポイントを整理します。
- 構文は
=DMIN(データベース, フィールド, 条件)で、引数は3つ - 条件は数式内ではなくセル範囲(条件範囲)に書くのが特徴
- 条件範囲は「見出し行+条件行」のセットで作る
- 同じ行に条件を横並びにすればAND条件、別の行にすればOR条件
- 条件セルの値を変えるだけで集計対象を切り替えられる
- MIN関数は全体の最小値、DMIN関数は条件付きの最小値
- 条件固定ならMINIFS関数、条件を頻繁に変えるならDMIN関数がおすすめ
- DMAX関数と組み合わせればデータの範囲も把握できる
- 結果が0になるときは見出しの不一致をまずチェック
まずは簡単な表で =DMIN(A1:D7, "金額", F1:F2) から試してみてください。
