2012-05-02 3 views
3

VBA를 사용하여 Excel에서 분 및 초로 변환해야하는 십진수로 표현되는 시간이 있습니다.VBA를 사용하여 십진수를 분 및 초로 변환

예 : 0.197683577 (0 분) 60 곱한 수가 초 = 0.197683577 * 60 = 11.86101462 (12초)을주기 때문에 소수점 앞의 숫자는 분을 제공 = 0시 12분

필자는 텍스트 형식으로 복사하여 붙여 넣기하여 소수점의 열에 텍스트를 사용하여 왼쪽과 오른쪽으로 구분 한 다음 ":"을 추가 할 수 있지만이를 계산할 방법이 있어야합니다. 공식과 같은

답변

1

VBA를 기능은 나를 위해 작동하지 않았다 그러나 나는 엑셀 내에서 해결 방법을 찾을 :

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

W11900.3201306 같은 진수의 형태로 시간이다. 결과는 분 단위입니다. 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

고마워요! 정수 (minute)를 원했기 때문에 Fix (decim) 및 Format (val, ": ss")을 사용하여 적절한 형식을 얻었습니다. 이 생성하는 시간 형식 코드가 있는지 모르겠지만 작동하는 것. '하위 aaaaaaaMacro1() 희미한 decim으로 두 번 decim = 범위 ("AB11") 값 희미한 발 날짜로 발 = TimeSerial (0, 수정 (decim), (decim -. 수정 (decim)) * 60) MsgBox 수정 (데시 밀) 및 형식 (val, ": ss") End Sub ' – user1371038

관련 문제