VBA を使用して Excel で分と秒に変換する必要がある 10 進数で表された時間を持っています。
例: 小数点の前の数字は分を 0.197683577 (0 分) とし、数字を 60 倍すると秒 = 0.197683577*60 = 11.86101462 (12 秒) = 0:12 となります。
コピーしてテキスト形式に貼り付け、テキストを使用して数値を左右に区切り、小数点の列に「:」を追加することでこれを実行できることはわかっていますが、これを計算する方法が必要です。
Public Function FromDecimalTime(ByVal t As Double) As Date
FromDecimalTime = TimeSerial(0, Fix(t), (t - Fix(t)) * 60)
End Function
式と同じ:
=TIME(0,TRUNC(A1),(A1-TRUNC(A1))*60)
まあ、実際には同じではありません。TimeSerial
丸め規則に従って秒数を丸め ( 11.86
-> 12
)、TIME
切り捨てます ( 11.86
-> 11
)。ただし、最後の引数に丸め関数を適用できます。
VBA 関数は機能しませんでしたが、Excel 内で回避策を見つけました。
=TRUNC(W11/60)&":"&IF(ROUND(((W11/60-TRUNC(W11/60))*60),0)=0,"00",ROUND(((W11/60-TRUNC(W11/60))*60),0))`
W11
のような 10 進数形式の時間はどこにありますか900.3201306
。結果は数分で15:00
基本的に、切り捨てられた 10 進数の分から 10 進数の分 + 秒を差し引いて、秒のみを取得します。次に、 を受け取りdecimal seconds * 60
ますseconds+milliseconds
。これを四捨五入して秒数を与えます。秒が 0 の場合、「00」を書き込んで正しいフォーマットを取得します。次に、切り捨てられた分と秒を加算します。
この式は機能しているようです。