この記事ではExcelのDMAX関数について解説します。DMAX関数は「データベース形式の表から、指定した条件に一致するレコードの中で最大値を返す」関数です。売上表から特定の店舗・期間の最高売上を抽出したり、成績表から特定クラスの最高点を取り出したりと、実務で重宝する関数のひとつです。
この記事は次のような方におすすめです。
- 条件を満たす数値データの最大値を求めたい
- DMAX関数とMAXIFS関数の違いを知りたい
- 他のデータベース関数(DSUM・DAVERAGE・DMIN・DCOUNT)との使い分けを整理したい
- 検索条件(criteria)の書き方が分からない
DMAX関数とは
読み方と機能
読み方は「ディーマックス」関数です。頭文字の「D」はデータベース(Database)を表しており、Excelの「データベース関数」グループに属します。DMAX関数は、データベース形式の表(1行目が見出し、2行目以降がレコード)の中から、指定したフィールド(列)を検索し、条件を満たすレコードの最大値を返します。
DMAX関数が力を発揮する場面
次のようなシーンで特に便利です。
- 「東京支店かつ2025年度」の最大売上を一発で取り出したい
- 「営業部」の中での最高年齢・最年少を調べたい
- 複数条件(AND・OR)を柔軟に切り替えながら集計したい
単純な最大値ならMAX関数、1条件・複数条件付きならMAXIFS関数でも対応できますが、「条件が頻繁に変わる」「複雑なAND/OR条件を扱う」ケースではDMAX関数の柔軟性が光ります。
DMAX関数の構文
=DMAX(データベース, フィールド, 検索条件)
引数は3つあり、すべて必須です。
引数1:データベース
データベース形式の表全体を、見出し行(1行目)を含めて指定します。例えば表がB2:E10にあり、B2:E2が見出しなら、B2:E10を指定します。見出しを含めないとエラーまたは意図しない結果になるので注意しましょう。
引数2:フィールド
最大値を求めたい列(フィールド)を指定します。指定方法は次の3通りがあります。
- 見出し文字列をダブルクォーテーションで囲む:
"売上" - データベースの左から何列目かを数字で指定:
3 - 見出しセルを直接参照:
D2
実務では見出し文字列で指定する方法がおすすめです。列順が変わっても式が壊れにくく、後から読み返したときに意図が伝わりやすいためです。
引数3:検索条件
検索条件(criteria)は、見出し行と条件行の2行以上で構成される別表として用意します。例えば「支店が東京」という条件なら、次のように書きます。
| 支店 |
|---|
| 東京 |
この2セル(F1:F2)を検索条件として指定します。条件を書き換えるだけで集計結果が変わるため、ダッシュボード的に使えるのがデータベース関数の最大の強みです。
検索条件(criteria)の書き方パターン
DMAX関数の要となるのが検索条件の書き方です。代表的な4パターンを押さえておきましょう。
パターン1:単一条件
| 部署 |
|---|
| 営業部 |
「部署が営業部」のレコードのみを対象にします。
パターン2:AND条件(同じ行に複数列を並べる)
| 部署 | 年度 |
|---|---|
| 営業部 | 2025 |
「部署が営業部 かつ 年度が2025」のように、同じ行に条件を並べるとANDになります。
パターン3:OR条件(条件を別の行に書く)
| 部署 |
|---|
| 営業部 |
| 広報部 |
「部署が営業部 または 広報部」のように、条件を別の行に書くとORになります。
パターン4:比較演算子
| 売上 |
|---|
| >=1000000 |
「売上が100万円以上」のように、>=や<などの比較演算子を使うこともできます。数値フィールドに対する条件はこの書き方が基本です。
DMAX関数の使用例
ここでは次のような売上表(B2:E10)を想定します。
| 日付 | 支店 | 担当 | 売上 |
|---|---|---|---|
| 2025-04-01 | 東京 | 佐藤 | 120,000 |
| 2025-04-02 | 大阪 | 鈴木 | 98,000 |
| 2025-04-03 | 東京 | 田中 | 150,000 |
| ... | ... | ... | ... |
例1:特定支店の最高売上
検索条件(F1:F2)に次のように入力します。
| 支店 |
|---|
| 東京 |
数式:
=DMAX(B2:E10, "売上", F1:F2)
結果:東京支店の最高売上が返ります。
例2:AND条件(支店 × 担当)
| 支店 | 担当 |
|---|---|
| 東京 | 田中 |
数式:
=DMAX(B2:E10, "売上", F1:G2)
結果:東京支店の田中さんの最高売上が返ります。
例3:比較演算子を使った条件
| 売上 |
|---|
| >=100000 |
数式:
=DMAX(B2:E10, "日付", F1:F2)
結果:売上10万円以上のレコードの中で、最も新しい(値の大きい)日付が返ります。フィールドを切り替えるだけで色々な集計ができるのがDMAX関数の便利なところです。
MAXIFS関数との使い分け
Excel 2019以降(Microsoft 365含む)ではMAXIFS関数が使えるため、「DMAXとMAXIFSはどう使い分ければいいの?」と悩む方も多いはずです。
| 項目 | DMAX | MAXIFS |
|---|---|---|
| 構文 | データベース + フィールド + 条件表 | 最大範囲 + 条件範囲/条件の繰り返し |
| 条件の指定方法 | 別表(criteria) | 数式内に直接記述 |
| OR条件 | 得意(条件行を増やすだけ) | 苦手(複数式の組み合わせが必要) |
| 比較演算子 | criteriaに記述 | 引数に文字列として記述 |
| バージョン | 全バージョン対応 | Excel 2019以降 |
| 条件の変更のしやすさ | 表を書き換えるだけ | 数式を編集する必要あり |
使い分けの目安:
- 条件が固定で、単純なAND条件だけなら
MAXIFSがシンプル - 条件を頻繁に変えたい、OR条件を扱う、複雑な条件を整理したい →
DMAXが有利 - 古いバージョンのExcelで動かす必要がある →
DMAX一択
他のデータベース関数との比較
DMAXは「Dシリーズ」と呼ばれるデータベース関数ファミリーの一員です。構文はすべて同じ=関数名(データベース, フィールド, 検索条件)で揃っているので、ひとつ覚えれば横展開が効きます。
| 関数 | 機能 | 対応するシート関数 |
|---|---|---|
| DMAX | 条件に合うレコードの最大値 | MAXIFS |
| DMIN | 条件に合うレコードの最小値 | MINIFS |
| DSUM | 条件に合うレコードの合計 | SUMIFS |
| DAVERAGE | 条件に合うレコードの平均 | AVERAGEIFS |
| DCOUNT | 条件に合う数値レコードの件数 | COUNTIFS(数値のみ) |
| DCOUNTA | 条件に合う空白以外のレコードの件数 | COUNTIFS |
| DGET | 条件に合うレコードを1件取得 | FILTER / XLOOKUP |
覚え方のコツ: 「集計したい内容の頭にDを付ける」と考えるとシンプルです。MAX→DMAX、SUM→DSUM、AVERAGE→DAVERAGEというように、既に知っている関数名を流用できます。
よくあるエラーと対処法
#VALUE!エラーが出る
- データベース範囲に見出し行が含まれていない可能性があります。必ず見出しを含めて指定してください
- フィールド名(ダブルクォーテーションで囲んだ文字列)がデータベースの見出しと一致しているか確認しましょう(全角・半角、余分なスペースに注意)
結果が0になる
- 検索条件に一致するレコードが存在しない可能性があります
- 検索条件の範囲が「見出し行 + 条件行」の2行以上になっているか確認してください。1行だけ指定すると意図した条件になりません
OR条件のつもりがAND条件になっている
- 条件を同じ行に書くとAND、別の行に書くとORです。行の取り違いに注意してください
まとめ
DMAX関数は、データベース形式の表から条件に一致するレコードの最大値を柔軟に取り出せる関数です。ポイントを整理しておきましょう。
- 構文は
=DMAX(データベース, フィールド, 検索条件)の3引数 - データベース範囲には見出し行を含めて指定する
- 検索条件は「見出し + 条件行」の別表で用意し、同じ行はAND・別の行はORになる
- 条件が頻繁に変わる・OR条件が必要 → DMAX、条件固定のシンプルなAND → MAXIFSが便利
- DMIN・DSUM・DAVERAGEなどDシリーズは構文が共通なので、一気に覚えられる
特に「条件を表で管理したい」「集計ダッシュボードを作りたい」というシーンでは、DMAX関数をはじめとするデータベース関数が強い味方になります。ぜひ実務で活用してみてください。
