Luis는 연도, 월, 일이 각각 단일 문자로 대체되도록 날짜가 코딩 된 정보를받습니다. 각 필드에 대해 1에서 9까지의 숫자가 사용되며 그 뒤에는 a = 10, b = 11, …​ v = 31이 있습니다. 예를 들어, 날짜 코드 ‘bc2’는 b = 11 (2011 년), c = 12 (월) 및 일 = 2를 의미합니다. Luis는 코딩 된 날짜를 dd / mm / yyyy와 같은 일반적인 날짜 형식으로 대체하는 함수를 고안 할 수 있는지 궁금합니다.

실제로이 문제를 해결하는 방법에는 여러 가지가 있습니다.

한 가지 방법은 워크 시트 내에 “동등 테이블”을 설정하는 것입니다. 여기서 왼쪽 열에는 코드 문자가 포함되고 오른쪽 열은 해당 문자와 ​​관련된 숫자 값을 나타냅니다. 그런 다음 VLOOKUP을 사용하여 값을 찾고 결과를 날짜로 변환하는 수식을 만들 수 있습니다.

예를 들어 데이터 오른쪽에있는 사용하지 않는 셀에 등가 테이블을 만듭니다. 제 경우에는 P 열과 Q 열에 테이블을 넣었습니다. P 열에는 코드 문자 1 ~ 9 및 a ~ z를 입력합니다. (숫자가 아닌 텍스트로 저장되도록 숫자 1부터 9까지의 숫자 앞에 아포스트로피를 붙여야합니다.) QI 열에 숫자 1부터 35까지 입력합니다.이 전체 범위 (P1 : Q35) 그런 다음 DateTable이라는 이름을 지정했습니다. .

다음은 A1 셀에 저장된 코드화 된 날짜에 대해 디코딩 된 날짜를 반환하는 수식입니다.

=DATE(2000+VLOOKUP(LEFT(A1,1),DateTable,2,0), VLOOKUP(MID(A1,2,1),DateTable,2,0),VLOOKUP(RIGHT(A1,1), DateTable,2,0))

이것은 단일 연속 공식이라는 것을 기억하십시오. 또 다른 기술은 등가 테이블을 모두 건너 뛰고 대신 공식을 사용하여 변환을 수행하는 것입니다. 다음은 A1 셀의 날짜를 디코딩하는 예입니다.

=DATE(2000+FIND(LEFT(A1,1),"123456789abcdefghijklmnopqrstuvwxyz"), FIND(MID(A1,2,1),"123456789abc"),FIND(MID(A1,3,1), "123456789abcdefghijklmnopqrstuv"))

이 수식은 FIND 함수를 사용하여 코드 문자에서 값으로 변환 한 다음 이러한 값을 DATE 함수에서 사용하여 원하는 날짜를 반환합니다. 다른 가능한 공식은 대신 문자 코드 값을 사용하여 날짜를 만듭니다.

=DATE(2000+CODE(MID(A1,1,1))-87+(CODE(MID(A1,1,1))<58)39,CODE(MID(A1,2,1))-87+(CODE(MID(A1,2,1))<58)39,CODE(MID(A1,3,1))-87+(CODE(MID(A1,3,1))<58)*39)

마지막으로 디코딩 된 날짜를 반환하는 사용자 정의 함수를 만들 수 있습니다. 다음은 간단한 예입니다. 각 문자를보고이를 숫자 값으로 변환 한 다음 DateSerial 함수와 함께 사용하여 Excel 날짜 일련 번호를 만듭니다.

Function DecodeDate(datecode As String)

Const X = "123456789abcdefghijklmnopqrstuvwxyz"

Dim D As Integer     Dim M As Integer     Dim Y As Integer

Application.Volatile     D = InStr(X, Right(datecode, 1))

M = InStr(X, Mid(datecode, 2, 1))

Y = 2000 + InStr(X, Left(datecode, 1))

DecodeDate = DateSerial(Y, M, D)

End Function

또한 사용하는 접근 방식에 관계없이 날짜 코드에 내재 된 결함이 있음을 지적해야합니다. 연도는 코드 값 1 ~ 9 및 a ~ z를 사용합니다. 이는 날짜 코드가 35 개의 가능한 값 중 하나 일 수 있음을 의미합니다. 2000 년 (코드를 설명하는 기준 연도)에 추가되면 코딩 할 수있는 최대 연도 값은 2035 년입니다. 해당 연도 이후의 모든 날짜는이 코딩에서 작동하지 않습니다.

_ 참고 : _

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

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

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

이 팁 (12422)은 Microsoft Excel 97, 2000, 2002 및 2003에 적용됩니다.

Excel (Excel 2007 이상)의 리본 인터페이스에 대한이 팁의 버전은 여기에서 찾을 수 있습니다.

link : / excelribbon-Deciphering_a_Coded_Date [코드화 된 날짜 해독].