プロが教える店舗&オフィスのセキュリティ対策術

こんばんは

度々申し訳ございません。前回の質問より合計の出し方も教えて頂けたらと思い
頼りっぱなしで大変申し訳ございませんがお願いしたいです。


再度教えて頂きたいです。
C2~AG2 に
1~31(日付)
C3~AG3に
月曜~日曜(曜日)
=C2 =D2…=AG2
という式を入れて曜日をC3~AG3に表示させるようにしてます。


やりたいことは週ごとに(日曜~土曜)
合計ができるようにしたいです。

例 4行(4~26行が入力セル)の場合で1月の場合 (下記月によって合計する所は変化する)

1/1日~1/2の合計
C4~D4の合計を AV4に表示
1/3日~1/9日の合計
E4~K4の合計を AW4に表示

・・・

1/24日~1/30日
Z4~AF4の合計をAZ4に表示

1/31日は日なので
AG4のみ BA4に表示

月によって変動する合計はどのような関数でできますでしょうか。

教えて頂けたら幸いでございます。


よろしくお願いいたします。

A 回答 (8件)

No.5,6,7です。


No.5の回答の問題点(対象セルの中に空白(「=""」)があると正しく計算できない)に気づいたのですが、No.6でC4からAG4の「対象となるセルの合計値」を計算する数式を投稿すべきところ、あわててしまい、「対象となるセルの個数」を計算する数式を投稿してしまいました。
このため、No.6は取消しとさせていただきました。
改めて、No.6でC4からAG4の「対象となるセルの合計値」を計算する数式は、以下のようになります。

No2.さんの数式では
=SUMPRODUCT(($C$4:$AG4<>"")*($C2:$AG2-WEEKDAY($C2:$AG2)=$C2-WEEKDAY($C2)+COLUMN(A1)*7-7),($C$4:$AG4))

私の前回No5,の回答の数式では
=SUMPRODUCT((FLOOR($C2:$AG2-1,7)=FLOOR($C2-1+7*(COLUMN()-48),7))*($C4:$AG4<>"")*(MONTH($C2:$AG2)=MONTH($C2)),($C4:$AG4))

お詫びして訂正いたします。
    • good
    • 0

No.6です。


前回投稿は完全に勘違いの投稿でした。
大変失礼しました。なかったものとしてください。
    • good
    • 0

No.5です。


ご質問者の前回質問を見ていてふと気になったことがあります。
それはC4からAG4のセルの中に空白(「=""」)となっているセルがある場合、No.2さんの数式および前回の私の回答した数式ともに正しい結果が得られません。
これを回避するにはNo.2さんの数式では
=SUMPRODUCT(($C$4:$AG4<>"")*($C2:$AG2-WEEKDAY($C2:$AG2)=$C2-WEEKDAY($C2)+COLUMN(A1)*7-7))

私の前回回答の数式では
=SUMPRODUCT(($C4:$AG4<>"")*(FLOOR($C2:$AG2-1,7)=FLOOR($C2-1+7*(COLUMN(A1)-1),7))*(MONTH($C2:$AG2)=MONTH($C2)))

という風に各々修正する必要があります。
    • good
    • 0
この回答へのお礼

この度は難しい式詳しい解説ありがとうございました。。


出来ました。

勉強になります。


この度は本当にありがとうございました。

お礼日時:2021/01/25 13:38

ご質問者は


>C2~AG2 に1~31(日付)
とおっしゃっていますが、ここには(数式または数値の)シリアル値が入っていて、セルの書式設定を「d」として「1~31」を表示しているものとします。
No.2さんの回答もそのような前提で作成されていると思います。
No.2さんも述べておられますが、
>Weeknum関数がつけると式を簡単にできるのですが、
>配列計算には使えないようなのでWeekday関数で計算しています。
という訳で、シリアル値からFLOOR関数を使ってWeeknumの代用とする方法を考えてみました。

AV4に
=SUMPRODUCT(($C4:$AG4)*(FLOOR($C2:$AG2-1,7)=FLOOR($C2-1+7*(COLUMN(A1)-1),7))*(MONTH($C2:$AG2)=MONTH($C2)))
を記述し、右方向へコピーすればよいと思います。

そもそものご質問者の作成された表の全容が判りませんので、何ともいえませんが、前回のご質問を見る限り4行目には日付を表すシリアル値が計算される仕様だったと思います。
これを合計することにどんな意味があるのか判りません。

また、ご質問者は
>月によって変動する合計はどのような関数でできますでしょうか。
ともおっしゃっているので、C2~AG2には月によって異なるシリアル値が入る仕組みになっているということでよいのでしょうか?

また、この日付は月によって存在しない日は表示されないような処理が行われている(たとえば今年でいえば2月は29~31は表示されない)ということでよいのでしょうか?

No.2さんの数式は上記のような処理が行われていることが前提だと思います。
老婆心ながら、そのような処理が行われていないとすると、No.2さんの数式は31日フルにある月はよいのですが、2月のように31日に満たない月は月越のデータまで合計されてしまう気がします。
つまり、2012年2月は第1週が6日、第2週~第4週が7日、第5週が1日となるはずですが、第5週を4日として計算してしまうのではないかと思います。

逆に、それが正しいのかどうかご質問者でないとわかりませんが・・・・・
    • good
    • 0

横からごめん。

野次馬的通りすがりです。
したがって前の質問も見ていません。
一つ提案があります。
集計しやすいように、表を作り直したほうが早いかと思います。
合計を表示する列を固定すれば、簡単じゃないですか。
    • good
    • 0
この回答へのお礼

ありがとうございました。ご提案感謝致します。

お礼日時:2021/01/25 13:38

No2です。



今見てみたら、誤字がありました。
わかるとは思いますが、念のため。

誤:Weeknum関数がつけると~
  ↓  ↓  ↓
正:Weeknum関数が使えると~
    • good
    • 0
この回答へのお礼

ありがとうございます。
式を考えて頂き大変助かりました。


出来ました。


本当にありがとうございました。

お礼日時:2021/01/25 13:38

こんばんは



Weeknum関数がつけると式を簡単にできるのですが、配列計算には使えないようなのでWeekday関数で計算しています。

AV4セルに
=SUMPRODUCT($C$4:$AG4*($C2:$AG2-WEEKDAY($C2:$AG2)=$C2-WEEKDAY($C2)+COLUMN(A1)*7-7))
を入力して、右方にフィルコピーでいかがでしょうか?
    • good
    • 1

weeknum関数が使えるかもしれません。

weeknum関数は、その日が、その時において何週目なのかを示す関数です。
ただしひとつ作業用の行が必要です。できれば4行目に。関数作成後、非表示にしてください。
あとはif関数で「土曜なら」という条件を組み、さらにtrueにsumifを7日分組んで、その列と同じ週数の合計を。
このままだと土曜以外の月末を落とすので、falseにif関数をさらに入れてeomonthを使います。その列の日付が月末なら、という条件です。
true内容はさっきと同じで良いかな。
falseは空白 "" で大丈夫かなと。

以上、頭の中だけで考えた(スマホなので…)だけなので不具合があるかもしれません。あくまで、参考までに。
    • good
    • 0
この回答へのお礼

ありがとうございます。 参考にして作成してみます。

詳しいアドバイスありがとうございます。

感謝致します。

お礼日時:2021/01/25 13:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!