Bob은이자와 복리 일 수를 계산하기 위해 특정 날짜의 연도가 윤년인지 확인하는 쉬운 방법이 있는지 궁금합니다.

우리 모두는 1 년을 4로 나눌 수 있다면 윤년이라는 것을 알고 있습니다. 글쎄, 사실 그건 틀렸어. 따라서 윤년인지 확인하기 위해 다음과 같이 연도 숫자를 4로 간단히 나눌 수는 없습니다.

=IF(MOD(YEAR(A1), 4) = 0, "Leap", "Regular")

이 수식은 금세기 (2000 년에서 2099 년) 내의 모든 날짜에 대해 작동하지만 해당 범위를 벗어나는 것은 안정적으로 작동하지 않습니다. 그 이유는 “4로 나눌 수 있음”이 윤년에 대한 유일한 테스트가 아니기 때문입니다. 연도가 100 년 (100으로 나눌 수 있음)이면 400으로 나눌 수있는 경우에만 윤년입니다. 따라서 2000 년은 윤년이지만 2100 년은 그렇지 않습니다.

윤년 내에 날짜가 발생하는지 확인하는 방탄 방법을 원한다면 공식이 더 복잡해야합니다.

=IF(OR(AND(MOD(YEAR(A1),4)=0,MOD(YEAR(A1),100)>0), MOD(YEAR(A1),400)=0),"Leap","Regular")

이것은 단일 공식입니다. 여기에 두 줄로 표시되어 화면에 완전히 맞습니다. 이 수식은 날짜가 윤년에 속하는지 확인하는 데 필요한 세 가지 조건을 모두 테스트합니다.

물론, 다른 접근 방식은 주어진 연도에 2 월 29 일이 있는지 간단히 알아내는 것입니다. 이 작업을 수행하는 데 사용할 수있는 수식은 여러 가지가 있습니다.

=IF(DAY(EOMONTH("1Jan"&YEAR(A1),1))=29, "Leap", "Regular")

=IF(MONTH(DATE(YEAR(A1),2,29))=2, "Leap", "Regular")

=IF(DAY(DATE(YEAR(A1),2,29))=29, "Leap", "Regular")

=IF(DAY(DATE(YEAR(A1),3,0))=29, "Leap", "Regular")

지금까지 설명한 방법은 한 가지 예외를 제외하고 Excel에서 지원하는 모든 날짜에 대해 잘 작동합니다. A1 셀의 날짜가 1900 년이면 DATE 함수 (위에 표시된 마지막 세 개)를 사용하는 항목은 작동하지 않습니다. 그렇지 않은 경우에도 항상 1900이 윤년임을 반환합니다. (흥미롭게도 EOMONTH 함수는 이와 관련하여 DATE 함수와 동일한 문제를 나타내지 않습니다.)

Excel에서 지원하는 날짜 (1900 년 1 월 1 일 이전) 이전의 날짜로 작업해야하는 경우 Excel 날짜에서 연도를 가져 오는 대신 직접 연도를 작업해야합니다. 셀 A1에 1 년만 포함 된 경우 세 가지 테스트 수식의 변형은 잘 작동합니다.

=IF(OR(AND(MOD(A1,4)=0,MOD(A1,100)>0),MOD(A1,400)=0),"Leap","Regular")

날짜를 테스트하는 사용자 정의 함수를 만들 수도 있습니다.

이 방법은 셀에 날짜 값 또는 날짜의 텍스트 값이 포함되어 있는지 여부에 관계없이 잘 작동합니다. (1896 년 1 월 1 일과 같이 지원되지 않는 날짜 값을 셀에 입력하면 Excel은 항목을 날짜로 구문 분석하지 않고 텍스트 값으로 처리합니다.) 다음 예제는에서 지원하는 모든 날짜에서 올바르게 작동합니다. 100 년에서 9999 년까지의 범위에있는 VBA :

Function IsLeap1(c As Range) As Boolean     YearNo = Year(c.Value)

If YearNo Mod 100 = 0 Then        IsLeap1 = ((YearNo \ 100) Mod 4 = 0)

Else        IsLeap1 = (YearNo Mod 4 = 0)

End If End Function

워크 시트에서 함수를 사용하려면 다음과 같은 수식을 입력합니다.

=IF(IsLeap1(A1),"Leap", "Regular")

다음 한 줄 매크로는 해당 연도에 2 월 29 일이 있는지 알아내는 트릭을 사용하여 작동합니다.

Function IsLeap2(c As Range)

IsLeap2 = IsDate("2/29/" & Year(c.Value))

End Function

매크로는 워크 시트에서 이전 매크로와 동일한 방식으로 참조됩니다.

=IF(IsLeap2(A1),"Leap", "Regular")

날짜가 윤년인지 확인하기 위해 더 창의적인 방법이 필요한 경우 다음 기사를 확인하십시오.

http://chandoo.org/wp/2012/02/29/check-leap-year-using-excel/

_ 참고 : _

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

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

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

이 팁 (9978)은 Office 365의 Microsoft Excel 2007, 2010, 2013, 2016, 2019 및 Excel에 적용됩니다.