- ベストアンサー
時間を秒単位で切り上げる方法
- 計測データをCSV変換し、秒を分に切り上げる方法を教えてください。
- シート上での手作業ではなく、マクロを使ってC2セルからC100セルまでの切り上げを行いたいです。
- 秒単位で切り上げするためのマクロの方法を教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは! >秒単位で切り上げ すなわち秒が0より大きい場合はすべて切り上げて分単位に表示する!というコトですよね? >上手くいきません とはどのように上手くいかないのかこちらでは判らないのですが、 この手の問題として浮動小数誤差が考えられます。 (他の原因ならごめんなさい) その解決策として、B列の小数点以下の数値を5桁程度で丸めてみてはどうでしょうか? 尚、秒単位の場合は丸めた桁数でも誤差が生じるかもしれませんので、 念のために「秒」が0以外の場合にのに切り上げとしてみた方が良いかもしれません。 関数で簡単にできますが、今回はマクロがご希望のようなので一例です。 Sub Sample1() With Range("B2:B100") .Formula = "=ROUND(A2/24/60/60,5)" .NumberFormatLocal = "[h]:mm:ss" End With With Range("C2:C100") .Formula = "=IF(SECOND(B2)>0,CEILING(B2,""0:01""),B2)" .NumberFormatLocal = "[h]:mm" End With End Sub こんな感じではどうでしょうか?m(_ _)m
その他の回答 (3)
- keithin
- ベストアンサー率66% (5278/7941)
sub macro1() dim r as long for r = 2 to cells(rows.count, "A").end(xlup).row cells(r, "C") = application.ceiling(cells(r, "B"), timevalue("0:1")) next r end sub 計算の仕方は同じですが,「全く同じ式で出来る」ワケでは勿論ありません。
お礼
keithinさん いつも教えていただき有難うございます。上手く動作しました。
- f272
- ベストアンサー率46% (8467/18129)
私なら C2=(INT(($A2-1)/60)+1)/1440 と同じことだから,VBAでも Range("C2").Value=(CLng((Range("A2").Value-1)/60)+1)/1440 とします。
お礼
f272さん教えていただき有難うございました。0秒のときにも切り上がりました。
- mu2011
- ベストアンサー率38% (1910/4994)
ご例示のマクロで問題ないと思いますよ。 うまくいかない点を記載しないと何のことか判りませんので補足して下さい。
お礼
mu2011さん回答いただき有難うございます。
お礼
tom04さん有難うございます。誤差もなく思うような動作してくれました。教えていただき有難うございます。