• ベストアンサー

SUMIFの計算結果が0

ブック内に商品別のシートが数枚あり、 それを月別集計する別シートを作っています ■商品シート A   B   C    D    E 月日  商品  仕入  出荷  在庫 ↓出荷状況によって入力が増減します ■月別集計シート A1=TODAY()  B1=型式  C=在庫 ↓商品別に一覧で在庫表示させる A1には、今日の日時を表示(仕様) C=在庫セルにSUMIFで在庫数計算させているのですが、、、 計算結果が0になってしまいます =SUMIF('型式シート'!$A$1:$A$500,">=MONTH($A$1)",'型式シート'!$C$1:$C$500) -SUMIF('型式シート'!$A$1:$A$500,">=MONTH($A$1)",'型式シート'!$D$1:$D$500)   その月の全仕入から全出荷を引いて在庫計算させているのですが、 SUMIFの計算結果が0になってしまいます。 記述もしくは検索条件のやり方が違うのでしょうか? お手上げ状態です、、TT

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.5

理由1:数式は""で囲まない ">=MONTH($A$1)"はM以上という文字判定になります。 ">="&MONTH($A$1) 理由2:A列は月日(日付)ですよね。これは月では判定できません。 ">="&DATE(YEAR($A$1),MONTH($A$1),1) 上記で当月1日以降の日付を拾います

その他の回答 (4)

  • sige1701
  • ベストアンサー率28% (74/260)
回答No.4

No1さん、No2さんが説明していますので、説明は略 =SUMIF('型式シート'!$A$1:$A$500,">="&TEXT($A$1,"y!/m!/!1"),'型式シート'!$C$1:$C$500) とか =SUMIF('型式シート'!$A$1:$A$500,">="&DATE(YEAR($A$1),MONTH($A$1),1),'型式シート'!$C$1:$C$500) こんな感じでも良いかな =SUMIF('型式シート'!$A$1:$A$500,">"&TODAY()-DAY(TODAY()),'型式シート'!$C$1:$C$500) =SUMIF('型式シート'!$A$1:$A$500,">"&$A$1-DAY($A$1),'型式シート'!$C$1:$C$500)

noname#79209
noname#79209
回答No.3

#2です。 > SUMIFじゃだめみたいですね。 私も、#1さんの方法をやってみたんですがダメだったので、上記を書いたのですが、 もう一度やったら出来ました。実験の数式の入力でミスったのでしょう。 従って、1行目は無視して下さい。 でも、商品シートの「月日」の列がシリアル値なら、「">="&MONTH($A$1)」としてしまうと、 シリアル値と月の数を比較することになるので、今月より前の数値も足されてしまいます。 例えば、2007/11/30のシリアル値は39416ですから今月(12)より大きいと判断されてしまいます。 今月の場合、この条件で引っかかるのは、明治33年1月11日以降の全ての日付です。 従って、SUMPRODUCTを使うなら、 =SUMPRODUCT((MONTH('型式シート'!$A$1:$A$500)>=MONTH($A$1)))*('型式シート'!$C$1:$C$500-'型式シート'!$D$1:$D$500)) ですが、 同様に、去年のデータも入っているなら、全ての年の12月が対象になってしまいます。

noname#79209
noname#79209
回答No.2

SUMIFじゃだめみたいですね。 また、今月を調べたいなら、「>=MONTH($A$1)」でなく「=MONTH($A$1)」で充分ですし、 今月以降を調べたいなら、「>=MONTH($A$1)」でなく「>=DATE(YEAR($A$1),MONTH($A$1),1)」としないとだめでしょう。1<12だからです。 =SUMPRODUCT(('型式シート'!$A$1:$A$500,>=DATE(YEAR($A$1),MONTH($A$1),1))*('型式シート'!$C$1:$C$500-'型式シート'!$D$1:$D$500)) で如何でしょう。 

  • venzou
  • ベストアンサー率71% (311/435)
回答No.1

検索条件の書き方が間違っていると思います。 ">=" & MONTH($A$1) 関数の部分は文字列には入れずに、 戻り値を文字列と結合します。

関連するQ&A