엑셀 오늘 날짜 자동 입력, IF 함수로 쉽게 해결하기

IF 함수와 반복계산 설정을 활용하여 오늘 날짜와 시간을 자동으로 입력하는 방법에 대해 알아봅니다.

홈페이지 » 엑셀 오늘 날짜 자동 입력, IF 함수로 쉽게 해결하기

엑셀 오늘 날짜 자동 입력, IF 함수로 쉽게 해결하는 방법

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

예제파일 다운로드

이번 강의에 사용된 기초 함수
입력한 조건의 참/거짓을 판단하여 값을 반환합니다.
사용자 컴퓨터의 오늘 날짜를 출력합니다.

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

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

  1. 오늘 날짜 입력하기
    단축키 : Ctrl + ;

    엑셀 오늘 날짜 입력
    단축키 Ctrl + ; 는 오늘 날짜를 입력합니다.
  2. 현재 시간 입력하기
    단축키 : Ctrl + Shift + ;

    엑셀 현재 시간 입력
    단축키 Ctrl + Shift + ; 는 현재 시간을 입력합니다.
  3. 오늘 날짜 + 현재 시간 입력
    단축키 : Ctrl + ;Space →  Ctrl + Shift + ;

    엑셀 오늘 날짜 현재 시간 입력
    단축키 Ctrl + ; 와 Ctrl + Shift + ; 로 오늘날짜/시간을 동시에 입력할 수 있습니다.

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

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

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

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

  1. 예제파일의 E5셀을 선택한 뒤, 아래 수식을 입력한 뒤, 아래로 자동채우기 합니다.
    =IF(D5<>"",IF(E5="",TODAY(),E5),"")

    엑셀 오늘 날짜 자동 입력 함수 입력
    수식을 예제파일 E5셀에 입력한 뒤 아래로 자동채우기 합니다.
  2. 입력한 수식은 E5셀(자기 자신)이 참조된 수식이므로, D5셀에 완료여부를 "O"로 입력하면 '순환 참조로 인해 올바르게 계산하지 못할 수 있습니다' 라는 안내메시지가 출력됩니다.

    순환 참조 오류 발생
    완료여부에 값을 입력하면 순환참조 오류메시지가 출력됩니다.
  3. [파일] - [옵션] - [수식] 으로 이동한 뒤, '반복 계산 사용'을 활성화 한 후, [확인] 버튼을 클릭하여 설정을 변경합니다.

    수식 반복계산 사용 허가
    엑셀 수식 옵션에서 반복계산사용 하도록 설정을 변경합니다.
  4. 이후 완료여부에 "O" (또는 다른 값)을 입력하면 배송일에 오늘 날짜가 자동으로 입력됩니다.

    엑셀 오늘 날짜 자동 입력 gif
    완료여부에 값을 입력하면 오늘 날짜가 자동으로 입력됩니다.
  5. 만약 오늘 날짜가 아닌 현재시간을 입력하려면 수식의 TODAY 함수를 NOW 함수로 변경합니다.
    =IF(D5<>"",IF(E5="",NOW(),E5),"")

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

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

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

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

  1. [개발도구] - [Visual Basic]을 클릭하거나, 단축키 Alt + F11 로 매크로 편집기로 이동합니다. 만약 [개발도구]가 안보이실 경우, 아래 개발도구 활성화 방법 관련 포스트를 참고하세요.
  2. VBA 편집기 좌측에서, 오늘 날짜 자동 입력을 적용할 시트를 찾아 더블클릭합니다. 시트를 더블클릭하면 해당 시트의 모듈이 활성화됩니다.

    엑셀 매크로 현재 시트 모듈
    시트를 더블클릭하면 시트 모듈이 활성화됩니다.
  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개의 범위를 필요에 따라 적절히 수정합니다. 작성된 코드 맨 앞에 어퍼스트로피(')를 추가하면 해당 부분이 주석처리 됩니다.

    엑셀 VBA 주석 처리
    명령문 앞에 어퍼스트로피(')를 입력하면 해당 부분이 주석처리 됩니다.
  5. 시트로 돌아온 뒤, 완료여부에 값을 입력하면 배송일과 배송시간이 자동으로 입력됩니다.

    엑셀 오늘 날짜 자동 입력 매크로 gif
    완료여부에 값을 입력하면 오늘 날짜 / 시간이 자동 입력됩니다.
5 1 vote
게시글평점
현재 페이지 댓글알림 신청
알림 설정
guest
11 Comments
Inline Feedbacks
View all comments
0ugi
0ugi
2020년 10월 8일 4:24 오후
게시글평점 :
     

반복계산. 잘 배웠습니다~!

사랑의신
사랑의신
2020년 10월 9일 10:17 오후
게시글평점 :
     

데이터가 입력되는 곳을 감지할 곳이 한 시트에 두 군데 이면 어디를 어떻게 수정해야 하나요? VBA에 익숙치 않아서 첫번째것 보고 수정할 곳을 대충 수정했는데 되었다 안되었다 하더니 이젠 아예 안되네요. ㅠ.ㅠ… 더보기 »

사랑의신
사랑의신
2020년 10월 10일 4:43 오후

첫번째 데이터가 입력되는 부분이 "C:C" 이고 이 값의 시간이 기록되는 곳은 "AA:AA", 두번째 데이터가 입력되는 부분이 "M:M"이고 이 값의 시간이 입력되는 곳은 "AB:AB"입니다. Set Rng = Me.Range("c:c", "m:m") Set TimeRng… 더보기 »

사랑의신
사랑의신
2020년 10월 10일 4:48 오후
Reply to  사랑의신

Private Sub Worksheet_Change(ByVal Target As Range)   Dim Rng As Range: Dim TimeRng As Range: Dim TimeRng1 As Range: Dim DateRng As Range: Dim dtRng As Range Dim tC As… 더보기 »

사랑의신
사랑의신
2020년 10월 12일 8:04 오후
Reply to  사랑의신

이렇게 하니까 c 셀의 값을 삭제하니까 aa셀 값뿐만 아니라 ab셀의 값도 같이 삭제가 되네요. 반대로 m셀의 값을 삭제해도 aa값이 삭제가 되네요. 그래서 이렇게 해 보았습니다. 맞는지는 잘 모르겠지만 이것저것 테스트… 더보기 »

사랑의신
사랑의신
2020년 10월 14일 3:35 오전

잘 몰라서 배워가는 중입니다. 일일이 답변 해 주셔서 고맙습니다 ^^

미성
2020년 10월 14일 11:37 오전

한가지 여쭤봐두 될가요?
09.01(화) 04:46
이렇게 된 것을 날자와 시간만 어떻게 따로 분리할 수 있을가요?

yim****
yim****
2020년 10월 12일 6:59 오전
게시글평점 :
     

감사합니다

11
0
여러분의 생각을 댓글로 남겨주세요.x