애들센스


(스핀오프)날짜+시간에서 시간만 빼오기 오피스/VBA/Office.JS

지난 번 MOD()함수 포스팅에서 아래와 같이 날짜+시간에서 시간만 빼오는 방법을 보여주었다.
사실 엑셀은 날짜와 시간을 특별한 데이터 형식이 아닌 실수값으로 저장하고 있다. 정수부분은 1900년 1월 1일(기억이 정확하지 않는다)부터 세어온 일수이다. 그리고 소수점이하 숫자인 0.8989982639 는 오후 9시 34분을 가리키며, 이는 자정에서 시작하여 오후 9시 34분은 0.8989982639 , 약 89.89% 지난 것이다. 그래서 날짜와 시간이 같이 있는 데이터가 있다면 , MOD함수를 사용하여 시간부분을 뜯어낼 수 있다.

그런데 방법은 이것만 있는 것은 아니다. 엑셀의 함수중 NOW()함수는 현재날짜와 시간을 돌려주는 함수이다. TODAY()는 현재 날짜만 돌려주는 함수이다. 두 함수의 뺄셈(=NOW()-TODAY())은 시간을 돌려준다. 위에서 설명한 바와 같이 엑셀은 날짜를 실수값으로 처리한다. 정수부분은 날짜, 소수점이하는 시간을 가리킨다. 따라서 뺄셈연산의 결과 소수점만 남긴다. 즉 시간만 남는 것이다.

덧글

  • 우왕 2019/11/12 16:06 # 삭제 답글

    뜬금없는 질문인데 혹시 IE에서 켜져있는 엑셀의 worksheetfunction을 쓸수 있을까요? 자바스크립트든 vbscript든 호출하면 될듯도 싶어 보이는데...
  • 타임버드 2019/11/12 16:19 # 답글

    자바스크립트나 vbscript가 엑셀개체를 COM으로 가져올수만 있다면 가능한데 , 이래야 하는 상황은 흔치 않아보이네요. 워크시트함수 기능을 그냥 만드는 게 나을 것 같아요. 오버헤드 나 안정성, 속도 면에서...
댓글 입력 영역