スプレッドシートのDMIN関数の使い方|条件に合う最小値をデータベース形式で取り出す

スポンサーリンク

「営業部で一番安い購入額はいくらだろう」「商品カテゴリごとの最低単価を調べたい」。こんな場面、フィルタで絞り込んでからMIN関数を使っていませんか。

条件が変わるたびにフィルタをかけ直すのは面倒ですよね。しかもフィルタ操作は元のデータ表示を変えてしまうので、共有シートだと他の人の作業にも影響します。条件を変えるたびに元のデータが見えなくなるのは、共同編集ではかなりのストレスです。

そんなときに便利なのがDMIN関数です。条件を別のセル範囲に書いておくだけで、該当するデータの最小値を自動で返してくれます。元のデータには手を加えないので、共有シートでも気兼ねなく使えます。

この記事では、スプレッドシートのDMIN関数の基本から複数条件・OR条件の応用、MIN関数やMINIFS関数との使い分け、よくあるエラーへの対処法、実務で役立つ応用テクニックまでまとめて紹介します。

スプレッドシートのDMIN関数とは?

DMIN関数(読み方: ディー ミン)は、データベース形式の表から条件に合うレコードを探し、指定した列の最小値を返す関数です。

名前は「Database MIN(データベースの最小値)」の略です。DSUM関数(条件付き合計)やDAVERAGE関数(条件付き平均)と同じ「データベース関数」の仲間になります。DMAX関数が条件付きの最大値を返すのに対して、DMIN関数は最小値を返す関数です。

DMIN関数の特徴をまとめると、次のとおりです。

  • 条件をセル範囲(条件範囲)で指定するスタイル
  • 条件範囲を書き換えるだけで集計条件をすぐ切り替えられる
  • 複数条件(AND条件・OR条件)にも対応
  • 見出し付きのリスト形式のデータが前提
  • 元のデータ表示を変えずに集計できる

NOTE

DMIN関数はGoogleスプレッドシートの全バージョンで使えます。Excelにも同じ関数があるので、ファイルのやり取りでも安心です。データベース関数は仕様が共通なので、スプレッドシートで覚えた知識はそのままExcelでも活かせます。

MIN関数との違い(全体の最小値 vs 条件付き最小値)

DMIN関数とMIN関数の最大の違いは「条件を付けられるかどうか」です。

比較項目MIN関数DMIN関数
条件指定できない(範囲全体が対象)できる(条件範囲で絞り込み)
構文=MIN(範囲)=DMIN(データベース, フィールド, 条件)
用途シンプルに最小値を求める特定の条件に合うデータだけの最小値
条件の切り替え数式の範囲を変える必要ありセルの値を書き換えるだけ

たとえば「全体の最低金額」を知りたいならMIN関数で十分です。「営業部だけの最低金額」のように条件を付けたいなら、DMIN関数の出番になります。

データベース関数ファミリーとの関係

DMIN関数は「Dから始まる関数群」の一員です。同じフォーマット(データベース・フィールド・条件)でいろいろな集計ができるため、1つ覚えれば応用が効きます。

関数役割
DMIN条件付き最小値
DMAX条件付き最大値
DSUM条件付き合計
DAVERAGE条件付き平均
DCOUNT条件付き件数(数値のみ)
DCOUNTA条件付き件数(空白以外すべて)
DGET条件に合う1件を抽出

DMIN関数の使い方をマスターすれば、上の関数も同じ感覚で使えるようになります。

DMIN関数の書き方(構文と引数)

基本構文

=DMIN(データベース, フィールド, 条件)

引数は3つです。すべて必須で、省略はできません。

引数の説明

引数必須/任意説明
データベース必須見出し行を含むデータ範囲(例: A1:D100)
フィールド必須最小値を求める列の見出し名(文字列)または列番号(数値)
条件必須条件を記述したセル範囲(見出し行+条件行)

それぞれ詳しく見ていきましょう。

データベース(第1引数)

データベースには、見出し行を含めたデータ範囲を指定します。先頭行に列の見出し(「部署」「商品名」「金額」など)が入っている必要があります。

注意点は、データ範囲の途中に空白行を挟まないこと。空白行があると、それ以降のデータがDMIN関数の対象外になってしまいます。データの追加が見込まれる場合は、A1:D100 のように余裕を持った範囲で指定するか、A:D と列ごと指定するのも一つの手です。

フィールド(第2引数)

最小値を求めたい列を指定します。指定方法は2つあります。

  • 文字列で指定: "金額" のように、見出しと同じ文字列をダブルクォーテーションで囲む
  • 数値で指定: データベースの左端列を1として、列の位置を数値で指定する(4列目なら 4

文字列で指定するほうが、あとから見たとき何の列かわかりやすいのでおすすめです。列番号は、見出しを後で並べ替えたときにずれてしまうリスクもあります。

条件(第3引数)

条件範囲には、見出し行と条件行の2行以上のセル範囲を指定します。これがDMIN関数の最大の特徴です。

セルに条件を書く方式なので、ドロップダウンや入力規則と組み合わせれば「条件を選ぶだけで集計が変わる」仕組みも作れます。条件範囲の作り方は次のセクションで詳しく説明しますね。

TIP

フィールドに列番号を使う場合、データベース範囲の左端が1です。シートのA列が1とは限らないので注意してください。たとえばデータベースが C1:F100 なら、C列が1番目、F列が4番目になります。

DMIN関数の基本的な使い方

サンプルデータ

次のような売上データを使って説明します。

 ABCD
1部署担当者商品金額
2営業部田中ノートPC150000
3総務部鈴木プリンター35000
4営業部佐藤モニター48000
5経理部高橋ノートPC150000
6営業部田中キーボード8000
7総務部伊藤モニター48000

条件範囲の設定方法

DMIN関数の条件は、別のセル範囲に書きます。ここがMINIFS関数との大きな違いです。

条件範囲は次のルールで作ります。

  1. 1行目に見出しを書く — データベースの見出しと完全に同じ文字列を使う
  2. 2行目に条件値を書く — 一致させたい値を入力する

たとえば「営業部」の金額で最小値を求めたい場合、シートの空いているエリア(たとえばF1:F2)に次のように書きます。

 F
1部署
2営業部

数式はこうなります。

=DMIN(A1:D7, "金額", F1:F2)

結果は 8000 です。営業部の3件(150000、48000、8000)のうち最も小さい値が返されます。

TIP

条件範囲の見出しは、データベースの見出しと1文字でも違うとエラーになります。コピー&ペーストで作ると確実ですよ。全角スペースが混ざっているケースもよくあるので注意してください。

比較演算子を使った条件

条件値には比較演算子も使えます。

条件値の書き方意味
営業部「営業部」と完全一致
>=5000050,000以上
<100000100,000未満
<>営業部「営業部」以外
>=2026/01/012026年1月1日以降(日付列の場合)

たとえば「金額が100,000未満」のレコードのうち最小値を求めたい場合は、条件範囲をこう書きます。

 F
1金額
2<100000
=DMIN(A1:D7, "金額", F1:F2)

結果は 8000 です(48000、35000、8000、48000のうち最小)。

ワイルドカードを使った部分一致

条件値にはアスタリスク(*)と疑問符(?)を使ったワイルドカードも使えます。

  • * — 任意の文字列(0文字以上)
  • ? — 任意の1文字

たとえば「商品名に『モニ』を含むレコード」を対象にしたい場合は、こう書きます。

 F
1商品
2モニ
=DMIN(A1:D7, "金額", F1:F2)

「モニター」を含むレコードが対象になり、最小値が返ります。商品コードのプレフィックスで絞りたいときなどに便利です。

DMIN関数の実践的な使い方・応用例

複数条件(AND条件)で最小値を求める

「営業部」かつ「金額が10,000以上」のように、複数の条件をすべて満たすレコードから最小値を求めたい場合です。

AND条件は、条件範囲の同じ行に複数の見出し・条件値を横に並べて書きます。

 FG
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以上」の最小値を求める場合です。

 FG
1部署金額
2営業部>=10000
3総務部>=10000
=DMIN(A1:D7, "金額", F1:G3)

結果は 35000 です。営業部10,000以上の最小(48000)と総務部10,000以上の最小(35000)を合わせた中で、最も小さい35000が返されます。

「行 = OR、列 = AND」と覚えれば応用しやすいです。条件範囲を表のように設計できる感覚を覚えると、複雑な集計もスムーズに書けます。

DMAX関数と組み合わせて範囲を把握する

条件付きの「最大値」と「最小値」の両方を見れば、データの幅がわかります。DMAX関数とDMIN関数を同じ条件範囲で使うと便利です。

=DMAX(A1:D7, "金額", F1:F2)  → 営業部の最大値: 150000
=DMIN(A1:D7, "金額", F1:F2)  → 営業部の最小値: 8000

差額は142,000円。営業部の購入金額にはかなりの幅があることがひと目でわかりますよね。部署ごとの予算レンジを把握したいときに役立ちます。

DAVERAGEとDCOUNTAを並べれば、部署ごとに「件数・最小・平均・最大」の4点セットができ、簡易な統計サマリーになります。

条件範囲を切り替えて集計を素早く変える

DMIN関数の大きな強みは、条件をセルに書いているため、セルの値を書き換えるだけで集計結果が即座に変わる点です。

たとえば条件範囲のF2セルを「営業部」から「総務部」に書き換えるだけで、DMIN関数の結果が自動的に総務部の最小値に切り替わります。数式を修正する必要はありません。

ドロップダウンリスト(データの入力規則)と組み合わせると、選択するだけで部署別の最低額をサッと確認できる簡易ダッシュボードが作れますよ。集計仕様を変えずに条件だけ切り替えたいケースで威力を発揮します。

1件しか該当しない条件で値を取り出す

「特定の担当者・商品の金額」のように結果が1件に絞られる場合は、DMIN関数で「その値」を取り出すのにも使えます。値が1つしかなければ、最小も最大も同じになるためです。

ただし、条件に合うレコードが1件と確定しているならDGET関数の方が用途に合っています。複数件ヒットすると #NUM! エラーで知らせてくれるため、データの重複検知にも使えるからです。

DMIN関数とMINIFS関数の使い分け

スプレッドシートで条件付き最小値を求めるなら、MINIFS関数も使えます。どちらを選ぶか迷う方が多いので、違いを整理します。

比較項目DMIN関数MINIFS関数
条件の指定方法セル範囲(条件範囲)数式の引数に直接書く
OR条件条件範囲の行を追加するだけ数式では直接対応できない(複数のMINIFSをMINで囲む必要あり)
条件の切り替えやすさセルを書き換えるだけ数式を編集する必要あり
数式の見やすさシンプル(引数3つ固定)条件が多いと数式が長くなる
条件範囲の管理シート上にスペースが必要数式内で完結
ワイルドカード使える使える
集計条件のメンテナンスセル参照だけで完結数式の中身に手を入れる

使い分けのポイント:

  • 条件が固定で変わらない → MINIFS関数がシンプルでおすすめ
  • 条件を頻繁に切り替えたい → DMIN関数が便利(セルを変えるだけで結果が変わる)
  • OR条件が必要 → DMIN関数のほうが直感的に書ける(MINIFS関数ではOR条件を直接扱えない)
  • 条件範囲のスペースを取りたくない → MINIFS関数で数式内に完結させる
  • 複数の集計関数を使いまわしたい → DMIN関数(条件範囲を共有できるため、DMAX/DAVERAGEなどと組み合わせやすい)

実務では、定型レポートの集計にDMIN関数、単発の集計にMINIFS関数と使い分けるとスムーズですよ。

TIP

ダッシュボードや管理表のように「条件を変えながら使う」場面ではDMIN関数、レポートの一行に組み込むワンショットの集計ならMINIFS関数。この区別だけでも、迷う場面がぐっと減ります。

よくあるエラーと対処法

DMIN関数で「思った結果にならない」ケースをまとめました。

症状原因対処法
結果が0になる条件範囲の見出しがデータベースの見出しと一致していない見出しをコピー&ペーストして完全一致させる
結果が0になる条件値の前後に余分なスペースが入っているTRIM関数でスペースを除去するか、手入力し直す
#VALUE! エラーフィールドに存在しない列名を指定しているデータベースの見出しと同じ文字列を使う
想定より小さい値が返る条件範囲に空白行が含まれている条件範囲を必要な行だけに絞る(空白行は「すべて一致」と解釈される)
想定と違う列の最小値が返るフィールドの列番号を間違えている列番号ではなく見出し名(文字列)で指定するのがおすすめ
条件が部分一致になる条件値にアスタリスクが含まれている完全一致にしたい場合は ="=営業部" のように先頭に = を付ける
文字列の列で0が返るDMIN関数は数値の最小値を返す関数文字列の列を指定すると0が返る。数値列を指定すること
条件を変えても結果が変わらないデータベース範囲が固定セル参照になっていない/再計算が止まっているデータベース範囲を再確認、F5で再計算

TIP

結果が0になるトラブルで最も多いのは「見出しの不一致」です。全角・半角やスペースの違いも不一致になります。条件範囲の見出しはデータベースからコピー&ペーストで作りましょう。

トラブル時のチェックリスト

DMIN関数がうまく動かないときは、次の順番でチェックすると原因を絞りやすいです。

  1. データベース範囲に見出し行が含まれているか
  2. 条件範囲の見出しがデータベースと完全一致しているか(コピー&ペーストで貼り直す)
  3. 条件範囲に余分な空白行が含まれていないか
  4. フィールドが文字列で指定されている場合、ダブルクォーテーションで囲まれているか
  5. フィールドが数値の場合、データベース範囲の左端を1とした列番号になっているか
  6. 比較演算子付きの条件(>=10000 など)で、不要な空白が混ざっていないか

ここまでチェックすれば、ほとんどのケースで原因が見つかります。

よくある質問(FAQ)

Q. DMIN関数で文字列の列を指定するとどうなりますか?

A. 0が返ります。DMIN関数は数値の最小値を返す関数なので、文字列の列を指定しても比較対象になりません。文字列を含む列で「アルファベット順の最小(最初)」のような動作はできません。

Q. ExcelのDMIN関数とスプレッドシートのDMIN関数は同じですか?

A. 基本仕様はほぼ同じです。引数の順序、AND/OR条件の書き方、ワイルドカードの扱いも共通です。スプレッドシートで作ったDMIN関数の数式は、Excelに持っていってもそのまま動作します。

Q. データが追加されても自動で集計対象に含めたい場合は?

A. データベース範囲を A:D のように列全体で指定するか、A1:D1000 のように余裕を持たせると、追加された行も自動的に対象になります。ただし列全体指定だと、空白行を「すべて一致」と解釈してしまうケースに注意してください。

Q. 条件範囲を別シートに置けますか?

A. 置けます。Sheet2!F1:F2 のようにシート名を付けて参照すれば、別シートの条件範囲を使えます。集計シートと条件入力シートを分けたいときに便利です。

Q. DMIN関数の結果を別の関数に渡せますか?

A. 渡せます。たとえば =IF(DMIN(A1:D7,"金額",F1:F2)<10000, "要確認", "OK") のように、IF関数で判定したり、四則演算に組み込んだりできます。返り値は数値なので、通常の数値と同じように扱えます。

Q. 該当するレコードが0件のときは何が返りますか?

A. 0が返ります。#N/A のようなエラーは出ないので、「0件 = 結果0」を区別したい場合はDCOUNTA関数で件数を併記すると安全です。件数が0なら集計結果を非表示にする、という運用がおすすめです。

まとめ

DMIN関数は、データベース形式の表から条件に合うデータの最小値を求める関数です。

ポイントを整理します。

  • 構文は =DMIN(データベース, フィールド, 条件) で、引数は3つ
  • 条件は数式内ではなくセル範囲(条件範囲)に書くのが特徴
  • 条件範囲は「見出し行+条件行」のセットで作る
  • 同じ行に条件を横並びにすればAND条件、別の行にすればOR条件
  • 条件セルの値を変えるだけで集計対象を切り替えられる
  • MIN関数は全体の最小値、DMIN関数は条件付きの最小値
  • 条件固定ならMINIFS関数、条件を頻繁に変えるならDMIN関数がおすすめ
  • DMAX関数と組み合わせればデータの範囲も把握できる
  • 結果が0になるときは見出しの不一致をまずチェック

まずは簡単な表で =DMIN(A1:D7, "金額", F1:F2) から試してみてください。条件範囲をセルで管理するクセがつくと、DSUM・DAVERAGE・DCOUNTAなど他のデータベース関数も同じ感覚で扱えるようになります。

関連記事

タイトルとURLをコピーしました