🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

Excelのデータベース関数 — DAVERAGE・DMAX・DMIN と条件範囲を使いこなす

|

Excelのデータベース関数 — DAVERAGE・DMAX・DMIN と条件範囲を使いこなす

要点 — Excel のデータベース関数は、すべてが1つの構文—— Dxxx(database, field, criteria)——と1つのスキル、すなわち条件範囲を共有します。 集計方法を差し替えれば関数が変わります:一致した行の平均なら DAVERAGE、最大・最小 なら DMAXDMIN、残りは DPRODUCTDSTDEVDVAR。条件ブロックを一度 使いこなせば、12個すべてが一気に手に入ります。効いてくるルールはこうです——AND は 行方向、OR は行を下に重ねる1つのフィールドに範囲(100〜500)を掛けるには、その 見出しが2回要る。数式条件には、データの見出しと空白または別物の見出しが 要る。そして文字列は既定で先頭から一致する(NorthNorthwest も拾う)。条件 ブロックさえ正しく組めば、D関数は複雑な複数条件の問いを尋ねる、最も監査しやすい 方法になります。すべての Excel バージョンで動作します。

=DAVERAGE(A1:E200, "Amount", H1:I2)   ' 一致した行の Amount の平均
=DMAX(A1:E200, "Amount", H1:H2)       ' 一致した中で最大の Amount
=DMIN(A1:E200, "Amount", H1:H2)       ' 一致した中で最小の Amount

DSUMDGET は、単独で見ると 風変わりな一発ネタに見えます。まとめて見ると、データベース関数は1つの発想の上に築かれた 一族です——クエリをシート上の表として書く——そしてその発想には、たいていのチュート リアルが決してたどり着かない深さがあります。このガイドは条件範囲のマスタークラスです: この1つのブロックを正しく組めば、DAVERAGE から DVAR まで、どの D関数も同じように 動きます。

この記事で学べること

  • 一族の全容:1つの構文、12の集計
  • 条件ブロックの AND と OR——すべてを動かすルール
  • 1つのフィールドに範囲(100以上かつ500以下)を掛けると、なぜ見出しが2回要るのか
  • 数式条件——最も強力な機能と、その2つの厳格なルール
  • 黙って数えすぎる、先頭一致という文字列の罠
  • 使い分けの木:D関数 対 SUMIFSAVERAGEIFSFILTER

1つの構文、12の集計

どのデータベース関数も、同じ3つの引数——表(見出しつき)、フィールド、条件範囲——を 読み取り、違うのは一致した行をどう集計するかだけです。

関数 一致した行について返すもの…
DSUM フィールドの合計
DAVERAGE 平均(空白と文字列は無視)
DCOUNT / DCOUNTA 数値の件数/空でないセルの件数
DMAX / DMIN 最大値/最小値
DGET 単一の値(ちょうど1つでなければエラー)
DPRODUCT 値の積
DSTDEV / DSTDEVP 標本/母集団の標準偏差
DVAR / DVARP 標本/母集団の分散

覚えておくべき正直者は DAVERAGE です——一致した行のうち数値セルだけを平均するので、 手作業の SUM/COUNT にありがちな、空白が平均をゼロへ引きずり下ろすことがありません。 以下で条件範囲を覚えれば、この表のどの行でも操れます。

横は AND、縦は OR——すべての背後にあるルール

条件範囲は小さな表です——見出しの行、そのあとに条件の行。その幾何そのものが論理です。

' AND — 同じ行に:West 地域 かつ Amount が 1000 超
'   H1: Region    I1: Amount
'   H2: West      I2: >1000
=DAVERAGE(A1:E200, "Amount", H1:I2)

' OR — 行を分ける:West または East
'   H1: Region
'   H2: West
'   H3: East
=DAVERAGE(A1:E200, "Amount", H1:H3)

' AND + OR を組み合わせる:(West かつ >1000) または (East かつ >2000)
'   H1: Region    I1: Amount
'   H2: West      I2: >1000
'   H3: East      I3: >2000
=DAVERAGE(A1:E200, "Amount", H1:I3)

最後のブロックこそ、D関数が本領を発揮するところです——*(West かつ 1000 超)または (East かつ 2000 超)*を SUMIFS で表そうとすると配列の入れ子になりますが、ここでは レビューする人が2秒で読める4つのセルです。行は OR、列は AND——これが体に染みつけば、 どれだけ複雑な条件も、ただブロックが大きくなるだけです。

1つのフィールドに範囲を掛けるには見出しが2回要る

人をぴたりと立ち止まらせる罠がこれです——1つの列を2つの値の間に収めること。とっさに >=100<=500 を1つのセルに書きたくなります。それは無理です——1つのセルには1つの 条件しか入りません。同じフィールドに2つの条件を掛けるには、見出しを2つの列に 登場させる必要があります。

' Amount が 100 以上 500 以下:
'   H1: Amount    I1: Amount     <- 同じ見出しを2回
'   H2: >=100     I2: <=500
=DSUM(A1:E200, "Amount", H1:I2)

どちらも同じ行にあるので AND で結ばれます——Amount >= 100 AND Amount <= 500。見出しを 繰り返すのは奇妙に見えますが、それが仕組みです——条件の各列は1つの比較を担い、範囲の 判定は同じフィールドに対する2つの比較だからです。

数式条件:2つの厳格なルールを持つ強力な機能

条件は定数である必要はありません。条件は、行ごとに TRUE/FALSE を返す数式にできます ——「全体の平均を上回る」「上位4分の1に入る」「隣より長い」など。これは D関数一族が できることの中で最も強力な一手で、2つのルールのどちらかを破った瞬間に失敗します。

' 平均 Amount を上回る行の Amount を合計:
'   H1: (空白、または実在しない見出し、例:AboveAvg)
'   H2: =E2>AVERAGE($E$2:$E$200)
=DSUM(A1:E200, "Amount", H1:H2)
  • ルール1——条件の見出しは、どのデータ見出しとも空白または別物でなければならない。 数式のセルに Amount という見出しを付けると、Excel はそれを Amount 列に対する通常の 条件として扱い、あなたの数式は壊れます。数式条件には、表の見出しのどれでもない(または 空の)見出しが要ります。
  • ルール2——最初のデータ行を、相対参照で参照する。 E:E$E2 ではなく、E2 (最初のデータ行)と書きます。Excel は内部で数式を1行ずつ下へたどります——それを 可能にするのが、先頭行への相対参照です。比較する範囲は絶対参照($E$2:$E$200)の ままにして、AVERAGE が列全体を見るようにします。

ルール1を破るとエラーなしで間違った答えが出ます。ルール2を破ると判定が違う行に対して 評価されます。両方を正しくすれば、他のどの条件付き集計関数もこれほどきれいには提供 しない、生きて計算される条件が手に入ります。

先頭一致の罠(とワイルドカード)

D関数の文字列条件は「等しい」ではなく**「〜で始まる」**です。North という条件は NorthNorthwestNorthern を一様に拾います——合計や件数を水増しする、黙った 過剰マッチです。

'   H2: North      North, Northwest, Northern... に一致(先頭一致!)
'   H2: ="=North"  "North" だけに完全一致
'   H2: Jo*        ワイルドカード:Jones, Johnson(任意の文字)
'   H2: ?at        ワイルドカード:cat, bat, hat(1文字 + "at")

完全一致を強制するには ="=North" と包みます。*(任意の個数の文字)、?(ちょうど 1文字)、~(リテラルの *? をエスケープ)は、いつもどおり使えます。DSUMDCOUNT の値がわずかに高すぎるときは、この先頭一致の既定が第一容疑者です——見出しの タイプミスで低すぎるときの、すぐ次に疑うべき相手です。

使い分けの木:D関数 対 SUMIFS 対 FILTER

いまや3つの道具が「一致した行を集計する」に答えます。うまく選ぶには:

  • SUMIFSAVERAGEIFSCOUNTIFS — あなたの既定。条件は数式の中、シート上に余計な ものはなく、列に沿ってコピーしやすく、規模が大きくても速い。条件が単純な AND ロジックで、 そう頻繁に変わらないときに最適です。
  • データベース関数問いがシート上に置かれるべきとき:複雑な OR の分岐、数式ベースの 条件、同僚が編集する条件ブロック、あるいは目に見えるクエリが入れ子の数式に勝る監査証跡。 冗長ですが、他にない読みやすさがあり、DGET の一意性保証を持つのはこれだけです。
  • FILTER + 集計 — 1つの数字だけでなく、一致した行そのもの が欲しいとき、あるいはロジックをブール配列として書く方が自然なとき: =SUM(FILTER(Amount, (Region="West")*(Amount>1000)))。動的配列を使う今どきのやり方で、 たいてい最も柔軟です——ただし Excel 365 が必要です。

正直にまとめると——D関数はレガシーだが時代遅れではありません。列に沿ってドラッグ する繰り返しの数式には SUMIFS を。365 での生きた抽出には FILTER を。しかし、どの バージョンの Excel でも動く、単発で複数条件の、レビューする人が読める問い——シート上に 見えてほしい問い——には、条件ブロックと D関数が、いまなお Excel の持つ最も明快な道具 です。

ExcelMaster の使いどころ

条件範囲は、強力さと気難しさが同じだけあります——範囲のための見出し2回のルール、数式 条件のための空白見出しのルール、先頭一致の既定。問いを普通の言葉で述べれば——「West または East で全体平均を上回る注文の平均注文額」——ExcelMaster は条件ブロックを 正しく組みます:あなたのデータに合わせた見出し、正しい幾何に並べた AND と OR、先頭行への 相対参照を持つ数式条件、そしてそれを指す =DAVERAGE(...)。既存の D関数を読んで、数字が おかしく見える理由——見出しのタイプミス、紛れ込んだ空行、あるいは先頭一致の過剰マッチ ——も教えてくれます。

よくある質問

Excel のデータベース関数とは?

DSUMDAVERAGEDCOUNTDCOUNTADGETDMAXDMINDPRODUCTDSTDEVDSTDEVPDVARDVARP の12個からなる関数の一族で、条件範囲に一致する表の行を 集計します。すべてが Dxxx(database, field, criteria) という構文を共有し、違うのは集計 方法だけです。条件範囲——シート上の見出しと条件のブロック——が、これらを1つにまとめる 概念です。

AND と OR のある条件範囲を作るには?

同じ行にある条件は AND で、別々の行にある条件は OR で結ばれます。ブロックの上端の 行には、データから正確にコピーした見出しを置き、その下の行に West>1000>=100 のような条件を置きます。criteria 引数は、使うすべての見出しと条件セルを覆うように サイズを合わせます。

データベース関数を2つの数値の間で絞り込むには?

フィールドの見出しを2つの列に置き、それぞれに比較を、同じ行に入れます:見出し Amount を H1 と I1 に、>=100 を H2 に、<=500 を I2 に。どちらも同じ行にあるので、 AND で結ばれて「100 以上 500 以下」になります。

数式を条件として使える?

使えます。実在するどのデータ見出しとも空白または別物の見出しセルを使い、最初の データ行を相対参照する数式を書きます——例えば =E2>AVERAGE($E$2:$E$200) で平均を 上回る行に一致させます。空白/別物の見出しこそ、それがラベル一致ではなく数式条件だと Excel に伝えるものです。

SUMIFS や FILTER がある今、データベース関数は時代遅れ?

時代遅れではなく、専門特化です。単純で繰り返しの条件付き集計には SUMIFSAVERAGEIFS を、一致する行を取り出したりブールロジックを組んだりするには FILTER(Excel 365)を 使います。データベース関数がなお勝るのは、複雑な OR ロジック、数式ベースの条件、DGET の一意性チェック、そしてシート上で見えて編集できてほしい問い——しかもすべての Excel バージョンで動きます。

検証環境

検証環境: Excel 365(Windows 11)— 最終確認 2026-07-20。

関連ガイド: ExcelのDSUM・DCOUNT · ExcelのDGET · ExcelのSUMIFS関数 · ExcelのAVERAGEIFS関数 · ExcelのFILTER関数