2013-03-08 9 views
32

私は次の形式のデータを持っています。Excel式SUMIF日付は特定月になります

Date  Amount 

03-Jan-13 430.00 
25-Jan-13 96.00 
10-Jan-13 440.00 
28-Feb-13 72.10 
28-Feb-13 72.30 

私は月が月である場合にのみ、金額フィールドを合計する必要があります。

私が試している持っているもの

=SUMIF(A2:A6,"MONTH(A2:A6)=1",B2:B6) 

しかし、それを返し、

iは必要なもの
0 

Following values to be summed, 430.00 + 96.00 + 440.00 = 966.00 
+0

http://www.mrexcel.com/forum/excel-questions/75814-sum-でも動作します。したがって あなたの例では、このありませんif-date-month.html –

答えて

47

代わりにこれを試してみてください:

=SUM(IF(MONTH($A$2:$A$6)=1,$B$2:$B$6,0)) 

配列式ですので、コントロールと入力する必要があります。 - シフト - と入力してください。

この式の仕組みは次のとおりです。

  1. MONTH($ A $ 2:$ A $ 6)はA2の日付の月の数値の配列を作成します:A6は、それは、
    {1, 1, 1, 2, 2}です。
  2. 次に、比較{1, 1, 1, 2, 2}= 1は、IF文の条件を構成する配列{TRUE, TRUE, TRUE, FALSE, FALSE}を生成します。
  3. IF文は、その後、和の値に対して{430, 96, 400..と、値の配列を返す月の値は、月の値が配列{430, 96, 400, 0, 0}は次に得るために合計される等しい1
  4. ない1及び..0,0}に等しい範囲あなたが探している答え。

これは、基本的にはSUMIF関数とSUMIF関数の機能と同じです。しかし、これらの関数のどちらも、条件付きで含めることを試みた計算の種類をサポートしていません。

IFを完全に削除することもできます。 TRUEとFALSEも1と0として扱うことができるので、この式は--- =SUM((MONTH($A$2:$A$6)=1)*$B$2:$B$6)です。

ヘッズアップ:これは、列AとBにデータを追加することができているGoogleスプレッドシート

+0

ありがとうございます..この配列の仕組みを教えてください。 – logan

+2

数式の仕組みを説明するために私の答えを修正しました。 – chuff

+3

完全な列を指定する方法はありますか? MONTH(A:A)のようなもの?私はエクセルシートが(私は別のシートを参照しています)に常に追加されているので、大きな数字を選ぶ必要がありました。 '= SUM(IF(MONTH(入力!$ A $ 2:$ A $ 10000)= 11、入力!$ E $ 2:$ E $ 10000,0))' – bassmadrigal

23
=Sumifs(B:B,A:A,">=1/1/2013",A:A,"<=1/31/2013") 

この式の美しさをでは機能しませんし、それだけで再計算します。

+3

あなたは1月だけをチェックしたいなら、 ** 2013年**に。それはOPの願いであるかもしれませんが、彼は彼の質問に年特異性は言及しませんでした。 –

+1

英国では、31と1を切り換えて忘れてしまったことを忘れないでください。 –

13
=SUMPRODUCT((MONTH($A$2:$A$6)=1) * ($B$2:$B$6)) 

説明:

  • (MONTH($A$2:$A$6)=1)は、1と0の配列を作成します 月は、このようにあなたの例で返された配列が[1, 1, 1, 0, 0]

  • SUMPRODUCTとなり、1月であるとき、それは1です上記のステップで作成された配列の各値に最初に配列($B$2:$B$6)の値を乗算し、合計します。 (1 * 430) + (1 * 96) + (1 * 440) + (0 * 72.10) + (0 * 72.30)

これは、OpenOfficeやGoogleスプレッドシート