설찬범의 파라다이스
글쓰기와 닥터후, 엑셀, 통계학, 무료프로그램 배우기를 좋아하는 청년백수의 블로그
엑셀 할머니 22 - 엑셀 함수 만들기
반응형





민호야 준비 됐니?






무슨 준비요?






지난 시간에 '차라리 함수가 따로 있었으면 좋겠다'고 

말했잖니.





그래서요?

설마 마이크로소프트에 직접 가신 건..





으이구.

민호야. 잘 들으렴.

엑셀에는 함수를 만들 수 있는 기능이 있단다.





정말요?

빨리 알려주세요.







일단 함수를 만들고 싶다면

개발 도구 리본에 들어가렴.



 * 개발 도구 리본이 없다면

파일 - 옵션 - 리본 사용자 지정에 들어가서 개발 도구를 체크합시다.








개발 도구 맨 왼쪽에 있는

Visual Basic을 누르렴.








뭔가 이상한 창이 나타났어요.




Visual Bacis for Applications

흔히 VBA라고 부르는 기능이다.

VBA를 잘 쓰면 엑셀 고수가 될 수 있지.

여기서 사용자 정의 함수를 만들어보자꾸나




프로젝트니 속성이니...

머리가 아파요.









지금은 일단

삽입 - 모듈을 눌러라.







메모장 비슷한 창이 나타났어요.





여기에 글을 쓰면 함수를 만들 수 있다.

엑셀에 내리는 일종의 명령인 셈이지.

프로그래밍을 배워 본 적 있니?





아뇨. 한 번도 없는데요...






좋아. 프로그래밍을 알면 VBA도 쉽게 하지만

몰라도 할 수는 있단다.

그럼 차근차근 배워 보자.








1단계 : 함수 이름





일단 처음이니까, today 함수처럼

아무 인수도 필요 없는 함수를 만들어보자.




예를 들어서 무조건

숫자 5를 반환하는 함수를 만들어보자.

함수 이름은 뭘로 하고 싶니?





숫자 5를 반환하니까

그냥 five로 하죠?







좋다. 그럼 이렇게 쓰렴.





Function five()

five = 5

End function





무슨 뜻이죠?






일단 Function과 End function은

'이제부터 함수를 입력하겠습니다 ~ 이제 함수 입력이 끝났습니다.'

라는 뜻이다.




five()는 '이 함수 이름은 five입니다.

괄호 안은 필요 없어서 비워놨습니다.'란 뜻이고.






five = 5는 '이 함수 결과는 5입니다'라는 뜻이다.






만약 함수 이름이 onlyfive였으면, onlyfive=5라고 써야 하나요?





그렇지.

자, 이제 파일 - 저장을 누르렴.






저장할 때는 파일 형식을 '엑셀 매크로 사용 통합 문서'로 정해야 한단다.

그렇지 않으면 파일을 켰다 끄면 새로 만든 함수가 날아간단다.


* 이미 엑셀 파일이 매크로 사용 통합 문서가 아니라면

다른 이름으로 저장하면서 파일 형식을 바꿉시다. 









VBA를 끄고 함수를 시험해 보려무나.








아무 칸에나 =five()라고 쓰니까..

정말 5가 나왔네요!



 * 반환결과는 텍스트도 가능합니다.

물론 큰따옴표("")를 붙여야겠죠.




2단계 : 함수와 인수.





그럼 이제 숫자를 계산하는 함수를 만들어보자.

민호는 어떤 함수를 만들고 싶니?





어...

두 수를 더한 다음 제곱하는 함수는 어떨까요?






좋아. 그럼 기본틀은 이렇겠지.



Function 제곱(숫자1,숫자2)


End Function





함수이름이 한글이어도 되나요?






그럼.





좋아요. 두 숫자를 더해서 제곱하는 거니까...





Function 제곱(숫자1,숫자2)

제곱 = (숫자1 + 숫자2) ^ 2

End Function...







좋아요. 이번 함수도 잘 작동하네요.





3단계 : 이미 존재하는 함수 불러오기





좋아요. 이번에는 원의 넓이를 구하는 함수를 만들어보죠.




Function 넓이(반지름)

넓이 = 반지름 ^ 2 * PI()

End Function

맞죠?







어라? 왜 안 되지?






여기는 함수를 만드는 곳.

이미 존재하는 함수를 막 부를 수는 없단다.





그럼 어떡하죠?






Application.WorksheetFunction.함수이름

으로 이미 존재하는 함수를 불러올 수 있단다.








4단계 : IF 구문





좋다. 이번에는

시험점수에 따라 텍스트를 출력하는 함수를 만들어보자.



50점 미만은 '더 노력하세요'

50점에서 99점은 '괜찮아요'

100점은 '잘했어요'

101점부터는 '다시 입력하세요'






...라고 말이다.





음, 조건에 따라 다른 결과를 내려면...







이때는 IF 구문을 이용하면 된다.


if 첫 조건 then

결과 1

elseif 두 번째 조건 then

결과 2

...

else 나머지 경우일 때 결과


end if





'이 조건일 때는 이것을.. 이 조건일 때는 저것을...

그도저도 아닐 때는 이걸....'이라는 뜻이란다.







알았어요. 이렇게 하면 되죠?











결과도 제대로 나왔네요.




* VBA 단축키는 Alt + F11입니다.

반응형
  Comments,     Trackbacks