重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

excelシート上に
以下のようにデータが入力されています。
(シリアル値で入力されて、書式でyyyy/mm/dd hh:mm:ssとなっています)

(シート名: 集計)
行/列    A           B
1  2007/01/01 07:00:16  2007/01/01 07:00:17
2  2007/01/01 07:01:36  2007/01/01 07:01:36
3  2007/01/01 07:02:12  2007/01/01 07:02:15
4  2007/01/01 07:17:12  2007/01/01 07:17:15


このデータの秒の1の位を四捨五入をして
以下のようにデータを整形が出来なく悩んでおります。


(シート名: 集計)
行/列    A           B
1  2007/01/01 07:00:20  2007/01/01 07:00:20
2  2007/01/01 07:01:40  2007/01/01 07:01:40
3  2007/01/01 07:02:10  2007/01/01 07:02:20
4  2007/01/01 07:17:10  2007/01/01 07:17:20


目的は、前回質問した
『同じ時間に使用した人数を表すグラフの作成』で
同じ時間に利用している人数を求める関数で
=SUMPRODUCT((集計!$A$1:$A$4<=$A1)*(集計!$B$1:$B$4>=$A1)*1)
下記のA列の時間と比較するのに秒の1の位が0でなければ
関数が正しく動かないので、これを正しく動かす事が目的です。


(シート名: 結果)
A列   B列
時刻   人数
9:45:10    0
10:00:20   1
10:15:10   1
10:30:50   2
10:45:10   3
11:00:40   3
11:15:20   2
11:30:30   1
11:45:10   0

VBAで四捨五入が可能であればご教授お願い致します。

A 回答 (4件)

1日=24*60*60秒なので10秒単位に時間を整数化してやれば四捨五入できます。



ただしVBAのROUND関数はEXCELとは異なる値を返すのでINT関数を使って

=INT(A列*8640+0.5)/8640
    • good
    • 0

#01です。

補足要求です。前回の質問はこれでしたね。
http://oshiete1.goo.ne.jp/qa3394376.html

前回のお礼に書かれた補足も良く理解できていないのですが
>秒の1の位が0でなければ関数が正しく動かないので、
は「そんなことはないはず」と思います。

でも今回の質問では集計シートと結果シートの時間帯が異なっているので、式を検証することができません

具体的なデータと、期待する結果を補足していただけませんか?
また結果シートの時刻のならびは等間隔ではありませんが、これも何か意味があるのでしょうか?
    • good
    • 0

安直ですが、別列に次の関数で変換する方法は如何でしょうか。


=FLOOR(A1+"0:0:05","0:0:10")
    • good
    • 0

試しにA1に =NOW() を入力し、B1に


 =MROUND(A1,"0:00:10")
を入力して、A1、B1セルの書式を h:mm:ss にしてみてください。
F9で再計算させると秒の1位で四捨五入できます

ただしMROUND関数は「ツール」→「アドイン」→「分析ツール」にチェックを入れないと使えません
    • good
    • 0

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