2013-03-12 4 views
0

통합 문서를 잘못 만들어서 데이터를 유지하려고하므로 통합 문서에서 데이터를 추출하려고합니다. 따라서 각 워크 시트를 살펴보고 필요한 특정 데이터를 추출해야합니다. (반복적 인 작업 = 구조에 대한 vba 코드)Excel VBA VBA가 소수점 이하로 변환하지 못하도록

나는 끝났지 만, 나는 하나의 불쾌한 작은 문제가있다.

ws.Range ("C13")를 사용하여 필요한 각 셀을 추출합니다. 10시 또는 22시 13 분과 같은 시간 값을 가진 셀입니다. 그러나 내가 debug.print 그 값을 10 진수 얻을. 왜? 어떻게하면 "10:30"을 "0.4375"로 변환하지 못하도록합니까

제가 알 수있는 바로는 십진법은 시간 값과 관련이 없습니다. 잘못된 것은 단순히 24 시간 기간의 표현으로 시간 값입니다. 그래서 그것은 관련이 있습니다. 하지만 여전히.

+1

에 텍스트를 반환해야 ws.Range("C13").Text를 호출하는 셀에 대해 특정 날짜/시간 형식을 설정 한 경우 당신이 오직 할 필요가있는이 매장을 능가 어떻게 이해하다/데이터를 해석하고 필요한 형식을 지정하기 만하면됩니다. –

+1

Excel 시간 코드 값을 문자열 리터럴로 변환하려면 TEXT 함수를 적절한 시간 형식으로 사용할 수 있습니다. 예를 들어 셀 C13의 시간 코드 0.452778 인'= TEXT (C13, "hh : mm am/pm")'은 문자열 "10:52 am"을 생성합니다. – chuff

답변

1

시간 값은 정확합니다. Excel이 내부적으로 날짜 및 시간 값을 저장하는 방식입니다.

날짜가 전체 부분 12/30/1899 00:00.00 (날짜 0.0)와 소수부 보낸 일수를 나타내는 부동 소수점 값으로 저장되는 것은 하루의 소수 부분을 나타낸다 (예., 408875.511/28/2011 12:00:00 PM를 나타낸다).

여기에 몇 가지 환산 계수는 유용 할 수 있습니다

Decimal value Time Value Calculation 
============= ========== =========== 
0.00094444444 12:01:00 AM 1.0/24/60 (1 day/24 hours/60 minutes per hour) 
0.01041666666 12:15:00 AM 1.0/24/60 * 15 
0.02083333333 12:30:00 AM 1.0/24/60 * 30 
0.04166666666 01:00:00 AM 1.0/24 
7

ws.Range("C13")가 해당 셀에서 기본 데이터를 반환 ws.Range("C13").Value하는 것과 동일합니다.

대신 ws.Range("C13").Text을 사용하면 셀에서 표시된 텍스트가 표시됩니다. 이 시간 값에 해당하기 때문에 당신이 그 특정 형식

+0

허용 된 답변에는 시간 값을 계산하는 기술적 방법이 있지만 실용적인 관점에서 볼 때이 답변이 트릭을 수행했다고 생각했습니다. 내가 원한 것은 텍스트 표현입니다. – SwampyFox

0
hours  = MOD(INT(0.tttttttt*24), 24) 
minutes  = MOD(INT(0.tttttttt*24*60), 60) 
seconds  = MOD(INT(0.tttttttt*24*60*60), 60) 
milliseconds = MOD(INT(0.tttttttt*24*60*60*1000), 1000)