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

解決済みの質問

エクセルの集計について

エクセルの集計について
エクセルでセルの結合を使用した場合の集計の仕方を教えてください。
現在、以下の様に入力をしており、A1~A3、A4~A6をセル結合しています。

          A          B
1       2010/4/5        5
2                    6
3                    7
4       2010/4/10       5
5                    6
6                    7
7       2010/5/3       5


この場合に2010年4月のB列の集計を行ないたいのですが、本来36となるところが、それぞれ一番上の行の数値のみを集計し10となってしまいます。36にするにはどの様な式を入力すればよいでしょうか。因みに現在使用している式は以下の通りです。
=SUMIF(A1:A7,"<2010/5/1",B1:B7)
以上よろしくお願いいたします。

投稿日時 - 2010-08-12 21:50:52

QNo.6105461

困ってます

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

こんばんは!
余計なお世話だったらごめんなさい。

お示しのデータは3行ずつのセルの結合になっていますが、
結合行がバラバラでも対応できるようにしてみました。

↓の画像のように作業用の列を設けています。

作業列C2セルに
=IF(B2="","",IF(A2="",MONTH(INDEX($A$2:A2,SMALL(IF($A$2:A2<>"",ROW($A$1:A1)),COUNT($A$2:A2)))),MONTH(A2)))

これは配列数式になってしまいますので、この画面からC2セルにコピー&ペーストしただけではエラーになると思います。
C2セルに貼り付け後、F2キーを押す、またはC2セルをダブルクリック、または数式バー内で一度クリックします。
編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定します。
数式の前後に{ }マークが入り配列数式になります。
C2セルをオートフィルで下へずぃ~~~!っとコピーします。

そして、F2セルに
=IF(E2="","",SUMIF(C:C,E2,B:B))
(これは配列数式ではありません)という数式を入れています。

これでE2セルに集計したい月の数値を入力するとF2セルに表示されるはずです。

尚、今回は1年分(年度が違う同じ月がない)という前提での方法です。
仮に 2009年の4月分のデータがあったりすると別の方法を考える必要があります。

以上、参考になればよいのですが、
的外れならごめんなさいね。m(__)m

投稿日時 - 2010-08-12 23:46:24

ANo.4

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

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

回答(5)

ANo.5

次のようにしても良いでしょう。
作業列としてC1セルには次の式を入力して下方にオートフィルドラッグします。

=IF(A1="","",IF(A1<MAX(A:A),SUM(INDEX(B:B,ROW(A1)):INDEX(B:B,MATCH(SMALL(A:A,RANK(A1,A:A,1)+1),A:A,0)-1)),SUM(INDEX(B:B,ROW(A1)):INDEX(B:B,COUNT(B:B)))))

これでA列で日付が入力されている行にその日付でのB列の合計が表示されます。
そこで例えばD1セルに求めたい月を例えば2010年4月でしたら2010年4月と入力します。数式バー上では2010/4/1のように表示されますね。
D1に入力した年月での合計値をE1セルに表示させるとしたらE1セルには次の式を入力します。

=IF(D$1="","",SUMIF(A:A,">="&D$1,C:C)-SUMIF(A:A,">="&DATE(YEAR(D$1),MONTH(D$1)+1,1),C:C))

投稿日時 - 2010-08-13 07:25:29

お礼

いろんなやり方があることを知りました。ありがとうございました。

投稿日時 - 2010-08-16 22:34:32

ANo.3

以下のような操作で結合セルにも同じ値を入れてしまうのが数式いがそのまま使えるので簡単です。

A1から日付データ範囲を選択して、右クリック「コピー」適当な空白列(たとえばE1セル)を選択して、右クリック「形式を選択して貼り付け」で「値」貼り付けし、そのままCtrl+Gでジャンプダイアログを出して「セル選択」「空白セル」でOKし、現在アクティブセルの1つ上のセルを参照する数式(E2セルが空白セルなら「=E1」)を数式バーに入力し,Ctrlキーを押しながらEnterします。
このデータ範囲を選択し、右クリック「コピー」、元のセル範囲を選択して、右クリック「形式を選択して貼り付け」で「数式」を選択してOKすれば結合セルのすべてのセルに自動的に同じデータが入力されるようになります。

投稿日時 - 2010-08-12 23:14:40

お礼

ありがとうございました。

投稿日時 - 2010-08-16 22:35:44

ANo.2

セル結合の利用は、その後の関数利用などに大きな困難を伴う。知らないでやったものの経験の無さのお蔭だが。
ーー
この質問は3行おきに日付が出てくる例を挙げているが、全データを通してそうか。
そうでないなら実例を挙げるとき注意しないと。
必ず3行おきに日付が出てくる場合は
例データ (-は空白と言うか被結合セル)
2010/4/5619
ー    6
ー    7
2010/4/10521
ー9
ー7
2010/5/359
ー    3
ー    1
C1の式は
=IF(A1="","",SUM(OFFSET($B$1:$B$100,ROW()-1,0,3,1)))
下方向に式を複写(B100は適当に)

投稿日時 - 2010-08-12 23:03:05

お礼

ありがとうございました。

投稿日時 - 2010-08-16 22:36:44

ANo.1

3つ固定だったら
=SUMIF(A1:A7,"<2010/5/1",B1:B7)
+SUMIF(A1:A7,"<2010/5/1",B2:B8)
+SUMIF(A1:A7,"<2010/5/1",B3:B9)
無駄が多い気はしますが。。。

投稿日時 - 2010-08-12 22:48:24

お礼

ありがとうございました。

投稿日時 - 2010-08-16 22:37:11

あなたにオススメの質問