업무 자동화에 관해 관심이 많습니다.
이번에는 엑셀 VBA에 대해서 짧게 공부하고 공유드리고자 합니다.
저는 VBA에 대해 공부한 적은 없지만 현업에서 '검색 → 복사 → 붙여넣기 → 나에게 맞게 수정하기'로 간신히 엑셀VBA를 사용하고 있습니다.
그래서 이번에 쉬는 동안 강의 들은 내용을 바탕으로 중요한 문구가 많아 정리해두고자 블로그에 게시하였습니다.
확실히 코딩공부라는게 정석적인 강의와 문법을 공부해서 하면 훨씬 클린하고 좋지만, 실무에서 필요로 하지 않으면 공부의욕이 떨어지는 걸 느꼈습니다. 컴퓨터 성능이 좋아진 지금은 오히려 지저분한 코드라도 쓸 수 있으면 그게 더 좋은 코드 같습니다. 그래도 강의 하나만 들었음에도 VBA 꿀팁이 굉장히 많아 정리해두고자 합니다.
엑셀에서 특정 데이터만 가져와서 다른 시트에 붙여넣고 싶은 경우 사용하면 됩니다.
예를 들어 아래 데이터에서 속성이 '풀'인 데이터 Set만 별도로 추출하고자 할 때 쓸 수 있는 매크로입니다.
결과화면
풀 데이터만 추출했습니다.
이걸 어디다가 쓰지..? 라는 생각이 드는데요
이것만 보면 그렇지만 코드 하나하나 배우다 보면 또 적재적소에 쓸 수 있게 되더라구요
전체코드 입니다.
Sub ExtractData()
Dim i As Long, lR As Long, lC As Long
Dim rng As Range
Application.ScreenUpdating = False
With Sheet1
If .Range("N2") = vbNullString Then 'vbNullString = ""
MsgBox "먼저 N2셀을 선택하세요"
Exit Sub
End If
If Sheet2.Range("A1").CurrentRegion.Cells.Count > 11 Then
Set rng = Sheet2.Range("A1").CurrentRegion
Set rng = rng.Offset(1).Resize(rng.Rows.Count - 1)
rng.Clear
End If
lR = .Cells(Rows.Count, "a").End(xlUp).Row
lC = .Cells(1, Columns.Count).End(xlToLeft).Column
For i = 2 To lR
If .Cells(i, "C") = .Range("N2") Then
.Cells(i, "a").Resize(1, 11).Copy Sheet2.Cells(Rows.Count, "A").End(xlUp).Offset(1) 'Copy & Paste
End If
Next
End With
Application.ScreenUpdating = True
End Sub
※ 출처 : 배영자 엑셀 VBA 변형
1. 매크로명
먼저 vba는 Sub로 지정해줘야 하며, ExtractData는 임의로 지정한 매크로 명 입니다.
Sub 는 반드시 End Sub가 따라옵니다.
2. 변수지정
다음은 변수지정입니다.
VBA에서 숫자형의 경우, Integer과 Long으로 지정가능합니다.
다만 Integer의 경우, 숫자의 범위가 크지 않기 때문에 실무는 Long으로 사용하시면 될 것 같습니다.
VBA 데이터형식 종류 관련해서는 https://hwangyoungjae.tistory.com/89에 잘 정리되어 있어서 참고하시면 좋을 것 같습니다.
변수지정은 처음부터 딱 지정해서 쓰는 것이 아니라 매크로 쓰다가 변수가 생기면 지정하는 형태로 진행하시면 됩니다.
3. 준비
Application.ScreenUpdating 관련해서는 유튜브에서 유명한 '오빠두엑셀' 님이 잘 정리해주신 자료가 있어서 들고왔습니다.
4. With ~ End With
With의 용법은 알아두면 다른 사람 코드를 복사 붙여넣기 할 때도 큰 힘이 됩니다.
With도 사용할 떈 End With와 함께 사용해야 합니다.
With를 쓰는 목적은 반복되는 구문을 뺄 때 사용합니다.
Sheet1 을 계속해서 반복적으로 말해야 할 땐 With Shee1 이라고 작성하고 난 뒤에는 .만 찍어도 Sheet1을 선언한 것과 동일한 성격을 지니고 있습니다.
With 를 안썼으면 5번은 Shee1 을 더 선언해야 했습니다.
물론 코드가 길어지면 길어질수록 더욱 유용합니다.
이후 추가되는 중요한 내용은 2편에서 다루겠습니다 !
'엑셀(Excel)' 카테고리의 다른 글
[파워쿼리] 엑셀 피벗테이블 텍스트로 나타내기 + 날짜 데이터 순서지정하기 (1) | 2022.09.25 |
---|---|
[파워쿼리] 데이터 , 로 예쁘게 정렬해보기(M함수 맛보기) (0) | 2022.09.05 |
[엑셀VBA] 크로스테이블, IF 다중조건 VBA로 해결하기 (0) | 2022.09.05 |
[엑셀] 엑셀 text함수를 통한 엑셀 자동화 첫걸음 !! (난이도 쉬움 주의) (0) | 2022.08.30 |
[엑셀VBA] 특정 조건 만족하는 데이터 Set 불러오기(Feat. vba 맛보기)_2편 (0) | 2022.08.14 |
댓글