要点 — Excel のデータベース関数は、すべてが1つの構文——
Dxxx(database, field, criteria)——と1つのスキル、すなわち条件範囲を共有します。 集計方法を差し替えれば関数が変わります:一致した行の平均ならDAVERAGE、最大・最小 ならDMAX/DMIN、残りはDPRODUCT、DSTDEV、DVAR。条件ブロックを一度 使いこなせば、12個すべてが一気に手に入ります。効いてくるルールはこうです——AND は 行方向、OR は行を下に重ねる。1つのフィールドに範囲(100〜500)を掛けるには、その 見出しが2回要る。数式条件には、データの見出しと空白または別物の見出しが 要る。そして文字列は既定で先頭から一致する(NorthはNorthwestも拾う)。条件 ブロックさえ正しく組めば、D関数は複雑な複数条件の問いを尋ねる、最も監査しやすい 方法になります。すべての Excel バージョンで動作します。
=DAVERAGE(A1:E200, "Amount", H1:I2) ' 一致した行の Amount の平均
=DMAX(A1:E200, "Amount", H1:H2) ' 一致した中で最大の Amount
=DMIN(A1:E200, "Amount", H1:H2) ' 一致した中で最小の Amount
DSUM や DGET は、単独で見ると
風変わりな一発ネタに見えます。まとめて見ると、データベース関数は1つの発想の上に築かれた
一族です——クエリをシート上の表として書く——そしてその発想には、たいていのチュート
リアルが決してたどり着かない深さがあります。このガイドは条件範囲のマスタークラスです:
この1つのブロックを正しく組めば、DAVERAGE から DVAR まで、どの D関数も同じように
動きます。
この記事で学べること
- 一族の全容:1つの構文、12の集計
- 条件ブロックの AND と OR——すべてを動かすルール
- 1つのフィールドに範囲(100以上かつ500以下)を掛けると、なぜ見出しが2回要るのか
- 数式条件——最も強力な機能と、その2つの厳格なルール
- 黙って数えすぎる、先頭一致という文字列の罠
- 使い分けの木:D関数 対
SUMIFS/AVERAGEIFS対FILTER
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 という条件は
North、Northwest、Northern を一様に拾います——合計や件数を水増しする、黙った
過剰マッチです。
' H2: North North, Northwest, Northern... に一致(先頭一致!)
' H2: ="=North" "North" だけに完全一致
' H2: Jo* ワイルドカード:Jones, Johnson(任意の文字)
' H2: ?at ワイルドカード:cat, bat, hat(1文字 + "at")
完全一致を強制するには ="=North" と包みます。*(任意の個数の文字)、?(ちょうど
1文字)、~(リテラルの */? をエスケープ)は、いつもどおり使えます。DSUM や
DCOUNT の値がわずかに高すぎるときは、この先頭一致の既定が第一容疑者です——見出しの
タイプミスで低すぎるときの、すぐ次に疑うべき相手です。
使い分けの木:D関数 対 SUMIFS 対 FILTER
いまや3つの道具が「一致した行を集計する」に答えます。うまく選ぶには:
SUMIFS/AVERAGEIFS/COUNTIFS— あなたの既定。条件は数式の中、シート上に余計な ものはなく、列に沿ってコピーしやすく、規模が大きくても速い。条件が単純な 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 のデータベース関数とは?
DSUM、DAVERAGE、DCOUNT、DCOUNTA、DGET、DMAX、DMIN、DPRODUCT、DSTDEV、
DSTDEVP、DVAR、DVARP の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 がある今、データベース関数は時代遅れ?
時代遅れではなく、専門特化です。単純で繰り返しの条件付き集計には SUMIFS/AVERAGEIFS
を、一致する行を取り出したりブールロジックを組んだりするには FILTER(Excel 365)を
使います。データベース関数がなお勝るのは、複雑な OR ロジック、数式ベースの条件、DGET
の一意性チェック、そしてシート上で見えて編集できてほしい問い——しかもすべての Excel
バージョンで動きます。
検証環境
検証環境: Excel 365(Windows 11)— 最終確認 2026-07-20。
関連ガイド: ExcelのDSUM・DCOUNT · ExcelのDGET · ExcelのSUMIFS関数 · ExcelのAVERAGEIFS関数 · ExcelのFILTER関数
