- ベストアンサー
SUMPRODUCTで期間集計の方法とは?
- SUMPRODUCT関数を使用して集計を行う際に、集計期間が異なる場合の式の組み方について悩んでいます。
- シートAのA列からV列までの各項目を集計するために、SUMPRODUCT関数を使用しています。
- 集計条件として、シートAのH列はID、R列は状況、T列はポイントとなっています。しかし、集計期間がまちまちなため、式の中にどのように組み込めば良いかわかりません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1 Cupperです。 ANo.1 のお礼に書かれた質問への回答になります。 >("2007/10/1")の部分を既に日付が入力されているセルを参照させたい場合にはどのようにすればよいでしょうか? 質問本文で日付けを文字列で指定していたので、文字列をシリアル値に直す方法で答えましたが、 日付けが入力されているセルを参照する場合は、DATEVALUE関数を使わずそのまま参照してかまいません。 A1セルに 2007年10月1日、B1セルに 2007年10月10日 とあるのであれば、 (DATEVALUE("2007/10/1")<='シートA'!$N$2:$N$5000)*('シートA'!$N$2:$N$5000<=DATEVALUE("2007/10/10")) ↓ (A1<='シートA'!$N$2:$N$5000)*('シートA'!$N$2:$N$5000<=B1) ※日付けは 年 まで表示させたほうが間違いを起こしにくいです。 ただし、日付けがシリアル値でなく文字列で入力されている場合は (DATEVALUE("2007/10/1")<='シートA'!$N$2:$N$5000)*('シートA'!$N$2:$N$5000<=DATEVALUE("2007/10/10")) ↓ (DATEVALUE(A1)<='シートA'!$N$2:$N$5000)*('シートA'!$N$2:$N$5000<=DATEVALUE(B1)) と日付けを示す文字列をシリアル値に直すようDATEVALUE関数を使用してください。 文字列かシリアル値か分からないときは「セルの書式設定」で"文字列"か"日付"どちらに設定されているかを確認しましょう。 ~ 参考 ~ Excelでは日付けをシリアル値として扱っています。 また、DATEVALUE関数は日付けを示す文字列をシリアル値に変換する関数です。 普段日付けとして表示されている(2007年)10月1日 はシリアル値で 39356 として記録されていますが、 「セルの書式設定」で「日付」に設定され、日付けの書式で表示されています。 ※シリアル値は1900年1月1日を1として経過した日数になります。 また、Excelは年を省略して入力された日付けに対してパソコンの時計から年を補完するように作られています。 2008年2月28日(39506)のつもりで "2/28" と入力しても、入力した年が2007年であれば Excelは 2007年2月28日(39141)として記録してしまいます。 年をまたいで日付けを計算に用いる場合や違う年の日付けの計算、曜日を表示させる必要がある時は 必ず "年" から入力するようにしましょう。 ※DATEVALUE関数も同様に補完されます。年が入力されていない場合は注意しましょう。
その他の回答 (1)
- Cupper
- ベストアンサー率32% (2123/6444)
(10/1<='シートA'!$N$2:$N$5000<=10/10) これは数式が成り立ちません。 (DATEVALUE("2007/10/1")<='シートA'!$N$2:$N$5000)*('シートA'!$N$2:$N$5000<=DATEVALUE("2007/10/10")) としましょう。 日付け文字を日付けとして扱うために Datevalue関数で変換するのを忘れないでください。 10/1 や 10/10 では単なる分数です。 またこの場合、以上~以下の条件を付けるのであれば、(以上)*(以下)とする必要があります。
お礼
ご返答有難うございます。 出来ました。 DATEVALUEという関数自体知りませんでした。有難うございます。 ちなみに("2007/10/1")の部分を既に日付が入力されているセルを参照させたい場合にはどのようにすればよいでしょうか?
お礼
おはようございます。 懇切丁寧なご返答有難うございます。 式も問題なく出来ました。また何かありましたら宜しくお願いします。 ホントに有難うございました。