DSUM 関数は、条件を書いた小さな表(条件表)に合う行だけを合計する関数です。=DSUM(A1:D11,"金額",E1:E2) のように、表全体・合計する列の見出し・条件表の 3 つを指定します。条件をセルに書くので、条件表を書き換えるだけで集計が変わります。
同じ仲間に、件数を数える DCOUNT、条件に合う 1 件を取り出す DGET などがあります(データベース関数)。この記事では、条件表の作り方と AND・OR の書き分けを、実際の Excel で確かめた結果で説明します。
DSUM・DCOUNT・DGET 関数の書き方
=DSUM(表全体, "合計する列の見出し", 条件表)
=DCOUNT(表全体, "数える列の見出し", 条件表)
=DGET(表全体, "取り出す列の見出し", 条件表)
| 引数 | 意味 |
|---|---|
| 表全体 | 見出しの行を含めた表(A1:D11) |
| 列の見出し | “金額” のように見出しの文字で指定(列の番号 4 でもよい) |
| 条件表 | 1 行目に表と同じ見出し、2 行目から下に条件を書いた範囲 |
条件表のルール:同じ行に並べた条件は「かつ(AND)」、別の行に分けた条件は「または(OR)」になります。見出しは元の表と同じ文字にします。
1. 条件表に合う行を合計する
E1:E2 に「分類=果物」の条件表を作り、果物の金額を合計します。
=DSUM(A1:D11,"金額",E1:E2)

結果は 4,300 でした。E2 を「野菜」に書き換えると、野菜の合計に変わります。
2. 2 つの条件(かつ)で合計する
条件を同じ行に横に並べると「かつ(AND)」になります。分類=果物、かつ、担当=鈴木です。
=DSUM(A1:D11,"金額",E5:F6)

結果は 2,500 でした(1,500+1,000)。
3. どちらかの条件(または)で合計する
条件を別の行に縦に並べると「または(OR)」になります。分類が果物、または飲料です。
=DSUM(A1:D11,"金額",E9:E11)

結果は 5,150 でした(果物 4,300+飲料 850)。SUMIFS では「または」を 1 つの式で書きにくいので、ここが DSUM の便利なところです。
4. 条件に合う 1 件を取り出す(DGET)
DGET は、条件に合う行が1 件だけのとき、その値を取り出します。
=DGET(A1:D11,"金額",E14:E15)

ぶどうの金額 1,500 が取り出せました。条件に合う行が 2 件以上あると #NUM! になります(下の検証)。
【実機で検証】DSUM でつまずくところ

| ためしたこと | 式 | 結果 |
|---|---|---|
| SUMIFS で果物の合計 | =SUMIFS(DSUM!D2:D11,DSUM!A2:A11,"果物") | 4,300 |
| DCOUNT で果物の件数 | =DCOUNT(DSUM!A1:D11,"金額",DSUM!E1:E2) | 4 |
| DAVERAGE で果物の平均 | =DAVERAGE(DSUM!A1:D11,"金額",DSUM!E1:E2) | 1,075 |
| DGET で 2 件ある「りんご」 | =DGET(DSUM!A1:D11,"金額",A13:A14) | #NUM! |
| 条件が空欄の条件表(A16:A17)で DSUM | =DSUM(DSUM!A1:D11,"金額",A16:A17) | 7,250 |
| ない見出し「売上」を指定 | =DSUM(DSUM!A1:D11,"売上",DSUM!E1:E2) | #VALUE! |
果物の合計は SUMIFS でも 4,300 で、DSUM と同じでした。DCOUNT で数えると 4 件、DAVERAGE の平均は 1,075 です。
DGET で、2 件ある「りんご」を指定すると #NUM! になりました。DGET は 1 件だけに決まる条件で使います。
条件表の条件が空欄だと、すべての行が条件に合うとみなされ、合計は 7,250(全体)になりました。条件表の範囲に空欄の行を入れないように注意します。表に無い見出し「売上」を指定すると #VALUE! です。
よくある質問
SUMIFS と DSUM はどちらを使う?
条件が決まっていて「かつ」だけなら SUMIFS が手軽です。「または」を混ぜたい、条件を表にして書き換えながら集計したいときは DSUM が便利です。SUMIFS は SUMIFS・COUNTIFSの使い方で説明しています。
「1,000 以上」のような条件は?
条件表の金額の列に >=1000 と書きます。「りん*」のようにワイルドカードも使えます。
DCOUNT と DCOUNTA のちがいは?
DCOUNT は数値の入ったセルだけを、DCOUNTA は空欄でないセルを数えます。文字の列を数えるときは DCOUNTA を使います。

コメント