2020. 8. 18. 18:18ㆍ업무 스킬/Excel VBA
안녕하세요 윤대리입니다.
오늘은 Excel에서 기본으로 사용하는 [Sub] 프로시저 외에[Function] 프로시저에 대해 알아보겠습니다.
Excel내에는 사용자들이 편리하게 사용할 수 있는 기본 함수가 내장되어 있습니다.
[Sum], [Average]. [Vlookup]등 여러가지 유용한 함수들이 있지요.
유용한 함수들이 정말 많지만, 가끔을 정말 필요한데 없는 함수들이 있으면 조금 아쉬움이 듭니다.
이때 사용할 수 있는 VBA 프로시저가 바로 [Function]프로시저 입니다.
왼쪽이 기본 VBA에서 기본[Sub] 프로시저이고 오른쪽이[Function] 프로시저의 기본 Format입니다.
그리고 [Function] 프로시저의 모습은 아래와 같이 정의할 수 있습니다. 마지막 [Optional] 구문은
상황에 따라 사용 안 하셔도 됩니다.
[Function] 프로시저에서 가장 중요한 점은 제가 생각하기에 함 수명입니다. 기억하기 쉽고 직관적으로 알 수 있는 함수명을 쓴다면 더 좋겠지요. 사람마다 다르겠지만, 저는 개인적으로 함수명을 "get_"으로 시작하는 것을 선호합니다.
위에 캡처는 기본[Function] 함수의 기본 예제입니다.
설명하자면, 미국 식당에서 [Menu]와 [Table] 수와 [Tip]을 이용하여 쉽게 [총 가격]을 계산할 수 있는
[get_Total_Cost]라는 함수를 만들어서 쉽게 계산하고자 한 겁니다.
수식은 매우 간단하지요 세 개의 변수를 모두 곱하면 됩니다. 다만 [Tip]의 자유롭게 줄 수 있도록 되어 있으니
[Optional] 구문을 통해 (사용자가 변수를 지정해주지 않았을 경우) 기본 15%로 설정을 해둔 것이지요.
[Optional] 구문은 추후 다른 포스팅에서 다시 설명할 예정이니 간단하게 말씀드리면, [Optional 변수명 as Variant]
로 정의해주시고 [If IsMssing(변수명) = True] 즉, Optional 변수를 사용자가 지정해주지 않았을 경우로 설정해주면 됩니다.
[Function]을 사용하실 때 마지막에 [함수명 = 마지막 계산]만 주의해서 작성해주시면 [Function] 코드의 작성은 끝 납
니다.
코드를 작성 완료하고 Excel에서 '=get'까지만 쳐주면 만들어 준 [get_Total_Cost]라는 함수가 뜨는 것을 볼 수 있지요.
자, 만들어준 [get_Total_Cost]라는 함수를 사용해봅시다. 100달러짜리의 메뉴를 2 테이블에서 시켰고 Tip은 기본 Tip으로 지정되었습니다. 결과 값은 230으로 나옵니다.
기본 예제라 매우 간단한 함수로 작성하였지만 저는 회사에서 실제로 Log함수에서 특정 x값의 기울기나 절편 값을 구하는 함수를 만들어서 유용하게 사용하고 있답니다. 독자 여러분들도 자신만의 함수를 만들어서 업무에 도움이 되는 코드 작성하길 바라겠습니다 ^_^ 읽어주셔서 감사합니다.
'업무 스킬 > Excel VBA' 카테고리의 다른 글
[엑셀 VBA] Sheet 수정 못하게 보호하기(보안) (0) | 2021.01.18 |
---|---|
[엑셀 VBA] AdvancedFilter사용하여 중복 제거 (5) | 2021.01.18 |
[Excel VBA] Userform Listbox를 통한 Sheet 검색 및 선택 (0) | 2020.08.03 |
[엑셀 VBA] Onkey(단축키 설정)을 사용하여 UserForm 열고 닫기 (0) | 2020.07.25 |
[엑셀 VBA] User Form(사용자 정의 폼)의 List Box 활용하기 (0) | 2020.07.17 |