2016-11-02 3 views
1

테이블에 yyyymmddhhmmddxx의 데이터가 포함 된 두 개의 열이 있습니다. 첫 번째 열은 날짜이고 다른 시각은 0.01 초입니다. 예를 들어, 나는 2016110217052349입니다.Excel VBA는 날짜 + 시간 값을 만듭니다.

시간을 나타내는 단일 값으로 변환하고 dd/mm/yyyy hh:mm:ss.xx 형식으로 표시하고 싶습니다. 예를 들어 02/11/2016 17:05:23.49을 얻고 싶습니다. 내가 DateSerialTimeSerial 기능을 사용할 필요가 있다고 생각하지만,이 문제는 내가 어떻게 주위에 가서 아무 생각이있다 :

  1. TimeSerial는 시간, 분을 받아 두 번째 인수로, 모든 정수 타입, 어떻게 분수를 전달하는 그것에 두 번째?
  2. DateSerial은 내 날을 만들고 TimeSerial은 내 시간을 만듭니다. 날짜 및 시간을 인수로 사용하여이 중 하나의 "그날, 그 시간에"값을 만드는 함수가 있습니까?
+0

날짜가있는 항목을 사용하고, 2의 섹션 중간에 시간 시계를 추가하고, 사용자 정의 문자열 o/p를 가질 수 있으므로 본질적으로 사용자 고유의 함수 GENERATE_TIMESTAMP () 문자열은 숫자 2와 마찬가지로 –

+0

일 수 있습니다. 날짜와 시간을 가져 오기 위해 함께 추가하십시오. DateSerial() + TimeSerial() = 특정 날짜 시간. 날짜는 길고 십진수이므로 두 개가 함께 = double입니다. –

+0

날짜와 시간은 숫자로 저장됩니다. NumberFormat으로 인해 날짜 및 시간으로만 표시됩니다. 날짜는 1900 년 1 월 1 일 이후 날짜로 유지됩니다. 시간은 SecondsSinceMidnight/SecondsInDay로 유지됩니다. 그래서 날짜는 정수입니다. 시간은 분수입니다. 그들은 추가 될 수 있습니다. –

답변

1

어쩌면 이렇게 할 수 있을까요 ??

? generate_timestamp("20161102","170522349")

02/11/2016 17:05:23.49

Function GENERATE_TIMESTAMP(strDate As String, strTime As String) As String 

Dim dtDate As Date 
Dim dtTime As Date 

dtDate = DateSerial(Mid(strDate, 1, 4), Mid(strDate, 5, 2), Mid(strDate, 8, 2)) 
dtTime = TimeSerial(Mid(strTime, 1, 2), Mid(strTime, 3, 2), Mid(strTime, 6, 2)) 

GENERATE_TIMESTAMP = FormatDateTime(dtDate, vbShortDate) & " " & _ 
         FormatDateTime(dtTime, vbLongTime) & "." & _ 
         Mid(strTime, 8, 2) 

End Function 
0

편집을 제공합니다 : 테스트 서식 초 분수를 삭제, 그냥 분수를 반복했다 발견 후. 해결할 수식을 고안했습니다. 여기에있는 수식은 datetime의 직렬 표현을 출력하지 않지만 단지 텍스트 문자열임을 유의하십시오.

=TEXT(DATE(LEFT(A1,4),MID(A1,5,2),RIGHT(A1,2))+TIME(LEFT(B1,2),MID(B1,3,2),MID(B1,5,2)),"m/d/yyyy hh:mm:ss")&"."&RIGHT(B1,2) 

이전 응답은 :

=DATE(LEFT(A1,4),MID(A1,5,2),RIGHT(A1,2))+TIME(LEFT(B1,2),MID(B1,3,2),MID(B1,5,2))+(RIGHT(B1,2)/(24*60*60*100)) 

을 그리고/월/일 HH와 사용자 정의로 셀을 포맷 :

다음과 같은 공식을 사용하여 시리얼을 만들 수 있습니다 MM : SS. ss. 여기서는 초의 분수를 TIME() 함수로 전달하지 않고 오히려 하루의 일부분으로 추가합니다.

+0

사실 더 테스트를하다가 사용자 지정 서식에 정수 초만 표시된다는 오류가 표시됩니다. 따라서 몇 초 동안의 예에서는 "23.49"보다는 "23.23"이 표시됩니다. 대체 솔루션에 대해 생각해보십시오. 사과. – nbayly

관련 문제