엑셀 오늘 날짜 표시 - egsel oneul naljja pyosi

안녕하세요 엑셀청년입니다. 오늘은 엑셀 시간을 구하는 4가지 방법을 알려드리려고 합니다. 현재는 기본 필수팁을 알려드리고 있는터라 간단하지만 기본 필수팁을 잘 잡고 가셔야지 나중에 응용했을 때 더 다양하게 응용할 수 있으니깐은 지루하더라도 잘 배우고 따라오시면 좋을 것 같습니다.


<엑셀 떨어진 셀 선택 후 일괄 입력하는 방법><엑셀 셀 병합하지 않고 가운데 정렬하는 방법>


<Youtube 인터넷 강의>


<네이버TV 인터넷 강의>


예시설명(택배배송 현황)


엑셀 오늘 날짜 표시 - egsel oneul naljja pyosi


택배배송 현황이라는 예시를 가지고 책 접수일, 접수시간, 배송완료일을 가지고 배수 소요일 계산하는 방법에 대해서 차례차례 설명을 드리도록 하겠습니다. 요새는 뭐 자동화 된 곳이 워낙 많겠지만 혹시나 작게나마 학회, 모임 그룹 같은데서 책 대여를 관리하는 곳이 있다면은 좋은 예시로 활용할 수 있겠죠? 나중에 시간이 된다면은 책 대여현황 예시를 만들어서 책 미반납한 7일 이상을 지난 사람 자동으로 빨강색 음영 표시하기 이런 자료를 한번 만들어보면 좋을 것 같네요!


오늘 날짜 구하는 함수(TODAY, Ctrl + ;)


엑셀 오늘 날짜 표시 - egsel oneul naljja pyosi


오늘날짜 구하는 함수는 2가지가 있습니다. 하지만 첫번째로 설명드릴 함수는 =today()라는 함수인데 이 함수는 지속적으로 날짜가 업데이트 되는 겁니다. 무슨 기준으로? 해당 컴퓨터 PC시간 기준으로 입니다. 만약에 제 날짜가 현재 2018-11-12이다. 그러면 2018-11-12로 계산이 됩니다. 하지만 만약에 제가 임의수정으로 2020-10-12로 정했다. 그렇게 된다면 임의수정한 날짜에 맞게끔 설정이 됩니다.


아무래도 컴퓨터 시간은 지속적으로 계속 업데이트가 되고 변경이 되기 때문에 오늘이 2018-11-12이여도 내일이면 2018-11-13로 변하고 마찬가지로 엑셀에 =today()라고 지정한 셀 값도 2018-11-13로 변경이 되겠죠? 그렇다면 Ctrl + ;(세미콜론)으로 오늘 날짜를 지정한건 어떤걸까요?


엑셀 오늘 날짜 표시 - egsel oneul naljja pyosi


위에 빨강색 네모로 강조한 접수일 하단에 있는 2018-11-12은 Ctrl + ;(세미콜론)으로 설정한 오늘 날짜입니다. 위에서 이야기를 드렸듯이 이 날짜는 컴퓨터가 시간이 변경된다고해서 업데이트되는게 아니라 현재 2018-11-12로 설정됐으면 내일이 지나도 고정값으로 머무르는 것입니다. 그래서 접수일 같은 경우에는 그날 정확히 입력이 되야하는 부분이기 때문에 업데이트가 되는 =today()함수가 아닌 Ctrl + ; 함수로 지정을 하는게 올바르겠죠?



지금시간 구하는 방법(Ctrl + Shift + ;)


엑셀 오늘 날짜 표시 - egsel oneul naljja pyosi


현재 시간을 접수하는 방법은 위에 부재로 쓴것과 같이 Ctrl + Shift + ;(세미콜론)과 같이 오늘 날짜를 구하는 함수에 Shift만 더 붙이면 됩니다. 이건 뭐 특별하게 설명드릴부분은 없구요 정확한 시간을 입력해야 하는 분들에게 필요한 함수가 아닌가 생각을하고 있습니다. 하지만 전 실무에서 자주 사용하지 않았던 것 같습니다.



시작일, 종료일을 정하여 그 사이에 시간을 계산하는 함수(DATEDIF)


엑셀 오늘 날짜 표시 - egsel oneul naljja pyosi


 우선 DATEDIF함수는 직접 입력을 해야 하는 함수입니다. 함수 입력방법은 아래와 같습니다.


=DATEDIF(시작일,종료일,"d")


여기서 더 설명을 드리자면 마지막에 있는"d"부분은 day에 약자로써 일수를 계산할 때 사용합니다. 만약에 몇년이 지났는지, 또는 몇개월이 남았는지와 같은 걸 결과값으로 나타내기 위해서는 월은 "M", Month에 약자 ↔ 년도는 "Y", Year에 약자로 설정을 하시면 됩니다. 위와 같이 설정을 한다면은 아래와 같이 시작일, 종료일 차이에 일수가 계산이 됩니다. 엑셀 오늘날짜, 현재시간 및 DATEDIF 함수 구하는 방법 그렇게 어렵지 않죠? 

하지만 이 문제는, 이후에 순환 참조가 일어난 수식이 있는 파일을 다시 실행할 시에 엑셀이 자동으로 이를 감지하여 순환 참조 오류를 안내해주므로 쉽게 해결할 수 있는 문제이기도 합니다.

만약 이러한 문제를 근본적으로 해결하고 좀 더 확실하게 자동화를 구현하고자 한다면 아래 VBA 매크로를 사용할 수 있습니다.

  1. [개발도구] - [Visual Basic]을 클릭하거나, 단축키 Alt + F11 로 매크로 편집기로 이동합니다. 만약 [개발도구]가 안보이실 경우, 아래 개발도구 활성화 방법 관련 포스트를 참고하세요.

    엑셀 개발도구 활성화 방법

  2. VBA 편집기 좌측에서, 오늘 날짜 자동 입력을 적용할 시트를 찾아 더블클릭합니다. 시트를 더블클릭하면 해당 시트의 모듈이 활성화됩니다.
    엑셀 오늘 날짜 표시 - egsel oneul naljja pyosi
    시트를 더블클릭하면 시트 모듈이 활성화됩니다.
  3. 아래 명령문을 복사한 뒤, 시트 모듈 안에 붙여넣기 합니다.

    Private Sub Worksheet_Change(ByVal Target As Range)
     
    Dim Rng As Range: Dim TimeRng As Range: Dim DateRng As Range: Dim dtRng As Range
    Dim tC As Long: Dim dC As Long: Dim R As Long
     
    On Error Resume Next
     
    Application.EnableEvents = False
     
    Set Rng = Me.Range("D:D") '<-- 오늘 날짜/시간이 입력되도록 감지할 범위를 입력합니다.
    Set DateRng = Me.Range("E:E") '<-- 오늘 날짜가 입력될 범위입니다. (또는 날짜가 입력될 범위가 없을 경우 문장을 삭제)
    Set TimeRng = Me.Range("F:F") '<-- 오늘 시간이 입력될 범위입니다. (또는 시간이 입력될 범위가 없을 경우 문장을 삭제)
    Set dtRng = Me.Range("G:G") '<-- 오늘 시간/날짜가 모두 입력될 범위입니다. (또는 범위가 없을 경우 문장을 삭제)
     
    If Not Intersect(Target, Rng) Is Nothing Then
    If Target.Text <> "" Then
    R = Target.Row
    If Not IsEmpty(DateRng) Then dC = DateRng.Column: Me.Cells(R, dC).Value = Date
    If Not IsEmpty(TimeRng) Then tC = TimeRng.Column: Me.Cells(R, tC).Value = Time
    If Not IsEmpty(dtRng) Then tC = dtRng.Column: Me.Cells(R, tC).Value = Now
    Else
    R = Target.Row
    If Not IsEmpty(DateRng) Then dC = DateRng.Column: Me.Cells(R, dC).Value = ""
    If Not IsEmpty(TimeRng) Then tC = TimeRng.Column: Me.Cells(R, tC).Value = ""
    If Not IsEmpty(dtRng) Then tC = dtRng.Column: Me.Cells(R, tC).Value = ""
    End If
    End If
     
    Application.EnableEvents = True
     
    End Sub

  4. 명령문에 미리 작성된 4개의 범위를 필요에 따라 적절히 수정합니다. 작성된 코드 맨 앞에 어퍼스트로피(')를 추가하면 해당 부분이 주석처리 됩니다.
    엑셀 오늘 날짜 표시 - egsel oneul naljja pyosi
    명령문 앞에 어퍼스트로피(')를 입력하면 해당 부분이 주석처리 됩니다.
  5. 시트로 돌아온 뒤, 완료여부에 값을 입력하면 배송일과 배송시간이 자동으로 입력됩니다.
    엑셀 오늘 날짜 표시 - egsel oneul naljja pyosi
    완료여부에 값을 입력하면 오늘 날짜 / 시간이 자동 입력됩니다.

자주 묻는 질문

질문1. 데이터가 삭제 되더라도, 기존 날짜를 그대로 유지하고 싶습니다.

기존 공식은 완료가 입력되어있을 경우 (예: 값이 처음 입력되거나, 완료 여부가 다른 값으로 바뀔 때)에만 날짜가 유지됩니다. 그리고 완료 여부를 지우면 날짜가 빈칸으로 초기화 되는데요.