[[20090916153437]] 『配列数式を使用しない複数条件での集計はできる?』(たかぽ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『配列数式を使用しない複数条件での集計はできる?』(たかぽ)

宜しくお願いします。

同じブック内で複数シートを作成、下記の様な内容となっています。
「集計シート」のセルB2に、
{=SUM(IF(詳細シート!$A:$A=集計シート!$A2,IF(詳細シート!$D:$D=集計シート!$B$1,詳細シート!$C:$C,0),0))}
数式を入力したらうまく集計はできました。
しかし、「詳細シート」に例えば伝票毎に毎回詳細な入力をしようとしたところ、
再計算にやたらと時間がとられてしまいます。
数式を使用して手間を省くどころか、逆に時間がかかってしまい困っています。
何かほかの数式を使ったテクニックがあるか、ご教示ください。
宜しくお願いします。

 「集計シート」
	A	B	C
1	番号	購入品	材料
2	09001	 12,000	 50,000
3	09002	600,000	250,000
4	09003	 15,750	 31,500

 「詳細シート」
	A	B	C	D
1	番号	型式	金額	区分
2	09001	ZXY-011	 12,000	購入品
3	09002	NHPP01	300,000	購入品
4	09001	MML02	  2,000	材料
5	09001	FB	 48,000	材料
6	09002	#6001	250,000	材料
7	09002	ANGLE01	300,000	購入品


 =SUM(IF(詳細シート!$A:$A=集計シート!$A2,IF(詳細シート!$D:$D=集計シート!$B$1,詳細シート!$C:$C,0),0))
 ↑これで本当に集計できました?
 私の方は出来ませんでしたよ?

 =SUM(IF(詳細シート!$A$2:$A$7=集計シート!$A2,IF(詳細シート!$D$2:$D$7=集計シート!$B$1,詳細シート!$C$2:$C$7,0),0))
 とすれば出来ましたが…

 重いといったらこちらも重いですが、少しでも早ければということで…
 =SUMPRODUCT((詳細シート!$A$2:$A$7=$A2)*(詳細シート!$D$2:$D$7=B$1)*詳細シート!$C$2:$C$7)

 という方法もあります。

 (1or8)

 > =SUM(IF(詳細シート!$A:$A=集計シート!$A2,IF(詳細シート!$D:$D=集計シート!$B$1,詳細シート!$C:$C,0),0))

 配列数式の範囲が列全体でもOKということは Excel2007?

 SUMIFS か ピボットテーブルで集計したらどうですか。

 軽さを求めるなら断然ピボットテーブルです。

 (よみびとしらず)


 > 伝票毎に毎回詳細な入力をしようとしたところ
 この意味はよくわかりませんが

 あとExcelのバージョンが不明ですが
 詳細シートで作業列を使用することも検討してください。

 Excel2007 でしたらSUMIFS関数を使うことができます。

 あと配列数式の場合は範囲を絞ったほうがいいと思います。

 (えくせる青年)2009/9/16 16:32

迅速なご返答ありがとうございます!!!!

そして説明足らずですみませんでした。

Excel2007です。前バージョンだと列全体の参照ができないとはしりませんでした。

SUMPRODUCTもSUMIFSも初めて知った関数ですが、やってみたら望みどおり軽くなりました。

皆様、教えていただきありがとうございました。


 ひとことだけ

 おそらくまた否定意見が出ると思いますが
 個人的な意見だけを言っておきます。
 (議論するつもりはないです)

 SUMPRODUCT関数は配列数式の一種です。
 範囲が広くなるとまた重くなる可能性があります。

 2007ですからSUMIFS関数のほうがいいと思います。

 (えくせる青年)2009/9/16 16:54

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.