2012-05-02 8 views
3

VBAを使用してExcelで分と秒に変換する必要がある10進数で表した時間があります。VBAを使用して10進数を分と秒に変換します

例:小数点は0.197683577(0分)として分を与える前 番号60を乗じた数秒を与える= 0.197683577×60 = 11.86101462(12秒) = 0:12

私はこれをコピーし、テキスト形式に貼り付け、数値を小数点の列にテキストを使って左右に分け、次に「:」を追加することでこれを行うことができますが、これを計算する方法が必要です。式と同じ

答えて

1

VBA機能は私のために動作しませんでしたが、私は、Excel内の回避策が見つかりました:W11900.3201306のような進数の形式で時刻です

=TRUNC(W11/60)&":"&IF(ROUND(((W11/60-TRUNC(W11/60))*60),0)=0,"00",ROUND(((W11/60-TRUNC(W11/60))*60),0))` 

を。 結果は分単位です。15:00

基本的には、小数点以下の分数から小数点以下の分数+秒を差し引いた秒数を指定します。それでdecimal seconds * 60を取ってseconds+millisecondsとする。あなたに秒を与えるためにこれをラウンドします。秒が0の場合、正しいフォーマットを得るために "00"を書きます。その後、切り捨てられた分に秒を足したものを加えます。

この式は機能しているようです。

4
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)を切り捨てます。しかし、最後の引数に丸め関数を適用することができます。

+1

ありがとうございました! 私は数分の整数を必要としていたので、正しいフォーマットを得るためにFix(decim)&Format(val、 ":ss")を使用しました。これを生成するための時間形式コードがあるかどうかはわかりませんが、うまくいくようです。 「サブaaaaaaaMacro1()ダブル decim =レンジ( "AB11")として 薄暗いdecim日 のval = TimeSerialない(0、(decim)を修正、(decimとしての価値 薄暗いヴァル - 。修正(decim) )* 60) MsgBox Fix(decim)&Format(val、 ":ss") End Sub ' – user1371038

関連する問題