업무 능력 향상/엑셀 VBA 활용

[VBA] Vlookup 함수 VBA 로 업무를 편하게

Link2Me 2013. 12. 23. 20:05
728x90
Vlookup 함수 VBA 로 업무를 편하게

 

VLookup 함수만 알아도 엑셀 다루는 업무가 엄청 편해지는데요.

VLookup 함수를 다루다보니 용량이 너무 큰 경우에는 파일 사이즈가 장난 아니게 커지는데다 속도 저하문제가 너무 심해서 이걸 해결할 목적으로 PC의 RAM(메모리)를 더 많이 늘렸었습니다. 그런데도 불구하고 함수를 많이 사용하면 역시나 속도 저하 문제가 심하고 응답도 늦더군요..


그래서 가능한 방법을 찾아보니 VLookup 함수 VBA 를 이용한 방법이 있더군요. 사용해보니 너무 편하고 좋네요.

속도저하 문제도 해결되고 용량문제도 해결됩니다.

VLookup 함수에 대한 이해가 부족하신 분은 http://link2me.tistory.com/29 게시물을 먼저 읽어보면 도움 되실 겁니다.

VBA 라고 하니까 너무 어렵다고 생각하고 아예 엄두도 안내시는 분들 많으실 겁니다.

제가 설명드린 거 찬찬히 보시고 첨부된 샘플 보시고 샘플만 몇가지 값만 수정하시면 금방 이해되시고 얼마든지 쉽게 누구나 다 이용하실 수 있다는 겁니다. 초보자 분들 용기를 내십시요



 


구하고자 하는 결과는 C열에 표시하는 것이라면.....

VBA 함수는 아래와 같습니다.

수정해서 사용할 부분이 어디인지 아시겠죠?

범위(Range) 지정하는 첫 시작셀 지점

테이블의 범위 지정

테이블에서 몇번째 열의 값을 가져올 것인가 하는 것 지정

가져온 걸 어디에 뿌려줄 것인가를 지정


* 다른 시트에 있는 자료를 table_array 로 할 경우 변수 선언 방법은

Set table_array = Worksheets("Table_array").Range("A2:C16") 처럼 직접 마지막 셀을 적어주는게 가장 확실하겠죠. 하지만 셀이 변경될 경우에는 잘못된 참조가 될 수도 있습니다.

이걸 방지하려면 Set table_array = Worksheets("Table_array").Range("A2:C" & Cells(Rows.Count,"C").End(3).Row) 라고 변수선언을 해주면 됩니다.

 



이렇게 하면 함수식이 전부 사라지고 바로 결과값이 나오므로 파일 사이즈가 커지지 않고 속도도 빠르게 처리됩니다.

1번은 시작셀 A2를 지정했고, 중간에 또 나오는 값 A가 있는데 이것도 같은 열의 값이어야 합니다.

2 번에 보는 바와 같이 같은 sheet 내에서 처리하는 방법, 다른 sheet 에 있는 걸 처리하는 방법, 다른 파일에서 가져오는 방법을 다 표기해두었습니다. 다른 파일에 있는 걸 가져오려면 반드시 Ctrl + O 로 파일을 열어서 가져와야 합니다.  

(엑셀을 분리하여 띄우는 방법으로 하면 참조가 안될 수 있습니다)

첨부된 vba 된 확장자 파일을 다운로드 받아서 텍스트 에디터로 여세요.
그리고 엑셀에서 Alt + F11 키를 누르세요. 그러면 아래와 같은 화면이 나타납니다. 



텍스트 에디터로 연 코드를 복사하여 여기에 붙여넣기를 하시면 됩니다.



이렇게 하시면 VLoolup 함수만 사용해서 하는 것보다 훨씬 속도면에서 빠릅니다.

단, 주의 사항은 잘못지정하면 되돌리기를 할 수 없다는 점을 명심하셔야 합니다.

표시될 결과값을 잘못 열을 지정하면 기록된 값이 순식간에 새로운 결과값으로 업데이트되고 되돌릴 수가 없어집니다.

처음에 하실 때에는 반드시 백업파일을 하나 만드신 다음에 하시기 바랍니다.


함수 몇가지와 더불어 VLookup 함수 다룰 때 VBA 를 이용하면 편하므로 한번 이용해보세요. 

 

VLookup_VBA_code.vbs


Vlookup_VBA_sample.xlsm


이상으로 VLookup 함수를 VBA를 이용하여 하는 방법에 대해 알아봤습니다.



728x90