2014年6月12日(木)
SUBTOTAL()、DSUM() #■パソコン・通信 EXCEL(表計算ソフト)の関数である。以前に、フィルタを利用したものを作成したのだが、使い勝手が悪いので、機能追加を検討した。
同行に、累計があると便利である。
A B
1:[金額][累計]
2:[10][=A2]
3:[20][=B2+A3]
4:[30][=B2+A4]
しかし、フィルタで抽出すると、累計の計算が異常になる。表示していない行まで、ご丁寧に計算してしまうからだ。
やり方はいろいろ考えられるが、手っ取り早くはSUBTOTAL()を使うのが良いだろう。
A B
1:[金額][累計]
2:[10][=SUBTOTAL(109,$A$2:A2)]
3:[20][=SUBTOTAL(109,$A$2:A3)]
4:[30][=SUBTOTAL(109,$A$2:A4)]
問題は、再計算の速度である。6万5千行では再計算がもたついていたが、1万行であれば全然問題ない。
--
表データをデータベースと見立てて、条件によりフィルタを掛けた値を得ることができる。DSUM()は、条件に合ったものを抽出して合計してくれる。表データ、条件、計算セルは、別々のシートでも機能する。例では、会社×月の金額の合計の一覧を作成する。とても、便利な関数である。
【データ】
A B C
1:会社 月 金額
2:[a][1][10]
3:[a][1][20]
4:[b][2][30]
5:[c][3][40]
6:[a][4][50]
7:[b][4][60]
8:[c][4][70]
【条件】
A B C D E F G H
1:[会社][月][会社][月][会社][月][会社][月]
2:[a][1][a][2][a][3][a][4]
3:[会社][月][会社][月][会社][月][会社][月]
4:[b][1][b][2][b][3][b][4]
5:[会社][月][会社][月][会社][月][会社][月]
6:[c][1][c][2][c][3][c][4]
【一覧】
A B C D E
1:[ ][1][2][3][4]
2:[a][=DSUM(データ!$A$1:$C$8,データ!$C$1,条件!A1:B2)][=DSUM(データ!$A$1:$C$8,データ!$C$1,条件!C1:D2)][=DSUM(データ!$A$1:$C$8,データ!$C$1,条件!E1:F2)][=DSUM(データ!$A$1:$C$8,データ!$C$1,条件!G1:H2)]
3:[b][=DSUM(データ!$A$1:$C$8,データ!$C$1,条件!A3:B4)][=DSUM(データ!$A$1:$C$8,データ!$C$1,条件!C3:D4)][=DSUM(データ!$A$1:$C$8,データ!$C$1,条件!E3:F4)][=DSUM(データ!$A$1:$C$8,データ!$C$1,条件!G3:H4)]
3:[c][=DSUM(データ!$A$1:$C$8,データ!$C$1,条件!A5:B6)][=DSUM(データ!$A$1:$C$8,データ!$C$1,条件!C5:D6)][=DSUM(データ!$A$1:$C$8,データ!$C$1,条件!E5:F6)][=DSUM(データ!$A$1:$C$8,データ!$C$1,条件!G5:H6)]