설찬범의 파라다이스
글쓰기와 닥터후, 엑셀, 통계학, 무료프로그램 배우기를 좋아하는 청년백수의 블로그
엑셀 VBA (2)
엑셀 VBA 레시피 - 시작하기
반응형






  안녕하세요. 나는 Gustave Alvarado다. 프랑스 식당 주인이다. 사람들 물어본다 왜 내 성씨 스페인인가. 내 할아버지는 마드리드에서 왔다. 그는 요리 매우 잘 했다. 할머니 그가 프랑스에서 만난 채식주의자였다. 할아버지가 그녀를 고기 먹게 만들었다 뛰어난 요리 실력으로. 나도 그처럼 되고 싶다.





  사람들은 나한테 요리 어떻게 하는지 물어본다. 난 서점 가서 사라고 말한다. 음식을 만드는 것 그리고 요리하는 법 가르치기 다르다. 너들은 기초에서 배워야 한다. F1 운전자 찾아가서 물어보지 말아라 면허 얻기 전에. 다행히 나는 엑셀 잘하지 않는다 내 요리하는 만큼. 그런 이유로 여러분을 가르침이 가능하다. 지금 우리는 동업자다 그러므로 불러라 나를 Gustave라고.






  나는 조금 한국인 여기서 만난다. 한국 관광객들은 항상 말한다 취업하기가 어렵다. 지난번에 만난 소녀 대학에서 철학 수강해 왔다. 교양으로 풍부한 여자 그러나 직업 얻지 못했다. 그녀는 표정을 찌그러뜨렸다 말하며 "마이크로스프트 엑셀 배운 사람이 나보다 사회에 더 쓸모있다." 나는 그녀 불쌍히 생각한다. 하지만 철학은 똑똑한 것인데 어떻게 그녀는 예상하지 못했는가 철학이 직업을 주지 않는 것?







  진짜 기술은 인생에 중요하다. 여러분은 그걸 배워야 한다. 먹고사는 것 한 가지 실력만으로, 아주 큰 실력 필요하다. 당신은 세계적이어야 할 것이다. 만약 아니라면 당신은 여러 가지 배워야 한다. 엑셀이 그들 중 한 명이다. 많은 경영자들 내 식당에 방문하는 불평한다 엑셀 배우면 많은 편함 찾을 수 있다.







  당신은 서점에 갈 수 있다 그리고 많은 엑셀책들 찾는다. 초보를 위함, 회사를 위함, 그냥 취미를 위함... 무엇이든 당신이 보는 것, 그들은 각자 주제를 가진다. 그러므로 나도 하나 가진다. 내 테마는 VBA다. 내가 친구에게 물어볼 때, 그들은 손을 저었다. "VBA는 프로그래밍 사람만을 위한다." 그러나 나는 VBA 멋있음을 발견했다. 요리와 달리, 괜찮다 엑셀 망치는 것. 재료를 낭비하지 않는다. 누가 식중독 발병하지 않는다(네가 아니 회사에서 보고서 쓸 때).






  학습은 재밌다. 학습은 살기 위한 힘을 준다. 음식은 시간이 갈수록 부패한다, 그러나 지식은 반대로 숙성한다 마치 와인처럼. 그래서 배워보자 같이. 엑셀 미공부의 결과물들아.








  VBA는 Visual Basic for Application를 위해 선다. Visual Basic은 컴퓨터를 위한 말이다. 당신이 영화 볼 때 매트릭스처럼, 많은 0과 1이 보인다. 그것이 어떻게 컴퓨터가 일하는지다. 그러나 0과 1만 쓰는 것 너무 복잡하다. 여러 컴퓨터 전문가들이 컴퓨터 언어 만들었다. 그걸 사용함, 더 편하게 일한다. Visual Basic이 그중 하나다. Application은 쉽다. 휴대폰을 집어라. 당신은 휴대폰에 있는 프로그램을 본다. 요즘 아이들은 그걸 부른다 App이라고. 안전하다 Application을 App이라고 보는 것.






  우리는 Excel을 공부하기 때문, Application은 Excel을 의미한다. 그래서 VBA는 Excel을 위한 컴퓨터 말이다. 무슨 뜻인가?






  당신은 식당에 가서 메뉴를 든다. 하나를 고른다. 시킨다. 종종 추가 주문한다. '덜 익힘 원한다.' '양파를 더 넣어라.'. 내 식당에 만족하지 않으면(난 노력한다 이것이 불가능하다) 당신은 요리를 배우고 직접 요리한다. 메뉴에 없는 밥을 만든다.






  Excel 거대한 기능 가진다. 함수들, 그래프들... 그러나 가끔 당신은 못마땅하다 Excel 것들. 그것이 시작이다 당신이 VBA를 작동하는. VBA는 자유로운 Excel이다. 함수를 만들어라, 기능 사용해라 제공하지 않는. 버튼을 누르고 셀을 정렬한다? 새 창을 띄워 자료를 넣어라? 가능하다 VBA 안에서는!






  아무튼 나는 Excel 2016년과 일한다. 단축키는 Alt + F11이다. 화면 위에 개발 도구 누르고 왼쪽에 있는 Visual Basic 클릭도 가능하다. 만약 개발 도구 없으면 파일 - 옵션 - 리본 사용자 지정 들어가라. 개발 도구 네모에 체크하고 확인 누른다.






  VBA에 들어가면 많은 메뉴 있다. 놀라지 말아야 한다. 우리는 조금만 건드릴 것이다. 삽입 - 모듈을 누른다. 흰 화면이 생긴다. 당신은 여기에 글씨를 쓸 수 있다. 물론, 알맞은 단어를 넣어야 한다. 컴퓨터 나라에 온다면, 컴퓨터 말 써라!


  다음 시간에 나는 조금 기초적인 VBA 해볼 것이다. 좋은 운!

반응형
  Comments,     Trackbacks
엑셀 할머니 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