사람마다 다른 방식으로 데이터를 입력합니다. 셀에 정보를 입력하면 Excel은 입력하는 정보 유형을 파악하려고합니다. 08242020과 같은 숫자를 입력하면 Excel은 숫자 값을 입력한다고 가정하고 그에 따라 처리합니다. 입력 한 숫자가 구분 기호없이 실제로 날짜이면 어떻게됩니까? Excel에서 입력 내용을 이해할 수 있습니까?

불행히도 Excel은 할 수 없습니다. 왜? 날짜가되어야한다는 표시를주지 않았기 때문입니다. (숫자 값이 아닌 구분 기호에 Excel 키가 있습니다.) 사용자 또는 데이터 입력 사용자가 입력 습관을 변경할 수 없어 구분 기호도 입력 할 수있는 경우 입력 된 정보를 실제 날짜 값으로 변환하기위한 일종의 해결 방법이 필요합니다. .

첫 번째 생각은 사용자 지정 형식을 사용하여 정보를 표시 할 수 있다는 것입니다. 다음 사용자 정의 형식을 고려하십시오.

##"/"##"/"####

이 형식은 숫자 08142020을 2020 년 8 월 14 일로 표시합니다. 유일한 문제는 숫자 표시 만 변경한다는 것입니다. 날짜를 실제 Excel 날짜로 사용하려는 경우 값을 Excel에서 날짜로 인식하는 값으로 변환하지 않았기 때문에 그렇게 할 수 없습니다.

입력 된 값의 형식이 매우 일관되고 숫자 값 대신 텍스트로 입력 된 경우 쉽게 날짜로 변환 할 수 있습니다. 매우 일관 적으로 입력은 항상 월에 두 자리, 일에 두 자리, 연도에 네 자리를 사용했음을 의미합니다. 또한 값이 포함 된 셀은 텍스트 형식이어야합니다. 이 경우 다음 단계를 따를 수 있습니다.

  1. 날짜 열을 선택하십시오.

  2. 날짜 바로 오른쪽 열에 아무것도 없는지 확인하십시오.

  3. 데이터 도구 그룹에있는 리본의 데이터 탭에서 텍스트를 열로 선택합니다. Excel에서 텍스트를 열로 변환 마법사가 표시됩니다. (그림 1 참조)

  4. 고정 너비 옵션을 선택하고 다음을 클릭합니다.

  5. 다음을 다시 클릭하십시오.

  6. 열 데이터 형식 영역에서 날짜를 선택합니다.

  7. 대상 상자에서 범위를 선택한 다음 워크 시트에서 1 단계에서 선택한 첫 번째 값 바로 오른쪽에있는 셀을 클릭합니다.

  8. 마침을 클릭하십시오.

모든 것이 잘되면 Excel에서 텍스트 값을 날짜로 구문 분석 했어야하며 원래 열을 삭제할 수 있습니다. 이것이 작동하지 않으면 원래 값이 텍스트로 형식화되지 않았거나 모든 날짜를 입력하는 데 8 자리 숫자가 사용되지 않았 음을 의미합니다.

또 다른 가능한 해결책은 수식을 사용하여 입력 된 값을 실제 날짜로 변환하는 것입니다. 다음은 그러한 공식 중 하나입니다.

=DATE(RIGHT(A1,4),LEFT(A1,IF(LEN(A1) = 8,2,1)),LEFT(RIGHT(A1,6),2))

이 수식은 입력 한 날짜 (구분자가없는 날짜)

A1 셀에 있습니다. 이 수식은 7 자리 또는 8 자리 날짜로 작동합니다.

사용자 지정 함수를 선호하는 경우 전달되는 데이터를 검사하고 날짜 / 시간 형식으로 변환 한 다음 결과를 반환하는 VBA에서 하나를 만들 수 있습니다. 다음 기능은 이와 관련하여 매우 다양합니다. 미국 및 유럽 날짜 형식 모두에서 작동합니다.

Function DateTime(dblDateTime As Double, _   Optional bAmerican As Boolean = True)



' Converts Date and time "number" without ' delimiters into an Excel serial number (which ' can then be formatted with the Excel ' date/time formats)



' If optional argument is TRUE (or missing), ' function assumes value is of form:

'    [m]mddyyyy.hhmm  (leading "0" not required)



' If optional argument is FALSE, function ' assumes value is of form:

'    [d]dmmyyyy.hhmm  (leading "0" not required)



Dim iYear As Integer     Dim iMonth As Integer     Dim iDay As Integer     Dim iHour As Integer     Dim iMin As Integer

iYear = Int((dblDateTime / 10000 - _       Int(dblDateTime / 10000)) * 10000)

iDay = Int((dblDateTime / 1000000 - _       Int(dblDateTime / 1000000)) * 100)

iMonth = Int((dblDateTime / 1000000))

iHour = Int((dblDateTime - Int(dblDateTime)) * 100)

iMin = Int((dblDateTime  100 - _       Int(dblDateTime  100)) * 100 + 0.5)



If bAmerican Then         DateTime = DateSerial(iYear, iMonth, iDay)

Else         DateTime = DateSerial(iYear, iDay, iMonth)

End If

DateTime = DateTime + (iHour + iMin / 60) / 24 End Function

이 매크로 함수는 일반적으로 구분 기호없이 날짜를 입력 할 때 발생하는 것처럼 전달되는 데이터가 숫자 값이라고 가정합니다. (팁 시작 부분에있는 이에 대한 논리를 다시 참조하십시오.)

알 수 있듯이 여러 해결 방법이 있지만 날짜를 입력 할 때 구분 기호를 입력하는 것만 큼 간단한 방법은 없습니다. 이를 수행하기 위해 자신이나 데이터 입력 사용자를 교육하는 것이 어려운 경우 입력 셀에 대한 일부 데이터 유효성 검사 규칙을 설정하는 것을 고려할 수 있습니다. 이러한 규칙은 특정 형식 (예 : 구분 기호가있는 날짜)을 사용하여 정보를 입력하고 있는지 확인하고 그렇지 않은 경우 사용자를 중지시킬 수 있습니다. (데이터 유효성 검사 규칙을 만드는 방법은 _ExcelTips._의 다른 문제에서 다루었습니다.)

_ 참고 : _

이 페이지 (또는 ExcelTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.

link : / excelribbon-ExcelTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요].

_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.

이 팁 (11400)은 Office 365의 Microsoft Excel 2007, 2010, 2013, 2016, 2019 및 Excel에 적용됩니다. 여기에서 Excel의 이전 메뉴 인터페이스에 대한이 팁 버전을 찾을 수 있습니다.

link : / excel-Entering_Dates_without_Separators [구분자없이 날짜 입력].