안녕하세요. yyDandy 입니다.
1. 다른 파일의 데이터 가져오기
엑셀을 사용하면서 다른 파일의 데이터가 필요한 경우가 많은데요. 그럴 때 보통 그 파일을 열어서 Ctrl + C 를 해서 옮기는 경우가 대부분이에요. 하지만 이 역시 반복 작업이라는 점을 생각하면 매크로와 VBA 기능을 이용하여 자동화할 수 있는데요. 한가지 예제를 들어서 시작해볼게요.
이렇게 A엑셀에 있는 성과급을 B엑셀에 등급 별로 성과급 합을 구하는 것을 해볼게요. 물론, 이렇게 데이터 셀의 수가 적으면 그냥 하는 게 편할 수 있지만, 보통 회사라면 100명 이상을 만지는 경우가 있고, 등급도 다양하고, 직급에 따라 또 달라지기 때문에 활용하기 좋아요.
매크로 기록 기능을 활용할건데요. 코드는 직접 짜면 멋있고 재미(?)도 있겠지만, 사실 실무에서는 속도나 정확하게 하는 것이 더 중요하기 때문에 기능을 활용하여 기본적인 틀을 짜놓고 어느 정도 필요에 따라 조금씩 수정하는 게 더 좋아요.
하단의 매크로 기록을 먼저 눌러주세요. 그 뒤에 A엑셀의 성과급 탭 100~80까지 3개를 복사해서 B엑셀의 맞는 영역에 복사-붙여넣기를 해주세요.
Range("G8:G10").Select
Selection.Copy
Windows("통합 문서3").Activate
Range("J8").Select
ActiveSheet.Paste
기본적인 구성은 이렇게 돼요. 이제 보면 이해가 되실텐데요. G8:G10을 선택해서 복사하고 통합문서3(엑셀B)의 J8 영역에 붙여넣는다는 것이죠. 하지만 여기서 문제가 있어요. 저희는 B엑셀을 열지 않고, 붙여넣는 게 목표 였으니까요. 파일을 여는 기능부터 추가를 해야한다는 점이죠.
Workbooks.Open Filename:="C:\Users\바탕 화면\yyDandy\B엑셀.xlsx"
Range("G8:G10").Select
Selection.Copy
Windows("B엑셀.xlsx").Activate
Range("J8").Select
ActiveSheet.Paste
ActiveWindow.Close
먼저 엑셀을 키는 것을 해볼게요. 키는 방법은 Workbooks.Open Filename:="경로" 라는 코딩을 해주시면 돼요. 경로 확인 방법은 엑셀이 있는 폴더 주소를 그대로 붙여넣기를 해주시면 됩니다. 그 뒤에 파일 이름을 붙여주세요. 파일에는 확장자까지 더해줘야 돼요. 그러면 이제 엑셀이 켜지게 돼요. 그 뒤에 Selection.Copy까지는 쉽죠?
그 다음은 Windows("B엑셀.xlsx").Activate 를 추가해주세요. 이 매크로는 현재 A엑셀에서 시작되고 있잖아요? 그렇기 때문에 위에 Selection.Copy까지는 A엑셀에서 시행되고 있는 거에요. 하지만 Activate를 통해 B엑셀에서 실행될 수 있도록 바꿔주는 것이죠. 그러면 뒤에 Range("J8")과 Paste는 B엑셀에서 진행되겠죠? 그리고 마지막 ActiveWindow.Close를 통해 B엑셀을 닫아주면 끝이랍니다. F5를 눌러서 해당 매크로를 실행해보면 B엑셀에 원하는 결과를 볼 수 있어요.
하지만 파일에 대한 경로는 사용하고 있는 PC에서만 사용할 수 있어요. 하지만 USB나 다른 이동매체를 통해 쓰기 위해서는 경로를 항상 바꿔줘야 하잖아요? 그럴 땐 첫 줄을 바꾸면 돼요. 경로를 ThisWorkbook.Path & "\B엑셀.xlsx"으로 바꾸면 된답니다.
2. 현재 시점에 맞는 위치 값 가져오기
다음으로는 위치 값을 바꾸는 방법을 알려드릴게요. 앞서 말한 성과급이 2023년 자료라면 2022년, 2021년 자료를 모아야 할 때도 있고, 급여라면 매달 데이터를 가져와야 하잖아요? 그럴때는 위치 값 코드를 수정해주면 쉽게 해결할 수 있어요.
Workbooks.Open Filename:="C:\Users\바탕 화면\yyDandy\B엑셀.xlsx"
Range("G8:G10").Select
Selection.Copy
Windows("B엑셀.xlsx").Activate
Range("G8").Select
ActiveSheet.Paste
ActiveWindow.Close
위 엑셀을 보면 G8에 붙여넣기를 하게 되어 있는데요. 만약 2021년 자료라면 H8에 붙여 넣기만 하면 되는 거에요.
Workbooks.Open Filename:="C:\Users\바탕 화면\yyDandy\B엑셀.xlsx"
Range("G8:G10").Select
Selection.Copy
Windows("B엑셀.xlsx").Activate
Cells(8,"H").PasteSpecial
ActiveWindow.Close
Cells(8,"H")는 Range(H8)과 같은 의미를 가지고 있어요. 다음으로는 H를 자동으로 추적할 수 있도록 만든다면 더욱 편리해지겠죠? 단순히 Year(Date)-1 등의 함수로 바꿔주기만 해도 2022년 자료로 바뀌고 -2를 한다면 2021년 자료가 나오고 그렇게 되겠죠? 하지만 A엑셀 속 특정 셀에 해당 값을 적어주고 그 셀을 추적하게 한다면 -1, -2가 아닌 시트 속에서 특정 셀만 바꿔도 추적이 가능하도록 더 편리하게 자동화를 할 수 있게 된답니다. 이건 다음에 배워볼게요 !!
'지난 게시글' 카테고리의 다른 글
[카페] 부산, 김해 대동 파우제앤숨 (0) | 2023.04.29 |
---|---|
[VBA] 엑셀 매크로 & VBA 기초(원하는 조건의 데이터를 다른 시트에 옮기기) (0) | 2023.04.29 |
[군대] 공군장교 복지혜택, 국방부 단체보험 청구방법, 후기 (2) | 2023.04.27 |
[맛집] 화명동 초밥집(스시순) (3) | 2023.03.10 |
[맛집] 연산동 청담한정식 (생신상 코스, 총정리) (3) | 2023.02.25 |