みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

SUMPRODUCT 複数条件と日付

関数初心者です。Excel2000を使用しています。


SUMPRODUCT関数を使って複数条件の集計をしたいのですが、どうしても日付の列に反応してくれません。

おそらく原因はデータ元となる日付に時間まで入っているからではないかと思っています。

日付が入力されているセルのデータは
例)
2012/3/3 12:10:50 → セルの書式設定は 時刻のみ 12:10:50

集計したいのは複数条件
例)
2012/3/3 12:10:50 りんご 50

 日付 と 商品名 を条件とし 数値 の合計を出したいです。

秒単位で時間計測しているのでこのデータ自体の変更と書式設定の変更は出来ません。


=SUMPRODUCT((B6:B12=B3)*(C6:C12=C3),(D6:D12))

B3のセルに「3/3」もしくは「2012/03/03」の入力で拾えるようにしたくて、
過去のの質問など参考にし(B6:B12=B3)の部分を変更しましたが、うまくいきませんでした。

やってみたことが的外れだったのかもしれません。


また、日付を条件とした場合、書式設定も影響されるのでしょうか?



アドバイスをよろしくお願いします。

投稿日時 - 2012-03-03 01:45:27

QNo.7339154

すぐに回答ほしいです

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

こんにちは!
横からお邪魔します。

No.1さんの回答そのままになってしまいますが・・・

=SUMPRODUCT((INT(B6:B12)=INT(B3))*(C6:C12=C3),D6:D12)

といった感じではどうでしょうか?

失礼しました。m(_ _)m

投稿日時 - 2012-03-03 11:14:36

お礼

回答ありがとうございます。

理想通りの動きをしてくれました。
シンプルな式で加工しやすかったので今回のベストアンサーとさせて頂きます。


この集計に関して、また新たに一つ問題が発生し模索中です。

新規で質問を出しますので、よろしければまたアドバイスをよろしくお願いします。

投稿日時 - 2012-03-04 03:35:38

ANo.5

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.4

次の式でもよいですね。

=SUMPRODUCT((DATE(YEAR(B6:B12),MONTH(B6:B12),DAY(B6:B12))=B3)*(C6:C12=C3)*(D6:D12))

投稿日時 - 2012-03-03 08:42:43

お礼

回答ありがとうございます。

大変参考になりました。
この集計に関して、また新たに一つ問題が発生し模索中です。

新規で質問を出しますので、よろしければまたアドバイスをよろしくお願いします。

投稿日時 - 2012-03-04 03:33:38

ANo.3

時刻まで入力された日付の場合にはお示しの式では0となってしまいます。次のように式を変更して使うのがよいでしょう。

=SUMPRODUCT((YEAR(B6:B12)=YEAR(B3))*(MONTH(B6:B12)=MONTH(B3))*(DAY(B6:B12)=DAY(B3))*(C6:C12=C3),(D6:D12))

これでB3セルに入力された日付でC3セルに一致するデータのD列での集計が表示されます。

投稿日時 - 2012-03-03 08:37:17

お礼

回答ありがとうございます。

大変参考になりました。
この集計に関して、また新たに一つ問題が発生し模索中です。

新規で質問を出しますので、よろしければまたアドバイスをよろしくお願いします。

投稿日時 - 2012-03-04 03:32:29

ANo.2

B3に目的日付が シリアル値で入っていて、C3に商品名「りんご」が入っているとして
=SUMPRODUCT((B6:B12>=B3)*(B6:B12<(B3+1))*(C6:C12=C3)*(D6:D12))
で、どうでしょう。

投稿日時 - 2012-03-03 02:19:45

お礼

回答ありがとうございます。

理想通りの動きをしてくれました。
この集計に関して、また新たに一つ問題が発生し模索中です。

新規で質問を出しますので、よろしければまたアドバイスをよろしくお願いします。

投稿日時 - 2012-03-04 03:31:15

ANo.1

ほぼ質問者さんの見込み通りです。

日付と時間は一つの 「シリアル値」 という数値で示されるモノですので
イコールで条件を成立させるには、このシリアル値を一致させるために時間まで考慮する必要があります。

なお、シリアル値の小数点以下の部分が時間になるので
日付だけを対象にしたいのでしたら、ROUNDDOWN関数 や INT関数を使い
小数点以下を切り捨てをした後に判定するようにすると良いでしょう。

投稿日時 - 2012-03-03 02:18:21

お礼

回答ありがとうございます。

大変参考になりました。
この集計に関して、また新たに一つ問題が発生し模索中です。

新規で質問を出しますので、よろしければまたアドバイスをよろしくお願いします。

投稿日時 - 2012-03-04 03:31:51

あなたにオススメの質問