[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『配列数式を使用しない複数条件での集計はできる?』(たかぽ)
宜しくお願いします。
同じブック内で複数シートを作成、下記の様な内容となっています。
「集計シート」のセル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.