[엑셀VBA] 나만의 함수만들기 (날짜계산함수)

[엑셀VBA] 나만의 함수만들기 (날짜계산함수)

1. 시작일과 종료일 사이의 날짜를 계산하는 함수

   : 일반적으로 엑셀에서 날짜를 계산하기 위해서는 날짜 형식만 계산이 가능하다.

     텍스트형식(예. 20251231)으로 입력했을 경우는 일일이 년,월,일을 잘라서 날짜형식으로 만들어줘야한다.

     일반적인 업무에서는 날짜형식보다 텍스트형식이 많다.

     이럴때 나만의 날짜계산함수를 만들어 사용하면 편하게 해결할 수 있다.

2. 결과물

   : 먼저 결과물을 봐야 감이온다. 결과물은 다음과 같다.

3. 나만의 함수 만드는 순서

   1) 탐색기에서 마우스 오른쪽 클릭한 후 엑셀파일을 새로만든다.

   2) 생성된 엑셀파일을 열고 개발도구>Visual Basic > Microsoft Excel개체 오른쪽클릭 > 삽입 > 모듈로 새로운 모듈을 생성한다.

 3) 함수작성

      : 생성된 모듈에 아래를 작성한다.

'datedif1 : FROM 당일포함, TO포함한 날짜계산하는 함수 

' 함수명은 본인이 원하는대로 하면 된다.

' 두개의 입력값 :  시작일과 종료일

' <--홑땅옴표는 VB에서 주석으로 프로그램돌아갈때 실제프로그램에 영향을 주지 않는 주석을 표현할 때 사용한다.

' 함수는 Function으로 시작하는 구문을 사용하고, 끝에 End Function으로 닫는다. 그 사이에 원하는 프로그램을 구현하면 된다.

 Function datedif1(date2 As Variant, date1 As Variant)  


    '시작일자 date1의 길이가 8자이면 텍스트형태(예.20181231)로 입력한것으로 간주하고

    ' "-"(대시)가 들어간 날짜형태로 바꿔준다.

    If Len(date1) = 8 Then

       date1 = Mid(date1, 1, 4) & "-" & Mid(date1, 5, 2) & "-" & Right(date1, 2)

    End If

    

     '종료일자 date2의 길이가 8자이면 텍스트형태(예.20181231)로 입력한것으로 간주하고

    ' "-"(대시)가 들어간 날짜형태로 바꿔준다.

    If Len(date2) = 8 Then

       date2 = Mid(date2, 1, 4) & "-" & Mid(date2, 5, 2) & "-" & Right(date2, 2)

    End If


    '엑셀VBA에 있는 함수인 datediff 를 사용하여 두 날짜를 계산한다.

    '기본적으로 VBA의 datediff 함수만 사용하면 당일은 미포함하여 계산된다.

    getDate = datediff("d", date1, date2) + 1

        

    ' 중요 : 함수명인 datedif1 에 위에서 계산된 getDate를 리턴해주면 됨. 

    ' "일"자를 붙여도 되고 안붙이고싶으면 빼면 됨.

    datedif1 = getDate & "일"

        

End Function


'datedif2 : FROM 당일 미포함(다음날부터), TO포함 날짜계산

'내용은 위와 같은데 아래 getDate식에서 datediff 기본 VBA함수만으로 계산함.

Function datedif2(date2 As Variant, date1 As Variant)


    If Len(date1) = 8 Then

       date1 = Mid(date1, 1, 4) & "-" & Mid(date1, 5, 2) & "-" & Right(date1, 2)

    End If

    

    If Len(date2) = 8 Then

       date2 = Mid(date2, 1, 4) & "-" & Mid(date2, 5, 2) & "-" & Right(date2, 2)

    End If

     

    getDate = datediff("d", date1, date2)

        

    datedif2 = Int(getDate)

        

End Function

실제 사용할때는 동일파일 內 어디든지 일반 내장함수(예. sum, if 등)와 동일한 방식으로 사용이 가능하다.

FROM

TO

계산결과

수식

비고

2018-10-25

2018-10-30

6일

=DATEDIF1(C4,B4)

날짜형식입력 예시

20181022

20181031

10일

=DATEDIF1(C5,B5)

텍스트형식 입력, 당일포함 예시1

20181023

20181031

9일

=DATEDIF1(C6,B6)

텍스트형식 입력, 당일포함 예시2

20181024

20181031

8일

=DATEDIF1(C7,B7)

텍스트형식 입력, 당일포함 예시3

20181025

20181031

6

=DATEDIF2(C8,B8)

텍스트형식 입력, 당일이후 예시1

20171228

20180108

11

=DATEDIF2(C9,B9)

텍스트형식 입력, 당일이후 예시2

만족하셨나요? ~~~~~~~

#엑셀VBA #VBA나만의 함수만들기 #VBA함수만들기 #날짜계산함수 #엑셀프로그래밍

Read more

엑셀 TREND 함수의 용도와 사용법(회귀분석 예측)

엑셀 TREND 함수의 용도와 사용법(회귀분석 예측)

엑셀 TREND 함수의 용도와 사용법: 회귀분석을 이용한 예측의 마스터 엑셀은 단순한 스프레드시트 프로그램을 넘어, 강력한 데이터 분석 도구로 자리매김했습니다. 그 중에서도 TREND 함수는 회귀 분석을 이용하여 미래 값을 예측하는 데 유용한 기능입니다. 이 글에서는 엑셀 TREND 함수의 용도와 사용법을 자세히 알아보고, 실제 예시를 통해 활용 방법을 익혀보겠습니다. 다른 사이트의 자료들을

제임스 웹 우주망원경과 새로운 발견

제임스 웹 우주망원경과 새로운 발견

제임스 웹 우주망원경: 우주를 새롭게 보는 눈과 놀라운 발견들 1. 제임스 웹 우주망원경(JWST)이란 무엇인가? 제임스 웹 우주망원경(JWST, James Webb Space Telescope)은 허블 우주망원경의 후계자로, 적외선 관측에 특화된 차세대 우주망원경입니다. 2021년 12월 25일에 발사되어 2022년 1월에 최종 목적지인 지구에서 약 150만 km 떨어진 제2 라그랑주점(L2)에

역대 대기업 회장들의 사업철학 및 명언

역대 대기업 회장들의 사업철학 및 명언

역대 대기업 회장들의 사업철학 및 명언: 시대를 초월한 성공 전략 분석 대한민국 경제 발전의 중심에는 늘 위대한 기업가 정신을 가진 대기업 회장들이 있었습니다. 그들의 사업철학과 명언들은 단순한 성공담을 넘어, 시대를 관통하는 경영 지혜와 리더십의 본보기로 남아 있습니다. 이 글에서는 역대 대기업 회장들의 주요 사업철학과 명언들을 심층적으로 분석하고, 그들의 성공 전략과

Image 3
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
Image 4
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.