<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>DMAX &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/dmax/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Tue, 26 May 2026 10:49:58 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://mashukabu.com/wp-content/uploads/2022/04/cropped-site-icon-32x32.png</url>
	<title>DMAX &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>スプレッドシートのDMAX関数の使い方｜条件付きで最大値を取る完全ガイド（MAXIFS比較・複数条件・FAQ）</title>
		<link>https://mashukabu.com/spreadsheet-dmax-function/</link>
					<comments>https://mashukabu.com/spreadsheet-dmax-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 26 Mar 2026 11:46:56 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[DMAX]]></category>
		<category><![CDATA[MAX]]></category>
		<category><![CDATA[MAXIFS]]></category>
		<category><![CDATA[スプレッドシート]]></category>
		<category><![CDATA[データベース関数]]></category>
		<category><![CDATA[条件付き最大値]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=5363</guid>

					<description><![CDATA[スプレッドシートのDMAX関数で条件に合うデータの最大値を取得する方法を解説。基本構文、AND/OR条件、MAX・MAXIFSとの使い分け、エラー対処、複数条件の組み方をサンプル付きで完全網羅。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「営業部で一番高い売上はいくらだろう」「商品カテゴリごとの最高単価を調べたい」。こんな場面で、フィルタを毎回かけ直してからMAX関数を使っていませんか。</p>



<p class="wp-block-paragraph">条件が変わるたびにフィルタをかけ直すのは面倒ですよね。しかもフィルタ操作は元のデータ表示そのものを変えてしまうので、共有シートだと他の人の作業にも影響します。「ちょっと営業部だけの最高額を確認したかっただけなのに、誰かのフィルタ設定を上書きしてしまった」という地味な事故は、共同編集の現場ではよくある話です。</p>



<p class="wp-block-paragraph">そんなときに便利なのがDMAX関数です。条件を別のセル範囲に書いておくだけで、該当するデータの最大値を自動で返してくれます。条件セルを書き換えるだけで結果が即座に切り替わるので、定型レポートやダッシュボードと相性抜群です。フィルタを触らないので、他の人の作業を邪魔することもありません。</p>



<p class="wp-block-paragraph">この記事では、DMAX関数の基本構文と引数の役割から解説します。AND/OR条件の書き分け、比較演算子・ワイルドカードによる高度な条件指定、MAX関数・MAXIFS関数との使い分けを順に押さえます。さらにDMIN関数との組み合わせ、よくあるエラーと対処法、実務でつまずきやすいFAQまでまとめて紹介します。読み終わるころには「条件付きで最大値を取るならDMAXで一発」と自信を持って言えるようになりますよ。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-1" checked><label class="toc-title" for="toc-checkbox-1">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">スプレッドシートのDMAX関数とは？ — 条件に合うデータの最大値を返す</a><ol><li><a href="#toc2" tabindex="0">MAX関数との違い（全体の最大値 vs 条件付き最大値）</a></li><li><a href="#toc3" tabindex="0">DMIN関数との関係（最大値と最小値）</a></li></ol></li><li><a href="#toc4" tabindex="0">DMAX関数の書き方（構文と引数）</a><ol><li><a href="#toc5" tabindex="0">基本構文</a></li><li><a href="#toc6" tabindex="0">引数の説明</a></li><li><a href="#toc7" tabindex="0">データベース（第1引数）</a></li><li><a href="#toc8" tabindex="0">フィールド（第2引数）</a></li><li><a href="#toc9" tabindex="0">条件（第3引数）</a></li></ol></li><li><a href="#toc10" tabindex="0">DMAX関数の基本的な使い方</a><ol><li><a href="#toc11" tabindex="0">サンプルデータ</a></li><li><a href="#toc12" tabindex="0">単一条件の書き方（AND条件の基本）</a></li><li><a href="#toc13" tabindex="0">比較演算子を使った条件</a></li></ol></li><li><a href="#toc14" tabindex="0">DMAX関数の使い方｜AND条件・OR条件の書き分け</a><ol><li><a href="#toc15" tabindex="0">AND条件（同じ行に並べる）</a></li><li><a href="#toc16" tabindex="0">OR条件（別の行に並べる）</a></li><li><a href="#toc17" tabindex="0">AND+OR の複合条件</a></li></ol></li><li><a href="#toc18" tabindex="0">比較演算子・ワイルドカードで高度な条件を指定する</a><ol><li><a href="#toc19" tabindex="0">比較演算子の早見表</a></li><li><a href="#toc20" tabindex="0">ワイルドカードの早見表</a></li></ol></li><li><a href="#toc21" tabindex="0">DMAX関数 vs MAX関数 vs MAXIFS関数の使い分け</a><ol><li><a href="#toc22" tabindex="0">3関数の比較表</a></li><li><a href="#toc23" tabindex="0">MAX関数を選ぶべきケース</a></li><li><a href="#toc24" tabindex="0">MAXIFS関数を選ぶべきケース</a></li><li><a href="#toc25" tabindex="0">DMAX関数を選ぶべきケース</a></li></ol></li><li><a href="#toc26" tabindex="0">DMAX関数とDMIN関数の組み合わせ（最大値・最小値の同時集計）</a><ol><li><a href="#toc27" tabindex="0">同じ条件範囲を共有する例</a></li><li><a href="#toc28" tabindex="0">最大値と最小値の差（レンジ）を求める</a></li></ol></li><li><a href="#toc29" tabindex="0">よくあるエラー（#VALUE! / #NUM!）と対処法</a><ol><li><a href="#toc30" tabindex="0">#VALUE! エラー</a></li><li><a href="#toc31" tabindex="0">#NUM! エラー</a></li><li><a href="#toc32" tabindex="0">結果が「0」になる</a></li></ol></li><li><a href="#toc33" tabindex="0">DMAX関数のよくある質問（FAQ）</a><ol><li><a href="#toc34" tabindex="0">Q1. DMAX関数とMAXIFS関数、結局どっちを使えばいい？</a></li><li><a href="#toc35" tabindex="0">Q2. DMAX関数で文字列の最大値（辞書順で最後）は取れる？</a></li><li><a href="#toc36" tabindex="0">Q3. 日付列の最大値（最新日付）はDMAX関数で取れる？</a></li><li><a href="#toc37" tabindex="0">Q4. 空白セルがある列でDMAX関数を使うとどうなる？</a></li><li><a href="#toc38" tabindex="0">Q5. 別シートのデータをDMAX関数で集計できる？</a></li><li><a href="#toc39" tabindex="0">Q6. DMAX関数でN番目に大きい値は取れる？</a></li><li><a href="#toc40" tabindex="0">Q7. 同じ最大値が複数あるとき、どのレコードかを知るには？</a></li><li><a href="#toc41" tabindex="0">Q8. ARRAYFORMULAでDMAXを一気に複数行へ展開できる？</a></li><li><a href="#toc42" tabindex="0">Q9. 条件範囲とデータベース範囲を同じシートに置く必要はある？</a></li></ol></li><li><a href="#toc43" tabindex="0">まとめ｜条件付き最大値はDMAXで一発</a><ol><li><a href="#toc44" tabindex="0">関連記事</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのDMAX関数とは？ — 条件に合うデータの最大値を返す</span></h2>



<p class="wp-block-paragraph">DMAX関数（読み方: ディー マックス）は、<strong>データベース形式の表から条件に合うレコードを探し、指定した列の最大値を返す関数</strong>です。</p>



<p class="wp-block-paragraph">名前は「Database MAX（データベースの最大値）」の略です。<a href="https://mashukabu.com/spreadsheet-dsum-function/">DSUM</a>（条件付き合計）や<a href="https://mashukabu.com/spreadsheet-daverage-function/">DAVERAGE</a>（条件付き平均）、<a href="https://mashukabu.com/spreadsheet-dcounta-function/">DCOUNTA</a>（条件付きカウント）と同じ「データベース関数」の仲間です。引数の指定方法（データベース範囲・フィールド・条件範囲の3つ）はファミリー全体で共通なので、1つ覚えれば芋づる式に他の関数も使えるようになります。</p>



<p class="wp-block-paragraph">DMAX関数の特徴をまとめると、次のとおりです。</p>



<ul class="wp-block-list"><li>条件をセル範囲（条件範囲）で指定するスタイル</li><li>条件範囲を書き換えるだけで集計条件をすぐ切り替えられる</li><li>複数条件（AND条件・OR条件）にも対応</li><li>見出し付きのリスト形式のデータが前提</li><li>ワイルドカード（<code>*</code>・<code>?</code>）や比較演算子（<code>></code>・<code><</code>）にも対応</li><li>数値以外（文字列・空白）は集計対象から自動的に除外される</li></ul>



<p class="wp-block-paragraph"><strong>NOTE</strong></p>



<p class="wp-block-paragraph">DMAX関数はGoogleスプレッドシートの全バージョンで使えます。Excelにも同じ関数があるので、ファイル形式を変換しても式が壊れません。社内でExcel派とスプレッドシート派が混在していても、安心して使い回せます。</p>



<h3 class="wp-block-heading"><span id="toc2">MAX関数との違い（全体の最大値 vs 条件付き最大値）</span></h3>



<p class="wp-block-paragraph">DMAX関数と<a href="https://mashukabu.com/spreadsheet-max-function/">MAX関数</a>の最大の違いは「条件を付けられるかどうか」です。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>MAX関数</th><th>DMAX関数</th></tr></thead><tbody><tr><td>条件指定</td><td>できない（範囲全体が対象）</td><td>できる（条件範囲で絞り込み）</td></tr><tr><td>構文</td><td>=MAX(範囲)</td><td>=DMAX(データベース, フィールド, 条件)</td></tr><tr><td>用途</td><td>シンプルに最大値を求める</td><td>特定の条件に合うデータだけの最大値</td></tr><tr><td>引数の数</td><td>1つ</td><td>3つ</td></tr><tr><td>条件の切り替え</td><td>数式を書き換える</td><td>条件セルを書き換える</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">たとえば「全社の最高金額」を知りたいだけならMAX関数で十分です。「営業部だけの最高金額」「金額10万円未満のなかでの最高額」のように条件を付けたい場面でDMAX関数の出番になります。</p>



<h3 class="wp-block-heading"><span id="toc3">DMIN関数との関係（最大値と最小値）</span></h3>



<p class="wp-block-paragraph">DMAX関数とちょうど対になる関数が<a href="https://mashukabu.com/spreadsheet-dmin-function/">DMIN関数</a>です。同じ条件範囲・同じデータベース範囲を使い、結果が最大値か最小値かだけが違います。「最高額と最低額を並べて表示したい」ようなレポートでは、DMAXとDMINを並べて使うのが定番パターンです。</p>



<h2 class="wp-block-heading"><span id="toc4">DMAX関数の書き方（構文と引数）</span></h2>



<h3 class="wp-block-heading"><span id="toc5">基本構文</span></h3>



<pre class="wp-block-code"><code>=DMAX(データベース, フィールド, 条件)</code></pre>



<p class="wp-block-paragraph">引数は3つで、すべて必須です。省略はできません。</p>



<h3 class="wp-block-heading"><span id="toc6">引数の説明</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>データベース</td><td>必須</td><td>見出し行を含むデータ範囲（例: A1:D100）</td></tr><tr><td>フィールド</td><td>必須</td><td>最大値を求める列の見出し名（文字列）または列番号（数値）</td></tr><tr><td>条件</td><td>必須</td><td>条件を記述したセル範囲（見出し行+条件行）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">それぞれ詳しく見ていきましょう。</p>



<h3 class="wp-block-heading"><span id="toc7">データベース（第1引数）</span></h3>



<p class="wp-block-paragraph">データベースには、<strong>見出し行を含めたデータ範囲</strong>を指定します。先頭行に列の見出し（「部署」「商品名」「金額」など）が入っている必要があります。</p>



<p class="wp-block-paragraph">注意点として、見出し行を含めずにデータ部分だけを指定するとエラーや想定外の結果になります。「A2:D100」ではなく必ず「A1:D100」のように見出し行から指定してください。</p>



<h3 class="wp-block-heading"><span id="toc8">フィールド（第2引数）</span></h3>



<p class="wp-block-paragraph">最大値を求めたい列を指定します。指定方法は2つあります。</p>



<ul class="wp-block-list"><li><strong>文字列で指定</strong>: <code>"金額"</code> のように、見出しと同じ文字列をダブルクォーテーションで囲む</li><li><strong>数値で指定</strong>: データベースの左端列を1として、列の位置を数値で指定する（3列目なら <code>3</code>）</li></ul>



<p class="wp-block-paragraph">文字列で指定するほうが、あとから見たとき何の列を集計しているのかわかりやすいのでおすすめです。列番号指定だと、列の追加・削除があったときに数式を直す必要が出てきます。見出し名で指定しておけば、見出しが変わらない限り壊れません。</p>



<h3 class="wp-block-heading"><span id="toc9">条件（第3引数）</span></h3>



<p class="wp-block-paragraph">条件範囲には、<strong>見出し行と条件行の2行以上のセル範囲</strong>を指定します。これがDMAX関数の最大の特徴です。</p>



<p class="wp-block-paragraph">条件範囲は次のセクションで詳しく説明しますが、ポイントは「見出し+条件値」が必ず2行ペアで必要ということです。1行だけや、見出しなしで条件値だけを書くとうまく動きません。</p>



<p class="wp-block-paragraph"><strong>TIP</strong></p>



<p class="wp-block-paragraph">フィールドに列番号を使う場合、データベース範囲の左端が1です。シートのA列が1とは限らないので注意してください。たとえばデータベースをC1:F100と指定した場合、C列が1・D列が2・E列が3になります。</p>



<h2 class="wp-block-heading"><span id="toc10">DMAX関数の基本的な使い方</span></h2>



<h3 class="wp-block-heading"><span id="toc11">サンプルデータ</span></h3>



<p class="wp-block-paragraph">次のような売上データを使って説明します。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>A</th><th>B</th><th>C</th><th>D</th></tr></thead><tbody><tr><td>1</td><td>部署</td><td>担当者</td><td>商品</td><td>金額</td></tr><tr><td>2</td><td>営業部</td><td>田中</td><td>ノートPC</td><td>150000</td></tr><tr><td>3</td><td>総務部</td><td>鈴木</td><td>プリンター</td><td>35000</td></tr><tr><td>4</td><td>営業部</td><td>佐藤</td><td>モニター</td><td>48000</td></tr><tr><td>5</td><td>経理部</td><td>高橋</td><td>ノートPC</td><td>150000</td></tr><tr><td>6</td><td>営業部</td><td>田中</td><td>キーボード</td><td>8000</td></tr><tr><td>7</td><td>総務部</td><td>伊藤</td><td>モニター</td><td>48000</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc12">単一条件の書き方（AND条件の基本）</span></h3>



<p class="wp-block-paragraph">DMAX関数の条件は、<strong>別のセル範囲</strong>に書きます。ここが<a href="https://mashukabu.com/spreadsheet-maxifs-function/">MAXIFS関数</a>との大きな違いです。</p>



<p class="wp-block-paragraph">条件範囲は次のルールで作ります。</p>



<ul class="wp-block-list"><li><strong>1行目に見出しを書く</strong> — データベースの見出しと完全に同じ文字列を使う</li><li><strong>2行目に条件値を書く</strong> — 一致させたい値を入力する</li></ul>



<p class="wp-block-paragraph">たとえば「営業部」の金額で最大値を求めたい場合、シートの空いているエリア（たとえばF1:F2）に次のように書きます。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>F</th></tr></thead><tbody><tr><td>1</td><td>部署</td></tr><tr><td>2</td><td>営業部</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">数式はこうなります。</p>



<pre class="wp-block-code"><code>=DMAX(A1:D7, &quot;金額&quot;, F1:F2)</code></pre>



<p class="wp-block-paragraph">結果は <strong>150000</strong> です。営業部の3件（150000、48000、8000）のうち最も大きい値が返されます。</p>



<p class="wp-block-paragraph"><strong>TIP</strong></p>



<p class="wp-block-paragraph">条件範囲の見出しは、データベースの見出しと1文字でも違うとエラーや「結果が0」の原因になります。半角スペースが混ざる・全角と半角が混在する・末尾に改行が入るなど、目視で気づきにくいパターンも多いので、コピー&ペーストで作るのが確実です。</p>



<h3 class="wp-block-heading"><span id="toc13">比較演算子を使った条件</span></h3>



<p class="wp-block-paragraph">条件値には比較演算子も使えます。</p>



<figure class="wp-block-table"><table><thead><tr><th>条件値の書き方</th><th>意味</th></tr></thead><tbody><tr><td>営業部</td><td>「営業部」と完全一致</td></tr><tr><td><code>>=50000</code></td><td>50,000以上</td></tr><tr><td><code><>営業部</code></td><td>「営業部」以外</td></tr><tr><td><code>>=2024/4/1</code></td><td>2024年4月1日以降（日付）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">たとえば「金額が50,000未満」のレコードのうち最大値を求めたい場合は、条件範囲をこう書きます。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>F</th></tr></thead><tbody><tr><td>1</td><td>金額</td></tr><tr><td>2</td><td><code><50000</code></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">このとき数式は <code>=DMAX(A1:D7, "金額", F1:F2)</code> のままです。結果は <strong>48000</strong> になります。50,000未満の最大値であるモニター（48000）が返されます。</p>



<p class="wp-block-paragraph"><strong>TIP</strong></p>



<p class="wp-block-paragraph">比較演算子はセルに<strong>そのまま入力</strong>します。シングルクォートやダブルクォートで囲む必要はありません。<code><50000</code> とセルに入力するだけで条件として認識されます。</p>



<h2 class="wp-block-heading"><span id="toc14">DMAX関数の使い方｜AND条件・OR条件の書き分け</span></h2>



<p class="wp-block-paragraph">DMAX関数の本領は、複数条件を扱えることです。AND条件とOR条件の書き分けは、<strong>「同じ行に書く」か「別の行に書く」か</strong>で決まります。</p>



<h3 class="wp-block-heading"><span id="toc15">AND条件（同じ行に並べる）</span></h3>



<p class="wp-block-paragraph">複数の条件を<strong>すべて満たす</strong>レコードに絞り込むのがAND条件です。条件範囲の同じ行に条件を横並びに書きます。</p>



<p class="wp-block-paragraph">たとえば「営業部 かつ 金額50,000以上」の最大値を求めたい場合、条件範囲をこう書きます。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>F</th><th>G</th></tr></thead><tbody><tr><td>1</td><td>部署</td><td>金額</td></tr><tr><td>2</td><td>営業部</td><td><code>>=50000</code></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">数式は次のとおりです。</p>



<pre class="wp-block-code"><code>=DMAX(A1:D7, &quot;金額&quot;, F1:G2)</code></pre>



<p class="wp-block-paragraph">結果は <strong>150000</strong> です。営業部かつ50,000以上の条件を満たす2件（150000、ノートPC）のうち最大値が返ります。</p>



<h3 class="wp-block-heading"><span id="toc16">OR条件（別の行に並べる）</span></h3>



<p class="wp-block-paragraph">複数の条件のうち<strong>いずれか1つを満たせばよい</strong>のがOR条件です。条件範囲の別々の行に条件を縦並びに書きます。</p>



<p class="wp-block-paragraph">たとえば「営業部 または 総務部」の最大値を求めたい場合は次のとおりです。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>F</th></tr></thead><tbody><tr><td>1</td><td>部署</td></tr><tr><td>2</td><td>営業部</td></tr><tr><td>3</td><td>総務部</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">数式はこうなります。</p>



<pre class="wp-block-code"><code>=DMAX(A1:D7, &quot;金額&quot;, F1:F3)</code></pre>



<p class="wp-block-paragraph">結果は <strong>150000</strong>（営業部のノートPC）です。営業部または総務部のレコードすべてを対象とした最大値が返ります。</p>



<h3 class="wp-block-heading"><span id="toc17">AND+OR の複合条件</span></h3>



<p class="wp-block-paragraph">「営業部で50,000以上」または「総務部で30,000以上」のような複合条件も書けます。AND条件を行ごとに書き、それを縦に並べるとOR条件として解釈されます。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>F</th><th>G</th></tr></thead><tbody><tr><td>1</td><td>部署</td><td>金額</td></tr><tr><td>2</td><td>営業部</td><td><code>>=50000</code></td></tr><tr><td>3</td><td>総務部</td><td><code>>=30000</code></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">数式は <code>=DMAX(A1:D7, "金額", F1:G3)</code> で、結果は <strong>150000</strong> です。営業部の150000・48000と総務部の35000・48000が候補となり、その中の最大値が返ります。</p>



<p class="wp-block-paragraph"><strong>NOTE</strong></p>



<p class="wp-block-paragraph">AND条件は「列方向」、OR条件は「行方向」と覚えると間違えにくくなります。横並びはAND、縦並びはORという視覚的なルールです。</p>



<h2 class="wp-block-heading"><span id="toc18">比較演算子・ワイルドカードで高度な条件を指定する</span></h2>



<p class="wp-block-paragraph">DMAX関数の条件範囲では、完全一致だけでなく比較演算子・ワイルドカードを使った柔軟な条件指定ができます。</p>



<h3 class="wp-block-heading"><span id="toc19">比較演算子の早見表</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>演算子</th><th>意味</th><th>記入例</th></tr></thead><tbody><tr><td><code>=</code></td><td>等しい（完全一致は省略可）</td><td><code>=営業部</code></td></tr><tr><td><code>></code></td><td>より大きい</td><td><code>>50000</code></td></tr><tr><td><code><</code></td><td>より小さい</td><td><code><50000</code></td></tr><tr><td><code>>=</code></td><td>以上</td><td><code>>=50000</code></td></tr><tr><td><code><=</code></td><td>以下</td><td><code><=50000</code></td></tr><tr><td><code><></code></td><td>等しくない</td><td><code><>営業部</code></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">数値だけでなく日付にも使えます。<code>>=2024/4/1</code> のように書けば「2024年4月1日以降」と解釈されます。</p>



<h3 class="wp-block-heading"><span id="toc20">ワイルドカードの早見表</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>記号</th><th>意味</th><th>記入例</th></tr></thead><tbody><tr><td><code>*</code></td><td>0文字以上の任意の文字列</td><td><code>ノート*</code>（「ノート」で始まるすべて）</td></tr><tr><td><code>?</code></td><td>任意の1文字</td><td><code>?ート</code>（2文字目から「ート」）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">たとえば「商品名が『ノート』で始まる」レコードの最大値を求めたい場合、条件範囲をこう書きます。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>F</th></tr></thead><tbody><tr><td>1</td><td>商品</td></tr><tr><td>2</td><td><code>ノート*</code></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">数式は <code>=DMAX(A1:D7, "金額", F1:F2)</code> で、結果は <strong>150000</strong>（ノートPC）です。</p>



<p class="wp-block-paragraph"><strong>TIP</strong></p>



<p class="wp-block-paragraph">完全一致と部分一致を切り替えたい場合、完全一致は単に「営業部」と書き、部分一致は「営業<em>」のように <code></em></code> を付けるだけです。Excelでは <code>="=営業部"</code> のような特殊記法が必要なケースもありますが、Googleスプレッドシートのほうがシンプルに書けます。</p>



<h2 class="wp-block-heading"><span id="toc21">DMAX関数 vs MAX関数 vs MAXIFS関数の使い分け</span></h2>



<p class="wp-block-paragraph">条件付きで最大値を取る方法は、DMAX・MAX・MAXIFSの3つから選べます。場面ごとの使い分けを整理しておきます。</p>



<h3 class="wp-block-heading"><span id="toc22">3関数の比較表</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>MAX</th><th>MAXIFS</th><th>DMAX</th></tr></thead><tbody><tr><td>条件指定</td><td>不可</td><td>AND条件のみ（127ペアまで）</td><td>AND・OR・複合すべて可</td></tr><tr><td>条件の書き方</td><td>不要</td><td>数式内に範囲・条件をペア指定</td><td>条件範囲（表形式）で指定</td></tr><tr><td>条件の切り替え</td><td>数式を書き換える</td><td>数式の引数を書き換える</td><td>条件セルを書き換える</td></tr><tr><td>ワイルドカード</td><td>不要</td><td><code>*</code>・<code>?</code> 使用可</td><td><code>*</code>・<code>?</code> 使用可</td></tr><tr><td>OR条件</td><td>不可</td><td><code>=MAX(MAXIFS, MAXIFS)</code> で代用</td><td>条件範囲の別行に書くだけ</td></tr><tr><td>数式の可読性</td><td>高（範囲のみ）</td><td>中（条件が増えると長くなる）</td><td>高（数式は短い・条件は表で確認）</td></tr><tr><td>ダッシュボード向き</td><td>×</td><td>△</td><td>◎</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc23">MAX関数を選ぶべきケース</span></h3>



<p class="wp-block-paragraph">条件がいっさい不要で「範囲全体の最大値」だけ知りたい場面はMAX関数が最短です。<code>=MAX(D2:D7)</code> のように1引数で済みます。</p>



<h3 class="wp-block-heading"><span id="toc24">MAXIFS関数を選ぶべきケース</span></h3>



<p class="wp-block-paragraph">条件が<strong>固定</strong>で、AND条件しか使わないならMAXIFSが扱いやすいです。たとえば月次レポートで「営業部の今月の最高額」のように条件が決まっているケースを考えます。この場合、<code>=MAXIFS(D2:D7, A2:A7, "営業部")</code> のように1セルで完結します。条件範囲を別途用意する手間がありません。</p>



<h3 class="wp-block-heading"><span id="toc25">DMAX関数を選ぶべきケース</span></h3>



<p class="wp-block-paragraph">次のいずれかに該当するならDMAX関数を選びましょう。</p>



<ul class="wp-block-list"><li>条件をドロップダウンなどで<strong>頻繁に切り替える</strong>(ダッシュボード用途)</li><li><strong>OR条件</strong>を使いたい</li><li>複数のAND条件・OR条件を組み合わせた<strong>複合条件</strong>を使いたい</li><li>集計条件をシート上で<strong>見える化したい</strong>(条件範囲が「いま何で絞り込んでいるか」のドキュメントになる)</li></ul>



<p class="wp-block-paragraph"><strong>NOTE</strong></p>



<p class="wp-block-paragraph">「ダッシュボードはDMAX、定型レポートはMAXIFS」と覚えると判断が早くなります。DMAXは条件範囲をシート上に見せられるので、レビュー時に「何で絞り込んでるんだっけ？」となりにくいメリットがあります。</p>



<h2 class="wp-block-heading"><span id="toc26">DMAX関数とDMIN関数の組み合わせ（最大値・最小値の同時集計）</span></h2>



<p class="wp-block-paragraph">DMAX関数とDMIN関数は引数の構造がまったく同じで、結果が最大値か最小値かだけが違います。レポートで「最高額と最低額を並べたい」ときは、同じ条件範囲を共有して2つの関数を並べるのが定番パターンです。</p>



<h3 class="wp-block-heading"><span id="toc27">同じ条件範囲を共有する例</span></h3>



<p class="wp-block-paragraph">「営業部の最高金額と最低金額」を並べて表示する例です。条件範囲を F1:F2 に作っておきます。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>F</th></tr></thead><tbody><tr><td>1</td><td>部署</td></tr><tr><td>2</td><td>営業部</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">最高額と最低額のセルにそれぞれ次の数式を書きます。</p>



<pre class="wp-block-code"><code>=DMAX(A1:D7, &quot;金額&quot;, F1:F2)
=DMIN(A1:D7, &quot;金額&quot;, F1:F2)</code></pre>



<p class="wp-block-paragraph">条件セル（F2）を「総務部」に書き換えると、最高額と最低額が同時に切り替わります。ダッシュボードでドロップダウンと連動させると、部署選択1つで集計値がまとめて更新される作りになります。</p>



<h3 class="wp-block-heading"><span id="toc28">最大値と最小値の差（レンジ）を求める</span></h3>



<p class="wp-block-paragraph">「最高額と最低額の差」を1セルで求めたい場合は、DMAXとDMINを引き算するだけです。</p>



<pre class="wp-block-code"><code>=DMAX(A1:D7, &quot;金額&quot;, F1:F2) - DMIN(A1:D7, &quot;金額&quot;, F1:F2)</code></pre>



<p class="wp-block-paragraph">価格帯のばらつきや売上のレンジを可視化したいレポートで便利です。</p>



<p class="wp-block-paragraph"><strong>TIP</strong></p>



<p class="wp-block-paragraph">DMAX/DMINと同じ条件範囲を共有することで、<a href="https://mashukabu.com/spreadsheet-dsum-function/">DSUM</a>（合計）・<a href="https://mashukabu.com/spreadsheet-daverage-function/">DAVERAGE</a>（平均）・<a href="https://mashukabu.com/spreadsheet-dcounta-function/">DCOUNTA</a>（件数）も同時に並べられます。1つの条件で「件数・合計・平均・最大・最小」を一覧化するサマリ表が作れます。</p>



<h2 class="wp-block-heading"><span id="toc29">よくあるエラー（#VALUE! / #NUM!）と対処法</span></h2>



<p class="wp-block-paragraph">DMAX関数でよく遭遇するエラーと原因を整理します。</p>



<h3 class="wp-block-heading"><span id="toc30">#VALUE! エラー</span></h3>



<p class="wp-block-paragraph"><strong>原因1：フィールドの列名がデータベースの見出しと一致しない</strong></p>



<p class="wp-block-paragraph"><code>"金額 "</code> のように末尾にスペースが入っている、<code>"金 額"</code> のように全角スペースが入っているなど、見た目では気づきにくいパターンが多いです。データベース範囲の見出しセルから値をコピーして使うのが確実です。</p>



<p class="wp-block-paragraph"><strong>原因2：条件範囲の見出しがデータベースの見出しと一致しない</strong></p>



<p class="wp-block-paragraph">条件範囲の1行目（ラベル行）にミスタイプがあるとエラーになります。こちらもコピー&ペーストで作るのが鉄則です。</p>



<p class="wp-block-paragraph"><strong>原因3：データベース範囲の指定ミス</strong></p>



<p class="wp-block-paragraph">見出し行を含まずにデータ部分だけを指定すると <code>#VALUE!</code> になる場合があります。<code>A2:D7</code> ではなく <code>A1:D7</code> のように見出し行から含めて指定してください。</p>



<h3 class="wp-block-heading"><span id="toc31">#NUM! エラー</span></h3>



<p class="wp-block-paragraph"><strong>原因：条件に合致するレコードが0件</strong></p>



<p class="wp-block-paragraph">該当データが存在しない条件を指定すると <code>#NUM!</code> が返ります。たとえば「営業部 かつ 金額500,000以上」のように、実データに存在しない条件を組むと発生します。</p>



<p class="wp-block-paragraph">エラーを回避したい場合は、IFERROR関数で包んで代替値を返す方法があります。</p>



<pre class="wp-block-code"><code>=IFERROR(DMAX(A1:D7, &quot;金額&quot;, F1:G2), &quot;該当なし&quot;)</code></pre>



<h3 class="wp-block-heading"><span id="toc32">結果が「0」になる</span></h3>



<p class="wp-block-paragraph">エラーではなく<strong>0が返る</strong>場合は、次の3つを疑ってください。</p>



<ol class="wp-block-list"><li><strong>見出しの不一致</strong>：データベース見出しと条件範囲見出しが完全一致していない（最頻出）</li><li><strong>フィールド列に数値がない</strong>：DMAXは数値列を対象とするため、文字列列を指定すると0が返る</li><li><strong>条件範囲に空白行が混入</strong>：条件範囲の中に空白行があると「すべて一致」と解釈され、想定外の値が返る</li></ol>



<p class="wp-block-paragraph"><strong>NOTE</strong></p>



<p class="wp-block-paragraph">「結果が0」のトラブルは、9割が見出しの不一致です。エラーメッセージが出ないので原因に気づきにくく、最も時間を吸われる落とし穴です。条件範囲の見出しは必ずデータベースからコピー&ペーストで作りましょう。</p>



<h2 class="wp-block-heading"><span id="toc33">DMAX関数のよくある質問（FAQ）</span></h2>



<h3 class="wp-block-heading"><span id="toc34">Q1. DMAX関数とMAXIFS関数、結局どっちを使えばいい？</span></h3>



<p class="wp-block-paragraph">条件を<strong>頻繁に切り替える</strong>ならDMAX、<strong>条件が固定</strong>ならMAXIFSです。たとえば部署別ダッシュボードのようにドロップダウンで条件を切り替える作りならDMAXが向いています。一方、月初の定型レポートで「営業部の今月の最高額」のように条件が決まっているならMAXIFSがシンプルです。</p>



<p class="wp-block-paragraph">OR条件が必要なときはDMAX一択になります。MAXIFSはAND条件しか直接書けないので、OR条件は数式を分けるか配列数式に頼る必要があります。</p>



<h3 class="wp-block-heading"><span id="toc35">Q2. DMAX関数で文字列の最大値（辞書順で最後）は取れる？</span></h3>



<p class="wp-block-paragraph">取れません。DMAX関数は<strong>数値の最大値</strong>を返す関数です。文字列の列を指定すると0が返ります。</p>



<p class="wp-block-paragraph">辞書順での最大値を取りたい場合は、データを並べ替えてからINDEXやFILTER関数で取得するか、SORT関数と組み合わせる方法があります。</p>



<h3 class="wp-block-heading"><span id="toc36">Q3. 日付列の最大値（最新日付）はDMAX関数で取れる？</span></h3>



<p class="wp-block-paragraph">取れます。スプレッドシートの日付は内部的にはシリアル値（数値）なので、DMAX関数で問題なく動作します。「営業部の最新の取引日」のような集計に便利です。</p>



<p class="wp-block-paragraph">ただし表示形式が「日付」になっていないと、結果がシリアル値（45000のような数値）で表示されます。結果セルの表示形式を「日付」に変えてください。</p>



<h3 class="wp-block-heading"><span id="toc37">Q4. 空白セルがある列でDMAX関数を使うとどうなる？</span></h3>



<p class="wp-block-paragraph">空白セルは無視されます。DMAX関数は数値が入っているセルだけを集計対象にするので、空白や文字列が混ざっていても結果に影響しません。</p>



<p class="wp-block-paragraph">ただし<strong>条件範囲のほうに空白行が混ざる</strong>と「すべて一致」と解釈されてしまうので、条件範囲は空白行を含めないようにしてください。</p>



<h3 class="wp-block-heading"><span id="toc38">Q5. 別シートのデータをDMAX関数で集計できる？</span></h3>



<p class="wp-block-paragraph">できます。データベースの引数にシート名を含めて指定するだけです。</p>



<pre class="wp-block-code"><code>=DMAX('売上データ'!A1:D100, &quot;金額&quot;, F1:F2)</code></pre>



<p class="wp-block-paragraph">シート名にスペースや日本語が含まれる場合は、シングルクォーテーション（<code>'</code>）で囲むのがポイントです。</p>



<h3 class="wp-block-heading"><span id="toc39">Q6. DMAX関数でN番目に大きい値は取れる？</span></h3>



<p class="wp-block-paragraph">取れません。DMAX関数は最大値（1番大きい値）専用です。</p>



<p class="wp-block-paragraph">N番目に大きい値が必要な場合は、LARGE関数を使うか、QUERY関数でORDER BYを使ってソートしてから取得する方法があります。条件付きでN番目を取りたい場合は、FILTER関数とLARGE関数を組み合わせるのが定番です。</p>



<h3 class="wp-block-heading"><span id="toc40">Q7. 同じ最大値が複数あるとき、どのレコードかを知るには？</span></h3>



<p class="wp-block-paragraph">DMAX関数は「最大値そのもの」しか返さないので、「どの担当者か」「どの商品か」までは取れません。</p>



<p class="wp-block-paragraph">最大値を持つレコードの他の列の値を取りたい場合は、<a href="https://mashukabu.com/spreadsheet-dget-function/">DGET関数</a>や、INDEX+MATCHの組み合わせを使います。「営業部の最高額の担当者名」のような集計は、DMAXで最高額を求め、その値を条件にDGETで担当者名を引く、という二段構えにするのが実務的です。</p>



<h3 class="wp-block-heading"><span id="toc41">Q8. ARRAYFORMULAでDMAXを一気に複数行へ展開できる？</span></h3>



<p class="wp-block-paragraph">できません。DMAX関数は<strong>単一値を返すスカラー関数</strong>なので、ARRAYFORMULAで配列展開できない仕様です。</p>



<p class="wp-block-paragraph">部署ごとなど複数の集計結果を一気に並べたい場合は、QUERY関数の <code>GROUP BY</code> を使うか、各行に個別のDMAX数式を入れる必要があります。「部署一覧をユニーク化 → 各行にDMAX」というパターンが実務でよく使われます。</p>



<h3 class="wp-block-heading"><span id="toc42">Q9. 条件範囲とデータベース範囲を同じシートに置く必要はある？</span></h3>



<p class="wp-block-paragraph">ありません。条件範囲は別シートに置いてもまったく問題なく動きます。</p>



<p class="wp-block-paragraph">ただし可読性の面では、データベースと条件範囲は同じシートにまとめておくほうがメンテナンスしやすいです。ダッシュボードのように「表示シートと集計シートを分けたい」場合のみ、別シート参照を使うとよいでしょう。</p>



<h2 class="wp-block-heading"><span id="toc43">まとめ｜条件付き最大値はDMAXで一発</span></h2>



<p class="wp-block-paragraph">DMAX関数は、データベース形式の表から条件に合うデータの最大値を求める関数です。フィルタを触らずに条件付き集計ができるので、共有シートやダッシュボードと相性抜群です。</p>



<p class="wp-block-paragraph">ポイントを整理します。</p>



<ul class="wp-block-list"><li>構文は <code>=DMAX(データベース, フィールド, 条件)</code> で、引数は3つすべて必須</li><li>条件は数式内ではなく<strong>セル範囲（条件範囲）に書く</strong>のが特徴</li><li>条件範囲は「見出し行+条件行」のセットで作る</li><li><strong>AND条件は同じ行</strong>に横並び、<strong>OR条件は別の行</strong>に縦並びで書く</li><li>条件セルの値を変えるだけで集計対象を切り替えられる</li><li>比較演算子（<code>></code>・<code><</code>・<code>>=</code>・<code><=</code>・<code><></code>）やワイルドカード（<code>*</code>・<code>?</code>）も使える</li><li>全体の最大値はMAX、AND条件のみならMAXIFS、複雑な条件やOR条件・ダッシュボード用途はDMAXが最適</li><li>DMINと組み合わせれば「最高額・最低額・レンジ」を同じ条件範囲で一気に集計できる</li><li>結果が0になるときは「見出しの不一致」をまずチェック</li><li><code>#NUM!</code> は該当データ0件、<code>#VALUE!</code> は引数や見出しの問題</li><li>最大値を持つレコードの他の列が知りたいときはDGET関数と組み合わせる</li></ul>



<p class="wp-block-paragraph">まずは簡単な表で <code>=DMAX(A1:D7, "金額", F1:F2)</code> から試してみてください。条件セルを書き換えて結果が変わる感覚をつかめば、データベース関数全体への理解がぐっと深まりますよ。</p>



<h3 class="wp-block-heading"><span id="toc44">関連記事</span></h3>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/spreadsheet-dmin-function/">スプレッドシートのDMIN関数の使い方｜条件に合う最小値</a></li><li><a href="https://mashukabu.com/spreadsheet-dget-function/">スプレッドシートのDGET関数の使い方｜条件に合う1つの値</a></li><li><a href="https://mashukabu.com/spreadsheet-dcounta-function/">スプレッドシートのDCOUNTA関数の使い方｜文字列も含めて条件付きカウント</a></li><li><a href="https://mashukabu.com/spreadsheet-dsum-function/">スプレッドシートのDSUM関数の使い方｜条件に合う合計</a></li><li><a href="https://mashukabu.com/spreadsheet-daverage-function/">スプレッドシートのDAVERAGE関数の使い方｜条件に合う平均</a></li><li><a href="https://mashukabu.com/spreadsheet-max-function/">スプレッドシートのMAX関数の使い方｜最大値を一発取得</a></li><li><a href="https://mashukabu.com/spreadsheet-maxifs-function/">スプレッドシートのMAXIFS関数の使い方｜条件付き最大値</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-dmax-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【エクセル】DMAX関数で条件を満たす数値データの最大値を求める</title>
		<link>https://mashukabu.com/excel-function-howto-use-dmax/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-dmax/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Tue, 09 May 2023 09:00:00 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[DMAX]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[データベース関数]]></category>
		<category><![CDATA[最大値]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=3354</guid>

					<description><![CDATA[ExcelのDMAX関数は、データベース形式の表から条件に一致するレコードの最大値を求める関数です。構文・引数・使用例に加え、MAXIFS関数との使い分けや他のデータベース関数（DSUM/DMIN/DAVERAGE/DCOUNT）との比較、検索条件（criteria）の設定方法まで丁寧に解説します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">この記事ではExcelのDMAX関数について解説します。DMAX関数は「データベース形式の表から、指定した条件に一致するレコードの中で最大値を返す」関数です。売上表から特定の店舗・期間の最高売上を抽出したり、成績表から特定クラスの最高点を取り出したりと、実務で重宝する関数のひとつです。</p>



<p class="wp-block-paragraph">この記事は次のような方におすすめです。</p>



<ul class="wp-block-list"><li>条件を満たす数値データの最大値を求めたい</li><li>DMAX関数とMAXIFS関数の違いを知りたい</li><li>他のデータベース関数（DSUM・DAVERAGE・DMIN・DCOUNT）との使い分けを整理したい</li><li>検索条件（criteria）の書き方が分からない</li></ul>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">DMAX関数とは</a><ol><li><a href="#toc2" tabindex="0">読み方と機能</a></li><li><a href="#toc3" tabindex="0">DMAX関数が力を発揮する場面</a></li></ol></li><li><a href="#toc4" tabindex="0">DMAX関数の構文</a><ol><li><a href="#toc5" tabindex="0">引数1：データベース</a></li><li><a href="#toc6" tabindex="0">引数2：フィールド</a></li><li><a href="#toc7" tabindex="0">引数3：検索条件</a></li></ol></li><li><a href="#toc8" tabindex="0">検索条件（criteria）の書き方パターン</a><ol><li><a href="#toc9" tabindex="0">パターン1：単一条件</a></li><li><a href="#toc10" tabindex="0">パターン2：AND条件（同じ行に複数列を並べる）</a></li><li><a href="#toc11" tabindex="0">パターン3：OR条件（条件を別の行に書く）</a></li><li><a href="#toc12" tabindex="0">パターン4：比較演算子</a></li></ol></li><li><a href="#toc13" tabindex="0">ワイルドカードを使った部分一致条件</a></li><li><a href="#toc14" tabindex="0">日付範囲（期間）で絞り込む条件</a></li><li><a href="#toc15" tabindex="0">AND条件とOR条件を組み合わせる（複合条件）</a></li><li><a href="#toc16" tabindex="0">DMAX関数の使用例</a><ol><li><a href="#toc17" tabindex="0">例1：特定支店の最高売上</a></li><li><a href="#toc18" tabindex="0">例2：AND条件（支店 × 担当）</a></li><li><a href="#toc19" tabindex="0">例3：比較演算子を使った条件</a></li></ol></li><li><a href="#toc20" tabindex="0">最大値だけでなく「その行の担当者名や日付」も取り出したい</a></li><li><a href="#toc21" tabindex="0">Excelテーブル（構造化参照）と組み合わせる</a></li><li><a href="#toc22" tabindex="0">DMAX関数に関するよくある質問（FAQ）</a><ol><li><a href="#toc23" tabindex="0">Q1. 検索条件に空白行が含まれているとどうなりますか</a></li><li><a href="#toc24" tabindex="0">Q2. 条件を毎回入力するのが面倒です。もっとラクに切り替えられませんか</a></li><li><a href="#toc25" tabindex="0">Q3. DMAXで出した最大値と同じ行の担当者名を取り出すにはどうすればいいですか</a></li><li><a href="#toc26" tabindex="0">Q4. GoogleスプレッドシートでもDMAX関数は使えますか</a></li><li><a href="#toc27" tabindex="0">Q5. DMAXとMAXIFSはどちらを使うべきですか</a></li></ol></li><li><a href="#toc28" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">DMAX関数とは</span></h2>



<h3 class="wp-block-heading"><span id="toc2">読み方と機能</span></h3>



<p class="wp-block-paragraph">読み方は「ディーマックス」関数です。頭文字の「D」はデータベース（Database）を表しており、Excelの「データベース関数」グループに属します。DMAX関数は、データベース形式の表（1行目が見出し、2行目以降がレコード）の中から、指定したフィールド（列）を検索し、条件を満たすレコードの最大値を返します。</p>



<h3 class="wp-block-heading"><span id="toc3">DMAX関数が力を発揮する場面</span></h3>



<p class="wp-block-paragraph">次のようなシーンで特に便利です。</p>



<ul class="wp-block-list"><li>「東京支店かつ2025年度」の最大売上を一発で取り出したい</li><li>「営業部」の中での最高年齢・最年少を調べたい</li><li>複数条件（AND・OR）を柔軟に切り替えながら集計したい</li></ul>



<p class="wp-block-paragraph">単純な最大値なら<code>MAX</code>関数、1条件・複数条件付きなら<code>MAXIFS</code>関数でも対応できますが、「条件が頻繁に変わる」「複雑なAND/OR条件を扱う」ケースではDMAX関数の柔軟性が光ります。</p>



<h2 class="wp-block-heading"><span id="toc4">DMAX関数の構文</span></h2>



<pre class="wp-block-code"><code>=DMAX(データベース, フィールド, 検索条件)</code></pre>



<p class="wp-block-paragraph">引数は3つあり、すべて必須です。</p>



<h3 class="wp-block-heading"><span id="toc5">引数1：データベース</span></h3>



<p class="wp-block-paragraph">データベース形式の表全体を、<strong>見出し行（1行目）を含めて</strong>指定します。例えば表が<code>B2:E10</code>にあり、<code>B2:E2</code>が見出しなら、<code>B2:E10</code>を指定します。見出しを含めないとエラーまたは意図しない結果になるので注意しましょう。</p>



<h3 class="wp-block-heading"><span id="toc6">引数2：フィールド</span></h3>



<p class="wp-block-paragraph">最大値を求めたい列（フィールド）を指定します。指定方法は次の3通りがあります。</p>



<ol class="wp-block-list"><li>見出し文字列をダブルクォーテーションで囲む：<code>"売上"</code></li><li>データベースの左から何列目かを数字で指定：<code>3</code></li><li>見出しセルを直接参照：<code>D2</code></li></ol>



<p class="wp-block-paragraph">実務では<strong>見出し文字列で指定する方法がおすすめ</strong>です。列順が変わっても式が壊れにくく、後から読み返したときに意図が伝わりやすいためです。</p>



<h3 class="wp-block-heading"><span id="toc7">引数3：検索条件</span></h3>



<p class="wp-block-paragraph">検索条件（criteria）は、<strong>見出し行と条件行の2行以上で構成される別表</strong>として用意します。例えば「支店が東京」という条件なら、次のように書きます。</p>



<figure class="wp-block-table"><table><thead><tr><th>支店</th></tr></thead><tbody><tr><td>東京</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">この2セル（<code>F1:F2</code>）を検索条件として指定します。条件を書き換えるだけで集計結果が変わるため、ダッシュボード的に使えるのがデータベース関数の最大の強みです。</p>



<h2 class="wp-block-heading"><span id="toc8">検索条件（criteria）の書き方パターン</span></h2>



<p class="wp-block-paragraph">DMAX関数の要となるのが検索条件の書き方です。代表的な4パターンを押さえておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc9">パターン1：単一条件</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>部署</th></tr></thead><tbody><tr><td>営業部</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「部署が営業部」のレコードのみを対象にします。</p>



<h3 class="wp-block-heading"><span id="toc10">パターン2：AND条件（同じ行に複数列を並べる）</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>部署</th><th>年度</th></tr></thead><tbody><tr><td>営業部</td><td>2025</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「部署が営業部 <strong>かつ</strong> 年度が2025」のように、<strong>同じ行に条件を並べるとAND</strong>になります。</p>



<h3 class="wp-block-heading"><span id="toc11">パターン3：OR条件（条件を別の行に書く）</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>部署</th></tr></thead><tbody><tr><td>営業部</td></tr><tr><td>広報部</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「部署が営業部 <strong>または</strong> 広報部」のように、<strong>条件を別の行に書くとOR</strong>になります。</p>



<h3 class="wp-block-heading"><span id="toc12">パターン4：比較演算子</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>売上</th></tr></thead><tbody><tr><td>>=1000000</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「売上が100万円以上」のように、<code>>=</code>や<code><</code>などの比較演算子を使うこともできます。数値フィールドに対する条件はこの書き方が基本です。</p>



<h2 class="wp-block-heading"><span id="toc13">ワイルドカードを使った部分一致条件</span></h2>



<p class="wp-block-paragraph">「支店名に"東"を含む」「担当者名が"田"から始まる」のように、文字の一部だけで絞り込みたいケースは実務でよくあります。DMAX関数の検索条件（criteria）では、ワイルドカードを使った部分一致が可能です。</p>



<p class="wp-block-paragraph">使えるワイルドカードは2種類です。</p>



<ul class="wp-block-list"><li><code>*</code>（アスタリスク）：0文字以上の任意の文字列</li><li><code>?</code>（疑問符）：任意の1文字</li></ul>



<p class="wp-block-paragraph">例えば「支店名に"東"を含む」レコードを対象にしたいなら、検索条件を次のように書きます。</p>



<figure class="wp-block-table"><table><thead><tr><th>支店</th></tr></thead><tbody><tr><td><em>東</em></td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><code><em>東</em></code> は「前後に任意の文字列があってもよく、その中に"東"が含まれる」という意味になります。結果として「東京」「関東」「城東」など、"東"を含むすべてのレコードがマッチします。</p>



<p class="wp-block-paragraph">「"田"から始まる担当者」なら、後ろにだけ <code>*</code> を付けます。</p>



<figure class="wp-block-table"><table><thead><tr><th>担当</th></tr></thead><tbody><tr><td>田*</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">これで「田中」「田村」「田口」などにマッチします。逆に「中で終わる」なら <code>*中</code> と書きます。</p>



<p class="wp-block-paragraph">なお<code>MAXIFS</code>関数でもワイルドカードは使えますが、その場合は条件を数式内に文字列として渡します（例：<code>"<em>東</em>"</code>）。条件を表で管理できるDMAXのほうが、書き換えるだけで対象を切り替えられて扱いやすい場面が多いです。</p>



<h2 class="wp-block-heading"><span id="toc14">日付範囲（期間）で絞り込む条件</span></h2>



<p class="wp-block-paragraph">「2025年4月1日から6月30日までの最高売上を出したい」というように、日付や数値を<strong>範囲（〜以上かつ〜以下）</strong>で絞りたいケースも頻出です。この場合は、検索条件の表に<strong>同じフィールドを2列並べて</strong>、それぞれに比較演算子を書きます。</p>



<figure class="wp-block-table"><table><thead><tr><th>日付</th><th>日付</th></tr></thead><tbody><tr><td>>=2025/4/1</td><td><=2025/6/30</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">同じ行に並べているのでAND条件になり、「2025/4/1以上 <strong>かつ</strong> 2025/6/30以下」という期間指定になります。この条件表を使えば、指定期間内の最高売上をDMAX関数で一発で取り出せます。</p>



<pre class="wp-block-code"><code>=DMAX(B2:E10, &quot;売上&quot;, F1:G2)</code></pre>



<p class="wp-block-paragraph">逆にフィールドを<code>"日付"</code>に切り替えれば、期間内の「最も新しい日付（＝最終取引日）」を抽出することもできます。</p>



<pre class="wp-block-code"><code>=DMAX(B2:E10, &quot;日付&quot;, F1:G2)</code></pre>



<p class="wp-block-paragraph">注意点として、criteriaのセルに <code>">="&A1</code> のような文字列結合式をそのまま入力しても、Excelはこれを文字列として扱うため条件として機能しません。日付を別セルから動的に参照したい場合は、criteriaのセルに <code>=">="&TEXT(A1,"YYYY/M/D")</code> のように、評価結果が比較演算子付きの文字列になる数式を入力してください。意図どおりの結果が返るか、別のセルで動作確認しておくと安心です。</p>



<h2 class="wp-block-heading"><span id="toc15">AND条件とOR条件を組み合わせる（複合条件）</span></h2>



<p class="wp-block-paragraph">ANDとORは独立して使うだけでなく、組み合わせることもできます。考え方はシンプルで、<strong>「条件表の1行が1つのANDセット」</strong>であり、<strong>「行が複数あればそれらのOR」</strong>になります。</p>



<p class="wp-block-paragraph">例えば「東京支店の佐藤さん、または大阪支店の鈴木さんの最高売上」を求めたい場合、次のように書きます。</p>



<figure class="wp-block-table"><table><thead><tr><th>支店</th><th>担当</th></tr></thead><tbody><tr><td>東京</td><td>佐藤</td></tr><tr><td>大阪</td><td>鈴木</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">これは「(東京 <strong>かつ</strong> 佐藤) <strong>または</strong> (大阪 <strong>かつ</strong> 鈴木)」という意味になります。横方向がAND、縦方向がORと覚えておくと迷いません。</p>



<pre class="wp-block-code"><code>=DMAX(B2:E10, &quot;売上&quot;, F1:G3)</code></pre>



<p class="wp-block-paragraph">このような複合条件は、<code>MAXIFS</code>関数だと<code>MAX(MAXIFS(...), MAXIFS(...))</code>のように複数の式を組み合わせる必要があり、式が一気に長くなります。条件表を1つ用意するだけで済むDMAX関数の強みが、最も際立つ場面と言えるでしょう。</p>



<h2 class="wp-block-heading"><span id="toc16">DMAX関数の使用例</span></h2>



<p class="wp-block-paragraph">ここでは次のような売上表（<code>B2:E10</code>）を想定します。</p>



<figure class="wp-block-table"><table><thead><tr><th>日付</th><th>支店</th><th>担当</th><th>売上</th></tr></thead><tbody><tr><td>2025-04-01</td><td>東京</td><td>佐藤</td><td>120,000</td></tr><tr><td>2025-04-02</td><td>大阪</td><td>鈴木</td><td>98,000</td></tr><tr><td>2025-04-03</td><td>東京</td><td>田中</td><td>150,000</td></tr><tr><td>...</td><td>...</td><td>...</td><td>...</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc17">例1：特定支店の最高売上</span></h3>



<p class="wp-block-paragraph">検索条件（<code>F1:F2</code>）に次のように入力します。</p>



<figure class="wp-block-table"><table><thead><tr><th>支店</th></tr></thead><tbody><tr><td>東京</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">数式：</p>



<pre class="wp-block-code"><code>=DMAX(B2:E10, &quot;売上&quot;, F1:F2)</code></pre>



<p class="wp-block-paragraph">結果：東京支店の最高売上が返ります。</p>



<h3 class="wp-block-heading"><span id="toc18">例2：AND条件（支店 × 担当）</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>支店</th><th>担当</th></tr></thead><tbody><tr><td>東京</td><td>田中</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">数式：</p>



<pre class="wp-block-code"><code>=DMAX(B2:E10, &quot;売上&quot;, F1:G2)</code></pre>



<p class="wp-block-paragraph">結果：東京支店の田中さんの最高売上が返ります。</p>



<h3 class="wp-block-heading"><span id="toc19">例3：比較演算子を使った条件</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>売上</th></tr></thead><tbody><tr><td>>=100000</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">数式：</p>



<pre class="wp-block-code"><code>=DMAX(B2:E10, &quot;日付&quot;, F1:F2)</code></pre>



<p class="wp-block-paragraph">結果：売上10万円以上のレコードの中で、最も新しい（値の大きい）日付が返ります。フィールドを切り替えるだけで色々な集計ができるのがDMAX関数の便利なところです。</p>



<h2 class="wp-block-heading"><span id="toc20">最大値だけでなく「その行の担当者名や日付」も取り出したい</span></h2>



<p class="wp-block-paragraph">DMAX関数で返せるのは、あくまで指定フィールドの最大値という「数値」だけです。実務では「最高売上の金額そのもの」より「最高売上を出したのは誰か」「それはいつか」を知りたい場面のほうが多いかもしれません。</p>



<p class="wp-block-paragraph">DMAX関数単体では他の列の値を取り出せませんが、<code>INDEX</code>関数と<code>MATCH</code>関数を組み合わせると、最大値と同じ行の別の列を引っ張ってこられます。</p>



<pre class="wp-block-code"><code>=INDEX(C2:C10, MATCH(DMAX(B2:E10,&quot;売上&quot;,F1:F2), E2:E10, 0))</code></pre>



<p class="wp-block-paragraph">この式は次の手順で動いています。</p>



<ol class="wp-block-list"><li><code>DMAX(B2:E10,"売上",F1:F2)</code>で条件に合う最高売上の金額を求める</li><li><code>MATCH</code>でその金額が売上列（<code>E2:E10</code>）の何行目にあるかを探す</li><li><code>INDEX</code>で担当列（<code>C2:C10</code>）の同じ行を返す</li></ol>



<p class="wp-block-paragraph">これで「最高売上を出した担当者名」が取得できます。INDEXとMATCHの基本的な使い方は<a href="https://mashukabu.com/excel-function-howto-use-index/">INDEX関数の使い方</a>と<a href="https://mashukabu.com/excel-function-howto-use-match/">MATCH関数の使い方</a>で詳しく解説しています。</p>



<p class="wp-block-paragraph">Microsoft 365やExcel 2021を使っている場合は、<code>FILTER</code>関数や<code>XLOOKUP</code>関数を使うともっと直感的に書けます。条件で絞り込んでから最大値の行を取り出すアプローチです。詳しくは<a href="https://mashukabu.com/excel-function-howto-use-filter/">FILTER関数の使い方</a>や<a href="https://mashukabu.com/excel-function-howto-use-xlookup/">XLOOKUP関数の使い方</a>を参考にしてください。</p>



<p class="wp-block-paragraph">ひとつ注意点があります。同じ最大値のレコードが複数行ある場合、MATCHは<strong>最初に見つかった1件のみ</strong>を返します。同点が想定されるデータでは、結果が一意でないことを念頭に置いておきましょう。</p>



<h2 class="wp-block-heading"><span id="toc21">Excelテーブル（構造化参照）と組み合わせる</span></h2>



<p class="wp-block-paragraph">データを「テーブル」（挿入 → テーブル）として管理している場合、DMAX関数のデータベース引数にテーブルを指定できます。書き方はテーブル名をそのまま入れるだけです。</p>



<pre class="wp-block-code"><code>=DMAX(売上テーブル[#すべて], &quot;売上&quot;, F1:F2)</code></pre>



<p class="wp-block-paragraph"><code>[#すべて]</code>を付けると見出し行を含めた範囲が対象になります。DMAX関数はデータベース引数に見出し行を含める必要があるため、この指定が安全です。</p>



<p class="wp-block-paragraph">テーブルを使う最大の利点は、<strong>データを追加しても範囲が自動で広がる</strong>ことです。<code>B2:E10</code>のようなセル範囲指定だと、行を追加するたびに数式の修正が必要ですが、テーブルなら追加分も自動的に集計対象になります。</p>



<p class="wp-block-paragraph">ただし検索条件（criteria）のほうは、テーブルの外にある通常のセル範囲で用意してください。条件表までテーブル化すると、かえって参照が複雑になりがちです。なお、Dシリーズの考え方は<a href="https://mashukabu.com/excel-function-howto-use-dsum/">DSUM関数の使い方</a>や<a href="https://mashukabu.com/excel-function-howto-use-dget/">DGET関数の使い方</a>でも共通なので、あわせて読むと理解が深まります。</p>



<h2 class="wp-block-heading"><span id="toc22">DMAX関数に関するよくある質問（FAQ）</span></h2>



<h3 class="wp-block-heading"><span id="toc23">Q1. 検索条件に空白行が含まれているとどうなりますか</span></h3>



<p class="wp-block-paragraph">検索条件の範囲に空白の行が混ざっていると、その空白行が「条件なし＝すべてのレコードが対象」として扱われ、意図せず全体の最大値が返ってしまうことがあります。</p>



<p class="wp-block-paragraph">これは「OR条件は別の行に書く」という仕様の副作用で、空白行も1つの（条件のない）OR行とみなされるためです。検索条件の範囲は、見出し行と実際に使う条件行だけになるよう、最小限に絞って指定してください。表の下に余分な空白セルを含めないことがポイントです。</p>



<h3 class="wp-block-heading"><span id="toc24">Q2. 条件を毎回入力するのが面倒です。もっとラクに切り替えられませんか</span></h3>



<p class="wp-block-paragraph">検索条件のセルに「データの入力規則」でドロップダウンリストを設定すると、リストから選ぶだけで集計対象を切り替えられます。</p>



<p class="wp-block-paragraph">例えば支店の条件セルに「東京・大阪・名古屋」のドロップダウンを設定しておけば、セルを選ぶたびにDMAX関数の結果が自動で更新されます。条件を表で管理できるDMAX関数ならではの使い方で、簡易的な集計ダッシュボードとして活用できます。</p>



<h3 class="wp-block-heading"><span id="toc25">Q3. DMAXで出した最大値と同じ行の担当者名を取り出すにはどうすればいいですか</span></h3>



<p class="wp-block-paragraph">DMAX関数単体では数値の最大値しか返せないため、<code>INDEX</code>関数と<code>MATCH</code>関数を組み合わせます。<code>=INDEX(担当列, MATCH(DMAX(...), 売上列, 0))</code>の形で、最大値と同じ行の別の列を取り出せます。詳しい式は本文「最大値だけでなく『その行の担当者名や日付』も取り出したい」のセクションで解説しています。</p>



<h3 class="wp-block-heading"><span id="toc26">Q4. GoogleスプレッドシートでもDMAX関数は使えますか</span></h3>



<p class="wp-block-paragraph">GoogleスプレッドシートにもDMAX関数は用意されており、基本的な構文<code>=DMAX(データベース, フィールド, 検索条件)</code>はExcelと同じです。ただし日付の扱いや一部のワイルドカード挙動など、細かい動作に差異がある場合があります。実際に使う際は、想定どおりの結果が返るか動作確認をしておくと安心です。Sheets版の詳しい使い方は<a href="https://mashukabu.com/spreadsheet-dmax-function/">スプレッドシートのDMAX関数</a>で解説しています。</p>



<h3 class="wp-block-heading"><span id="toc27">Q5. DMAXとMAXIFSはどちらを使うべきですか</span></h3>



<p class="wp-block-paragraph">条件が固定で単純なAND条件だけなら<code>MAXIFS</code>がシンプルです。一方、条件を頻繁に変える、OR条件や複合条件を扱う、古いバージョンのExcel（2016以前）で動かす必要がある、といった場合はDMAX関数が有利です。MAXIFSの詳細は<a href="https://mashukabu.com/excel-function-howto-use-maxifs/">MAXIFS関数の使い方</a>を参考に、状況に応じて使い分けてください。</p>



<h2 class="wp-block-heading"><span id="toc28">まとめ</span></h2>



<p class="wp-block-paragraph">DMAX関数は、データベース形式の表から条件に一致するレコードの最大値を柔軟に取り出せる関数です。ポイントを整理しておきましょう。</p>



<ul class="wp-block-list"><li>構文は<code>=DMAX(データベース, フィールド, 検索条件)</code>の3引数</li><li>データベース範囲には<strong>見出し行を含めて</strong>指定する</li><li>検索条件は「見出し + 条件行」の別表で用意し、同じ行はAND・別の行はORになる</li><li>条件が頻繁に変わる・OR条件が必要 → DMAX、条件固定のシンプルなAND → MAXIFSが便利</li><li>DMIN・DSUM・DAVERAGEなどDシリーズは構文が共通なので、一気に覚えられる</li></ul>



<p class="wp-block-paragraph">特に「条件を表で管理したい」「集計ダッシュボードを作りたい」というシーンでは、DMAX関数をはじめとするデータベース関数が強い味方になります。ぜひ実務で活用してみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-dmax/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
