Excelで「営業部だけの最小売上を調べたい」「条件に一致するデータの中で一番小さい値を知りたい」と思ったことはありませんか?
データ量が多くなると、フィルターで絞り込んでからMIN関数を使うのは手間がかかりますよね。条件を変えるたびにフィルターをかけ直すのも面倒です。
そんなときに便利なのがExcelのDMIN関数です。条件に一致するレコードだけを対象にして、最小値を自動で求めてくれますよ。
この記事では、次のサンプルデータを使って解説を進めます。
| A列(商品名) | B列(カテゴリ) | C列(担当者) | D列(売上) | |
|---|---|---|---|---|
| 2行目 | ノートPC | 電子機器 | 田中 | 850,000 |
| 3行目 | マウス | 周辺機器 | 鈴木 | 12,000 |
| 4行目 | モニター | 電子機器 | 佐藤 | 65,000 |
| 5行目 | キーボード | 周辺機器 | 田中 | 8,500 |
| 6行目 | タブレット | 電子機器 | 鈴木 | 42,000 |
| 7行目 | USBメモリ | 周辺機器 | 佐藤 | 1,200 |
ExcelのDMIN関数とは?
DMIN関数は、データベース(表)の中から条件に一致するレコードを抽出し、指定したフィールドの最小値を返す関数です。
読み方は「ディーミニマム関数」です。D(Database)+ MIN(Minimum:最小値)で、「データベースの最小値」という意味になっています。
サンプルデータで言えば、DMIN関数を使うと「電子機器カテゴリの中で最も安い売上」を一発で求められます。フィルターをかけてMIN関数を使う手間がなくなりますよ。
DMIN関数はExcelのデータベース関数のひとつです。同じ仲間にDAVERAGE関数(条件付き平均)やDCOUNT関数(条件付きカウント)などがあります。
| 入力 | 出力 |
|---|---|
| データベース範囲 + フィールド + 条件 | 条件を満たすレコードの中で一番小さい数値(1つ) |
DMIN関数の書き方(構文と引数)
基本構文
=DMIN(データベース, フィールド, 検索条件)
引数の説明
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| データベース | 必須 | 列見出しを含むデータ範囲(例: A1:D7) |
| フィールド | 必須 | 最小値を求めたい列の見出し文字列または列番号 |
| 検索条件 | 必須 | 条件を設定したセル範囲(列見出し + 条件値) |
3つの引数はすべて必須です。それぞれ詳しく見ていきましょう。
データベースには、列見出し(ヘッダー行)を含めた表全体を指定します。サンプルデータでは A1:D7 です。ヘッダー行を含めないと正しく動作しないので注意してください。
フィールドには、最小値を求めたい列を指定します。指定方法は2つあります。
- 列見出しの文字列をダブルクォーテーションで囲む(例:
"売上") - データベースの左端から数えた列番号を数値で指定(例:
4)
列見出しの文字列で指定するほうが、式を見たときに何の列かわかりやすいのでおすすめです。
検索条件は、データベース関数に特有の仕組みです。ワークシート上に条件用のセル範囲を用意します。1行目に列見出しと同じ文字列を入れ、2行目に条件値を入れます。
たとえば、F1セルに「カテゴリ」、F2セルに「電子機器」と入力しておけば、「カテゴリが電子機器」という条件になります。
DMIN関数の使い方と実務活用パターン
結論から言うと、データベース範囲・フィールド・条件範囲の3つを指定するだけです。
サンプルデータで、電子機器カテゴリの最小売上を求める手順はこちらです。
事前準備: セルF1に「カテゴリ」、F2に「電子機器」と入力して条件範囲を作ります。
=DMIN(A1:D7, "売上", F1:F2)
条件範囲F1:F2で「カテゴリが電子機器」と指定し、D列(売上)の最小値を返します。結果は 42,000(タブレット)です。
フィールドを列番号で指定する書き方もあります。D列はデータベースの左端から4番目なので、こう書けます。
=DMIN(A1:D7, 4, F1:F2)
結果は同じ 42,000 です。ただし列の順番が変わると番号もずれるので、文字列指定のほうが安全ですよ。
条件範囲の値を変えるだけで、簡単に違う条件の最小値も出せます。F2セルを「周辺機器」に変更すると、結果は 1,200(USBメモリ)になります。数式を変更する必要がないので、レポート作りに便利ですよ。
ここからは実務でよく使うパターンを見ていきましょう。
パターン1: 複数条件で最小値を求める(AND条件)
「電子機器」かつ「田中担当」のように、複数の条件をAND(かつ)で指定できます。
条件範囲を次のように設定します。
| F1 | G1 |
|---|---|
| カテゴリ | 担当者 |
| 電子機器 | 田中 |
条件を横に並べるとAND条件になります。
=DMIN(A1:D7, "売上", F1:G2)
「カテゴリが電子機器」かつ「担当者が田中」の条件で最小値を返します。該当するのはノートPCの1件だけなので、結果は 850,000 です。
パターン2: OR条件で最小値を求める
「電子機器」または「周辺機器」のように、OR(または)で条件を指定する場合は、条件を縦に並べます。
| F1 |
|---|
| 担当者 |
| 田中 |
| 鈴木 |
=DMIN(A1:D7, "売上", F1:F3)
「担当者が田中」または「担当者が鈴木」の条件で最小値を返します。田中のデータは850,000と8,500、鈴木は12,000と42,000なので、結果は 8,500(キーボード)です。
ここがデータベース関数のポイントです。AND条件は横に並べる、OR条件は縦に並べる、と覚えておいてください。
パターン3: 比較演算子で数値条件を指定する
「売上が50,000以上のデータの中で最小値」のように、比較演算子を使った条件も指定できます。
F1セルに「売上」、F2セルに >=50000 と入力します。
=DMIN(A1:D7, "売上", F1:F2)
売上が50,000以上のデータ(850,000、65,000、42,000は対象外)に絞り、最小値を返します。結果は 65,000(モニター)です。
使える比較演算子は次のとおりです。
| 演算子 | 意味 | 条件セルの入力例 |
|---|---|---|
> | より大きい | >50000 |
>= | 以上 | >=50000 |
< | より小さい | <50000 |
<= | 以下 | <=50000 |
<> | 等しくない | <>0 |
TIP
比較演算子はセルに直接入力します。ダブルクォーテーションで囲む必要はありません。MINIFS関数とはここが異なるので注意してくださいね。
パターン4: ワイルドカードで部分一致条件を指定する
「商品名に"PC"を含むデータ」のように部分一致で条件を指定したい場合は、ワイルドカードを使います。
F1セルに「商品名」、F2セルに PC と入力します。
=DMIN(A1:D7, "売上", F1:F2)
商品名に「PC」を含むデータ(ノートPC)の中から最小値を返します。該当は1件なので、結果は 850,000 です。
| ワイルドカード | 意味 | 使用例 |
|---|---|---|
* | 任意の文字列(0文字以上) | PC |
? | 任意の1文字 | ??ウス(マウスにマッチ) |
よくあるエラーと対処法
DMIN関数で「思った結果が出ない」ときの原因と対処法を整理しました。
| 症状 | 原因 | 解決策 |
|---|---|---|
結果が 0 になる | 条件に一致するデータがない | 条件の文字列を確認(全角/半角、前後のスペース) |
結果が 0 になる | 数値に見える文字列が入っている | ISNUMBER関数で確認し、VALUE関数で変換 |
#VALUE! エラー | フィールド指定が不正 | 列見出しと完全一致する文字列、または正しい列番号を指定 |
#NAME? エラー | 関数名のスペルミス | DMIN のスペルを確認 |
| 予期しない値が返る | 条件範囲のヘッダーがデータベースのヘッダーと不一致 | 条件範囲の1行目をデータベースの列見出しと完全一致させる |
結果が「0」になるときの対処法
DMIN関数で一番多いトラブルです。原因は大きく2つあります。
1. 条件に一致するデータがない
条件の文字列が全角/半角で違っていたり、前後に見えないスペースが入っていたりすることがあります。TRIM関数で空白を除去してから比較すると解決することが多いですよ。
2. 数値に見えて中身が文字列
CSVファイルの取り込み後に起きやすい問題です。セルが左揃えになっていたら文字列の可能性があります。
=ISNUMBER(D2)
TRUE なら数値、FALSE なら文字列です。文字列だった場合は、VALUE関数で数値に変換してみてください。
条件範囲のヘッダー不一致に注意
データベース関数でよくあるミスがこれです。条件範囲の1行目(F1セルなど)に入力する列見出しは、データベースのヘッダーと完全に同じ文字列でなければなりません。
たとえばデータベースのヘッダーが「カテゴリ」なのに、条件範囲で「カテゴリー」と長音記号を付けてしまうと、条件が無視されて意図しない結果になります。
似た関数との違い・使い分け
DMIN関数に関連する関数をまとめて比較します。
DMAX関数との対比(最小値 vs 最大値)
DMAX関数は、DMIN関数と対になる関数です。構文が完全に同じで、返す値の方向だけが違います。
=DMIN(A1:D7, "売上", F1:F2) … 条件を満たす最小値
=DMAX(A1:D7, "売上", F1:F2) … 条件を満たす最大値
条件範囲が「カテゴリ = 電子機器」の場合、DMIN関数は 42,000(タブレット)、DMAX関数は 850,000(ノートPC)を返します。
| 関数 | 機能 | 返す値 |
|---|---|---|
| DMIN | 条件付き最小値 | 一番小さい数値 |
| DMAX | 条件付き最大値 | 一番大きい数値 |
この2つをセットで使うと、データの振れ幅がすぐに把握できます。「電子機器カテゴリの売上レンジは42,000〜850,000」のように、報告資料にそのまま使えますよ。
MINIFS関数との使い分け
Excelには条件付きで最小値を求める関数がもうひとつあります。MINIFS関数です。
=DMIN(A1:D7, "売上", F1:F2)
=MINIFS(D2:D7, B2:B7, "電子機器")
どちらも条件に一致するデータの最小値を返しますが、仕組みが違います。
| 比較項目 | DMIN関数 | MINIFS関数 |
|---|---|---|
| 条件の指定方法 | セル範囲(条件範囲)に入力 | 数式の引数に直接記述 |
| 条件の変更 | セルの値を変えるだけ | 数式の書き換えが必要 |
| 複数条件の設定 | 条件範囲の行・列で柔軟に指定 | 引数のペアを追加(最大126組) |
| OR条件 | 条件を縦に並べるだけ | 配列数式やSUM関数との組み合わせが必要 |
| 対応バージョン | すべてのバージョン | Excel 2019以降 |
| 数式のシンプルさ | 条件範囲の準備が必要 | 数式だけで完結 |
使い分けのポイント:
- 条件を頻繁に変えるレポート → DMIN関数がおすすめ。セルの値を変えるだけで結果が切り替わります
- 数式だけでサッと求めたい → MINIFS関数がおすすめ。条件範囲を別途用意する手間がありません
- OR条件を使いたい → DMIN関数が圧倒的に楽です。条件を縦に並べるだけで済みます
- 古いバージョンのExcelを使っている → DMIN関数を使いましょう。MINIFS関数はExcel 2019以降でないと使えません
データベース関数シリーズの一覧
DMIN関数はデータベース関数シリーズのひとつです。構文がすべて同じ(データベース, フィールド, 検索条件)なので、1つ覚えれば他の関数にもすぐに応用できます。
| 関数 | 機能 | 使い分けのポイント |
|---|---|---|
| DMIN | 条件付きの最小値 | この記事で解説 |
| DMAX | 条件付きの最大値 | 最大値を求めたいとき |
| DAVERAGE | 条件付きの平均 | 条件を絞って平均を求めたいとき |
| DCOUNT | 条件付きの件数(数値セル) | 数値データの件数を数えたいとき |
| DCOUNTA | 条件付きの件数(空白以外) | 空白以外のセルを数えたいとき |
| MINIFS | 条件付きの最小値 | 数式だけで完結させたいとき |
| MIN | 最小値(条件なし) | 範囲全体の最小値を求めるとき |
条件範囲のセットアップも共通なので、まとめて覚えると効率的ですよ。
まとめ
- DMIN関数は条件に一致するデータの中から最小値を返すデータベース関数
- 書き方は
=DMIN(データベース, フィールド, 検索条件)で、引数は3つとも必須 - 条件をセル範囲で指定するため、セルの値を変えるだけで条件を切り替えられる
- 複数条件は横に並べるとAND、縦に並べるとORになる
- DMAX関数と対で使うとデータの振れ幅がわかる
- 数式だけで完結させたい場合はMINIFS関数が便利
- データベース関数シリーズは構文が共通なので、まとめて覚えるのがおすすめ
まずは =DMIN(データベース, "列見出し", 条件範囲) の基本形から試してみてください。DMAX関数やDAVERAGE関数もセットで使えるようになると、条件付き集計の幅がぐっと広がりますよ。
