엑셀 날짜 자동 입력 함수 - egsel naljja jadong iblyeog hamsu

엑셀 오늘 날짜 자동 입력 목차 바로가기

  1. 엑셀 순환참조 오류 발생원인 및 해결방법 :: 엑셀위키
  2. 예제파일 다운로드
  3. 엑셀 날짜/시간을 단축키로 입력하는 방법
  4. 엑셀 오늘 날짜 자동 입력, 함수로 구현하기
  5. 오늘 날짜 자동입력 매크로 명령문
  6. 질문: 데이터가 삭제되더라도, 기존 날짜를 그대로 유지하고 싶습니다.

영상 강의

예제파일 다운로드

오빠두엑셀의 강의 예제파일은 여러분을 위해 자유롭게 제공하고 있습니다.


이번 강의에 사용된 기초 함수

엑셀 날짜/시간을 단축키로 입력하는 방법

엑셀 단축키를 활용하면 오늘 날짜 및 현재 시간을 매우 편리하게 입력할 수 있습니다. 아래 단축키를 사용하여 날짜와 시간을 입력하면 기존에 적용되어 있던 서식은 초기화됩니다.

  1. 오늘 날짜 입력하기

    단축키 : Ctrl + ;

    엑셀 날짜 자동 입력 함수 - egsel naljja jadong iblyeog hamsu
    단축키 Ctrl + ; 는 오늘 날짜를 입력합니다.
  2. 현재 시간 입력하기

    단축키 : Ctrl + Shift + ;

    엑셀 날짜 자동 입력 함수 - egsel naljja jadong iblyeog hamsu
    단축키 Ctrl + Shift + ; 는 현재 시간을 입력합니다.
  3. 오늘 날짜 + 현재 시간 입력

    단축키 : Ctrl + ; → Space →  Ctrl + Shift + ;

    엑셀 날짜 자동 입력 함수 - egsel naljja jadong iblyeog hamsu
    단축키 Ctrl + ; 와 Ctrl + Shift + ; 로 오늘날짜/시간을 동시에 입력할 수 있습니다.

엑셀 오늘 날짜 자동 입력, 함수로 구현하기

만약 오늘 날짜나 현재 시간을 매번 입력해줘야 할 경우에는 함수를 활용하여 작업시간을 대폭 단축하고 자동화 시킬 수 있습니다. 단, 오늘 날짜 자동입력을 함수로 구현하려면 해당 파일의 수식 반복계산을 허용해줘야 하는데요.

반복계산을 허용한다는 것은, 수식의 '순환 참조'를 허용한다는 뜻입니다. 따라서, 사용자가 의도치 않게 순환참조가 된 수식을 잘못 입력할 경우 파일 내 처리속도가 느려지는 영향을 미칠 수 있다는 점에 주의해야 합니다.

엑셀 순환 참조가 발생하는 원인 및 해결 방법에 대한 자세한 설명은 아래 관련포스트를 확인해주세요.

  1. 예제파일의 E5셀을 선택한 뒤, 아래 수식을 입력한 뒤, 아래로 자동채우기 합니다.

    =IF(D5<>"",IF(E5="",TODAY(),E5),"")

    엑셀 날짜 자동 입력 함수 - egsel naljja jadong iblyeog hamsu
    수식을 예제파일 E5셀에 입력한 뒤 아래로 자동채우기 합니다.
  2. 입력한 수식은 E5셀(자기 자신)이 참조된 수식이므로, D5셀에 완료여부를 "O"로 입력하면 '순환 참조로 인해 올바르게 계산하지 못할 수 있습니다' 라는 안내메시지가 출력됩니다.
    엑셀 날짜 자동 입력 함수 - egsel naljja jadong iblyeog hamsu
    완료여부에 값을 입력하면 순환참조 오류메시지가 출력됩니다.
  3. [파일] - [옵션] - [수식] 으로 이동한 뒤, '반복 계산 사용'을 활성화 한 후, [확인] 버튼을 클릭하여 설정을 변경합니다.
    엑셀 날짜 자동 입력 함수 - egsel naljja jadong iblyeog hamsu
    엑셀 수식 옵션에서 반복계산사용 하도록 설정을 변경합니다.
  4. 이후 완료여부에 "O" (또는 다른 값)을 입력하면 배송일에 오늘 날짜가 자동으로 입력됩니다.
    엑셀 날짜 자동 입력 함수 - egsel naljja jadong iblyeog hamsu
    완료여부에 값을 입력하면 오늘 날짜가 자동으로 입력됩니다.
  5. 만약 오늘 날짜가 아닌 현재시간을 입력하려면 수식의 TODAY 함수를 NOW 함수로 변경합니다.

    =IF(D5<>"",IF(E5="",NOW(),E5),"")

오늘 날짜 자동 입력 VBA 매크로 명령문

함수를 사용하여 오늘 날짜 자동입력을 자동화 하게되면, 해당 파일이 실행되어 있는 동안 '반복 계산'이 허용되므로 순환참조 오류가 발생한 셀로 인하여 처리 속도가 느려지는 문제가 발생할 수 있습니다.

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

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

  1. [개발도구] - [Visual Basic]을 클릭하거나, 단축키 Alt + F11 로 매크로 편집기로 이동합니다. 만약 [개발도구]가 안보이실 경우, 아래 개발도구 활성화 방법 관련 포스트를 참고하세요.
  2. VBA 편집기 좌측에서, 오늘 날짜 자동 입력을 적용할 시트를 찾아 더블클릭합니다. 시트를 더블클릭하면 해당 시트의 모듈이 활성화됩니다.
    엑셀 날짜 자동 입력 함수 - egsel naljja jadong iblyeog hamsu
    시트를 더블클릭하면 시트 모듈이 활성화됩니다.
  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 naljja jadong iblyeog hamsu
    명령문 앞에 어퍼스트로피(')를 입력하면 해당 부분이 주석처리 됩니다.
  5. 시트로 돌아온 뒤, 완료여부에 값을 입력하면 배송일과 배송시간이 자동으로 입력됩니다.
    엑셀 날짜 자동 입력 함수 - egsel naljja jadong iblyeog hamsu
    완료여부에 값을 입력하면 오늘 날짜 / 시간이 자동 입력됩니다.

자주 묻는 질문

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

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

만약 완료를 입력한 뒤, 완료를 삭제하더라도 기존 날짜를 유지해야 한다면 아래 공식을 사용하여 문제를 해결할 수 있습니다. (질문주신 가비24님께 감사드립니다.)

=IF(D5<>"",IF(E5="",TODAY(),E5),IF(E5>0,E5,""))
'완료여부가 빈칸이 아니고, 날짜가 입력되어 있을 경우에는 기존 날짜를 유지합니다.