【エクセル】DMAX関数で条件を満たす数値データの最大値を求める

スポンサーリンク

この記事では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通りがあります。

  1. 見出し文字列をダブルクォーテーションで囲む:"売上"
  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はどう使い分ければいいの?」と悩む方も多いはずです。

項目DMAXMAXIFS
構文データベース + フィールド + 条件表最大範囲 + 条件範囲/条件の繰り返し
条件の指定方法別表(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関数をはじめとするデータベース関数が強い味方になります。ぜひ実務で活用してみてください。

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