- ベストアンサー
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
- みんなの回答 (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)
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)
#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月が対象になってしまいます。
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)
検索条件の書き方が間違っていると思います。 ">=" & MONTH($A$1) 関数の部分は文字列には入れずに、 戻り値を文字列と結合します。