アプリ版:「スタンプのみでお礼する」機能のリリースについて

下記のような表があります。実際は数百行あります
1日1件のときもあれば5件のときもあります
その日のうちに始まって必ずその日のうちに終わります
24:00をまたぐことはありません

これを日別の合計時間を出したいのですが、どんな関数を使えばいいのでしょうか?
関数でなく別の方法でも構いません
「小計」というのもあるようですが使い方がよくわからないのでとりあえず関数でと思っています

「日別の合計」の質問画像

A 回答 (5件)

№2です。


シンプルな数式を考えました。
固定したセル範囲指定をしていませんので、行が増えても数式を変更する必要はありません。テーブル化すれば、数式をCOPYしなくても、データを入力するだけで、数式がコピーされますので、お勧めです。

D2=IF(ROW()=MATCH(INT(A2)+0.9999,A:A,1),SUMPRODUCT((INT(A$2:A2)=INT(A2))*C$2:C2),"")
下へフィルコピー
    • good
    • 1
この回答へのお礼

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

お礼日時:2022/10/17 13:50

こんにちは



既に回答は出ていると思いますが、No2様の方式で良ければ、少しだけ簡略化できそうなので・・

質問文の図で、データはA:C列にあり、1行目がタイトル行、2行目以降にデータがあるものとします。
D2セルに
=IF(SUMPRODUCT((INT(A2:A$99)=INT(A2))*1)=1,SUMPRODUCT(C$2:C$99*(INT(A$2:A$99)=INT(A2))),"")
の式を入れて、下方にフィルコピーではいかがでしょうか?
    • good
    • 1
この回答へのお礼

回答ありがとうございます
すっきりした方式でわかりやすくなりました

お礼日時:2022/10/10 14:26

ご質問者のご希望を叶える方法として、関数を使うという手は当然考えられます。

既に複数の回答者さんが関数を用いた方法をお示しになっています。
ピボットテーブルを使う方法もあります。その方法をお示しします。
添付画像をご覧ください。
ご質問者がお示しになった図①のような表があったとします。

メニュータブ⇒挿入⇒ピボットテーブル⇒ダイアログが表示される
⇒図①の枠線のある部分を選択
⇒配置する場所の選択で「既存のワークシート」を選択
⇒表示す位置の左上隅のセルを選択(添付画像ではE1セル)
⇒OKボタンを押す。

すると図②のようなピボットテーブルのフィールドリストが表示されます。

>その日のうちに始まって必ずその日のうちに終わります

ということなので、「始」でも「終」でも日付は同じなのですが、ここでは、「終」を行のボックスにドラッグし、「時間」を値のボックスへドラッグします。

このとき、「値」へドラッグした「時間」が「合計/時間」と表示されていることを確認します。

もし「データの個数/時間」などと表示されている場合は、これをクリックして「値フィールドの設定」を選択し、「値フィールドの集計」の項目一覧から「合計」を選択します。

すると図④と似たピボットテーブルが作成されると思います。
しかし、そのままだと日付別でもなく、時刻は少数が表示されていると思います。

そこで、作成されたピボットテーブルの日付のいずれかのセルを選択するとメニュータブの右側にピボットテーブル関連のメニュータブが追加表示されているので、「分析」を選択します。

表示されたメニューの中から「グループの選択」をクリックすると図③のようなグループ化のダイアログが表示されるので、「日」を選択します。
もし、既に「日」以外の項目が選択されている場合はクリックすると解除されるので、解除してから「日」を選択します。

さらに、ダイアログの右下にある日数の表示が「1」となっていることを確認します。確認したら「OK」を押すと日付別のピボットテーブルになります。

合計時間が少数のままなので、合計時間の表示さているセル範囲全てを選択して右クリックし、セルの書式設定⇒表示形式⇒ユーザー定義と進んで、種類(T)の枠内に
[hh]:mm:ss
と入力してOKを押すと図④のような表が完成します。

図⑤は数式(関数)を使用した例をお示ししたものです。

ご質問者がお示しになったデータでは日付は連続していないのですが、数式を使用して元データの不連続な日付を再現しようとすると、とても複雑になるのでこの例では最初の日付「20/07/10」のみH2セルに手入力し、下方向へオートフィルして連続日付を作成しています。
I2セルに

=SUMIFS($C$2:$C$15,$A$2:$A$15,">="&H2,$B$2:$B$15,"<"&H2+1)

という数式を記述し、下方向へコピーすればよいと思います。
合計時間の表示形式はピボットの時と同様に[hh]:mm:ssを設定しています。
当然、データのない日は00:00:00が表示されますので、その日付の部分を削除したり、フィルターなどで非表示にするといった工夫が必要かも知れません。
「日別の合計」の回答画像3
    • good
    • 1
この回答へのお礼

回答ありがとうございます
libreしかないのでweb版のエクセルでまねしてやってみました
お礼に時間がかかってしまいましたがありがとうございます

お礼日時:2022/10/12 14:34

ローテク数式ですが


D2=IF(SUMPRODUCT(N(INT($A$2:$A$15)=INT(A2)))=SUMPRODUCT(N(INT(A$2:A2)=INT(A2))),SUM(OFFSET(C2,-SUMPRODUCT(N(INT(A$2:A2)=INT(A2)))+1,,SUMPRODUCT(N(INT(A$2:A2)=INT(A2))))),"")
下へフィルコピー
「日別の合計」の回答画像2
    • good
    • 1
この回答へのお礼

回答ありがとうございます
入れ子がたくさんあって大変そうですが
とりあえずやってみます

お礼日時:2022/10/10 12:47

INT関数で日付部分だけ抜き出した作業列を作ればSUMIF関数でできませんか?



0:00~23:59の時間部分も付け加えれば作業列なしでSUMIFS関数でもできるかと思いますが、日付だけで集計した方が楽そうだし。
    • good
    • 1
この回答へのお礼

回答ありがとうございます
試しにやってみます

お礼日時:2022/10/10 12:46

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