こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルの下記の表の集計を自動計算したいです。

御世話になります。エクセルにて下記の表があります。

  A         B       C
1 オレンジのゼリー  2005/12/5   \600

2 アップルのジュース 2005/11/23   \500

3 オレンジのジュース 2005/10/3   \200

4 アップルのジュース 2005/9/3    \1,000

5 アップルのケーキ  2005/5/4    \2,500

私がここでしたいことは
(1)果物毎の売上を集計(日付関係無し) 
 例:アップルの売上 \4,000
   オレンジの売上 \800

(2)加工後の製品名毎の集計(日付関係無し)
 例:ジュースの売上 \1,700
   ゼリーの売上  \600
   ケーキの売上  \2,500

(3) (1)と(2)の集計結果に月毎に分ける。
 例:ジュースの9月の売上 \1,000

今まで私は上記の表に対して、フィルタを使い
手動で集計をしていましたが、修正が何回あると
再度フィルタで集計のやり直しをして非常に非効率でした。
ですので関数などを使用して自動計算で出来ないでしょうか?

宜しく御願い致します。

投稿日時 - 2005-12-05 10:28:38

QNo.1820464

すぐに回答ほしいです

質問者が選んだベストアンサー

D列に果物名、E列に加工品名を追加するのが良いと思います。

  A         B       C   D    E
1 商品        売上日    金額  果物区分    加工品区分
2 オレンジのゼリー  2005/12/5   \600  オレンジ  ゼリー
3 アップルのジュース 2005/11/23   \500  アップル  ジュース
4 オレンジのジュース 2005/10/3   \200  オレンジ  ジュース
5 アップルのジュース 2005/9/3    \1,000 アップル  ジュース
6 アップルのケーキ  2005/5/4    \2,500 アップル  ケーキ

といった具合です(このときに表の列名の行を先頭にいれておきます)。

あとは、列名を含め全表範囲をピボットテーブルで集計すれば、
一発で集計結果を導き出すことが出来ます。
ピボットテーブルの機能はお使いになったことがありますか?

表範囲(列名行を含む)を選択してメニューの[データ]-[ピボットテーブルとグラフレポート]を選択します。あとはウィザードの指示に従って設定してみてください。
とりあえず、ご質問の集計であれば、行タイトルエリアに果物区分と加工品区分を設定して、データエリアに金額(合計)を設定すればOKです。

投稿日時 - 2005-12-05 10:53:46

お礼

御世話になります。
早々のご解答ありがとうございます。区分をする項目を追加する方法は私も
考えました。できるならやりたくは無かったのです。今の状態で
やれる方法はないでしょうか?

投稿日時 - 2005-12-05 11:19:17

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(7)

ANo.7

例データ
A1:F9(うち元データはD列まで、E列は見出し、F列答え計数)
A列  B列  C列  D列  E列 F列
1商品日付金額
2甘いオレンジのゼリー2005/12/5\600オレンジ800
3アップルのジュース2005/11/23\500アップル4000
4オレンジのジュース2005/10/3\200ジュース1700
5アップルのジュース2005/9/3\1,000ぜりー600
6アップルのケーキ2005/5/4\2,500ケーキ2500
7グレープのジュース2005/5/5\2,500グレープ2500
8アップルのジュース2005/5/6\300
配列数式ですが
オレンジ
=SUM(IF(ISERROR(SEARCH("オレンジ",B2:B6)),0,D2:D6))
と入れてSHIFT+CTRL+ENTERを同時押し。以下同じ。
アップル
=SUM(IF(ISERROR(SEARCH("アップル",B2:B6)),0,D2:D6))
と入れてSHIFT+CTRL+ENTERを同時押し
ジュース
=SUM(IF(ISERROR(SEARCH("ジュース",B2:B6)),0,D2:D6))
と入れてSHIFT+CTRL+ENTERを同時押し
ゼリー
=SUM(IF(ISERROR(SEARCH("ゼリー",B2:B9)),0,D2:D9))
と入れてSHIFT+CTRL+ENTERを同時押し
ケーキ
=SUM(IF(ISERROR(SEARCH("ケーキ",B2:B9)),0,D2:D9))
と入れてSHIFT+CTRL+ENTERを同時押し
グレープ
=SUM(IF(ISERROR(SEARCH("グレープ",B2:B9)),0,D2:D9))
と入れてSHIFT+CTRL+ENTERを同時押し
結果は上記F列の通り

投稿日時 - 2005-12-05 22:14:41

ANo.6

#5の(3)の範囲が間違いです。
=SUMPRODUCT((COUNTIF(A1:A5,"*ジュース")>0)*(MONTH(B1:B5)=9)*C1:C5)
範囲を揃えてください(;^_^A

投稿日時 - 2005-12-05 13:24:03

ANo.5

(1)オレンジの売り上げの例
=SUMIF(A:A,"オレンジ*",C:C)

(2)ジュースの売り上げの例
=SUMIF(A:A,"*ジュース",C:C)

(3)9月のジュースの売り上げの例
=SUMPRODUCT((COUNTIF(A1:A5,"*ジュース")>0)*(MONTH(B1:B4)=9)*C1:C4)

投稿日時 - 2005-12-05 13:21:12

ANo.4

データベース関数を利用してみるのもいいかもしれません。
=DSUM(表の範囲,集計したい列の番号,条件)
この書式で入力します。
※データベース関数の詳細はヘルプなどで確認してみてください。

参考に以下のような感じで集計が可能です。
ただし、商品名がかならず、「"果物名"の"加工品名"」となっている
必要があります。

|A|B|C
1|商品|日付|金額
2|オレンジのゼリー|2005/12/5|\600
3|アップルのジュース|2005/11/23|\500
4|オレンジのジュース|2005/10/3|\200
5|アップルのジュース|2005/9/3|\1,000
6|アップルのケーキ|2005/5/4|\2,500
7
8|【果物別集計】
9|商品|金額合計
10|オレンジの*|=DSUM(A1:C6,3,A9:A10)
11|アップルの*|=DSUM($A$1:$C$6,3,$A$9:$A11)-B10
12
13【加工品別集計】
14|商品|金額合計
15|*ジュース|=DSUM($A$1:$C$6,3,$A$14:$A15)
16|*ケーキ|=DSUM($A$1:$C$6,3,$A$14:$A16)-SUM($B$15:$B15)
17|*ゼリー|=DSUM($A$1:$C$6,3,$A$14:$A17)-SUM($B$15:$B16)

投稿日時 - 2005-12-05 12:04:17

お礼

ご回答ありがとうございます。
実際のA列の文字列は今回の例で出したような
****の******なっているわけではなく
ランダムの系列となっています。
ですので列の増加をして分類名を記入するしか方法は
なさそうですね。
ご回答ありがとうございます。

投稿日時 - 2005-12-06 15:25:11

ANo.3

A列の商品名が常に「○○の△△」と言うように「【果物名】【の】【加工名】」になっているなら、どうにかできそうです。

VBモジュールの関数を作り、商品名に入っている「の」を探して「『の』の前の文字列を返す関数」と「『の』の後の文字列を返す関数」を作れば良いのです。

但し「果物名」や「加工名」に「の」が入る場合、例えば「木の実のジュース」とかがあると、うまくいきません。

また、商品名が「パパイヤゼリー」など「の」が無い場合もダメです。

関数が出来たら、商品名をそれぞれの関数に渡して「果物名を切り出して集計」「加工法を切り出して集計」で出来ますね。

あと、どうやっても列の増加は避けられないので「どうしても列を増やしたくない」と言うなら素直に諦めて下さい。
(私なら、表に印刷範囲を設定し印刷されない表の外に置くとか、列幅を0ピクセルにして隠すとか、列がどんだけ増えても印刷に影響しないようにしますが、それでもダメなんでしょうか?)

投稿日時 - 2005-12-05 11:51:56

お礼

ご回答ありがとうございます。
実際のA列の文字列は今回の例で出したような
****の******なっているわけではなく
ランダムの系列となっています。
ですので列の増加をして分類名を記入するしか方法は
なさそうですね。

なぜ列の方法がいやだっとたかというと
文字の記入が増えることの作業増加がいやでした・・・
ご回答ありがとうございます。

投稿日時 - 2005-12-06 15:23:15

SUMIF関数・ピボットテーブルをうまく活用すれば良いかも?

B列に「ゼリー・ジュース・ケーキ」の種別を表記出来るように、列を挿入し、金額列をD列に表記出来るようにします。

=SUMIF(A1:A5,"アップル”,D1:D5)とすれば、A列がアップルである金額が、合計で出てきます

数式の中の"アップル"をオレンジに数式を直せば、A列がオレンジである金額が、合計で出てきます


=SUMIF(B1:B5,"ゼリー”,D1:D5)とすれば、B列がゼリーであるものの金額の合計が出てきます。

ピボットテーブルと日付表示をうまく使いこなせれば、月分売上もうまく表示出来ますが・・・

投稿日時 - 2005-12-05 10:59:58

お礼

早々のご解答ありがとうございます。
できるなら列の増加無しで出来ないでしょうか?
わがままを言っておりますが御願いします。

投稿日時 - 2005-12-05 11:29:51

あなたにオススメの質問