• ベストアンサー

対象の年月の数値を選び出して合計したい

下記のようなセルがあるとします。 A1から縦に年月日、B1から縦に数値が入ってます。  A             B       C 2003年1月12日  19278       2003年1月13日   23343 2003年1月14日  12222 2003年1月16日  34632 2003年1月18日  33335   :   : 2008年6月10日  98756 2008年6月11日  59478 2008年6月12日  14218   :   : 上記より、例えば2007年8月の合計をC1に求めたいとき、C1に入れる関数式が判りません。 力技で、sum(A●●:A○○)の様に、●●に月始め、○○に月の終わりのセル値を書けば出来るのは判りますが、全ての月毎に合計を求めたいので大変な作業になります。 実際には16年分やらないといけないので。。(汗 出来れば応用として、年毎の合計も出したいです。 ご教授よろしくお願いします。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.6

#2のmerlionXXです。 > 何故か#VALUE!と表示されてしまいます。 セルの書式設定とは関係ないでしょう。 データ範囲内のA列かB列に文字列が入っているのではないでしょうか? =COUNT(A:A) A列の数値セル合計 =COUNTA(A:A) A列の空白以外のセル合計 この値が違っていれば文字列があります。B列も同様に調べてみてください。

ya_su_shi_
質問者

お礼

ご指摘通りでした。B列に空白があり、そこに0を入れることで計算できました。 ありがとうございました!!

その他の回答 (5)

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.5

C1=SUMPRODUCT((TEXT(A1:A10,"yyyymm")="200708")*B1:B10)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.4

一例です。 A列はシリアル値としています。 月の集計は、=SUMPRODUCT((TEXT(A1:A100,"yyyy/mm")="2007/08")*(B1:B100)) 年の集計は、=SUMPRODUCT((TEXT(A1:A100,"yyyy")="2007")*(B1:B100))

ya_su_shi_
質問者

お礼

B列に空白のセルがあり、そこに0を入れたら計算できました。 ありがとうございました。

ya_su_shi_
質問者

補足

A列はシリアル値としています、との事ですが、セルの書式設定を仮に「数値」とかに変更すると36558のような数字になる状態で、実際には「日付」を選んでる状態なのですが、これでOKなのでしょうか? #VALUE!が出てしまいます。。

回答No.3

A列が日付で並んでいるとして、月の変わり目でC列に小計が出る式 C2: =if(month(A2)<>month(A3),sum(B$1:B2)-sum(C$1:C1),"") 下にガ~ッとドラッグね。年ごとの集計も応用は簡単。month関数が year関数になるだけ。

ya_su_shi_
質問者

補足

すばらしいアイデアありがとうございました。 式を見るとなるほど~って感じ何ですが、計算結果が出てくれません。。 やっぱり日付データがシリアル値?なのが原因でしょうか。。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

仮にデータの範囲が1~10000行だとしたら 2008年8月の合計 =SUMPRODUCT((YEAR(A1:A10000)=2008)*(MONTH(A1:A10000)=8)*B1:B10000) 2008年の合計 =SUMPRODUCT((YEAR(A1:A10000)=2008)*B1:B10000)

ya_su_shi_
質問者

補足

なるほど!っと思って早速実行してみました。 が、、何故か#VALUE!と表示されてしまいます。 日付のA列には2008/01/01の様に入力していて、実際の表示は2008年1月1日となるようにセルの書式設定で「日付」を選んでます。 何かこのあたりが原因でしょうか?

  • kigoshi
  • ベストアンサー率46% (120/260)
回答No.1

「集計」で行うのはいかがですか。 ◎手順 1)タイトル行を付けます。1行目に空白行を挿入して   A1=「日付」 B1=「数値」 C1=「年月」 2)年月を入れる。C2=Year(A2) & "年" & Month(A2) & "月"   C2セルを下までコピー。 3)A1セルにカーソルを合わせ、   [データ]→[集計]→   グループの基準:年月、集計の方法:合計、集計するフィールド:数値のみチェック   現在の集計と置き換える:チェックなし   グループごとに改ページを挿入する:チェックなし   集計行をデータの下に挿入する:チェックなし   [OK]をクリック。 年ごとの集計はD列を「年」の列にして D2=Year(A2) & "年"として 以下同様の感じでできると思います。 どうしても関数でやりたいのであれば、たぶんVBAで関数を定義しなければならないと 思います。その方法を採りたいのであれば、その旨、補足して下さい。

ya_su_shi_
質問者

お礼

早速の回答ありがとうございました。 VBAは苦手ですがなんとか関数だけでできないものでしょうか。。 もう少しやってみて、ダメなら集計でやってみようと思います。 ありがとうございました!

関連するQ&A