본문 바로가기
엑셀(Excel)

[엑셀VBA] 특정 조건 만족하는 데이터 Set 불러오기(Feat. vba 맛보기)_1편

by Serendipity_ 2022. 8. 7.
반응형

업무 자동화에 관해 관심이 많습니다.

이번에는 엑셀 VBA에 대해서 짧게 공부하고 공유드리고자 합니다.

저는 VBA에 대해 공부한 적은 없지만 현업에서 '검색 → 복사 → 붙여넣기 → 나에게 맞게 수정하기'로 간신히 엑셀VBA를 사용하고 있습니다.

그래서 이번에 쉬는 동안 강의 들은 내용을 바탕으로 중요한 문구가 많아 정리해두고자 블로그에 게시하였습니다. 

 

확실히 코딩공부라는게 정석적인 강의와 문법을 공부해서 하면 훨씬 클린하고 좋지만, 실무에서 필요로 하지 않으면 공부의욕이 떨어지는 걸 느꼈습니다. 컴퓨터 성능이 좋아진 지금은 오히려 지저분한 코드라도 쓸 수 있으면 그게 더 좋은 코드 같습니다. 그래도 강의 하나만 들었음에도 VBA 꿀팁이 굉장히 많아 정리해두고자 합니다.

 

엑셀에서 특정 데이터만 가져와서 다른 시트에 붙여넣고 싶은 경우 사용하면 됩니다. 

 

예를 들어 아래 데이터에서 속성이 '풀'인 데이터 Set만 별도로 추출하고자 할 때 쓸 수 있는 매크로입니다. 

전체 데이터 151개 행 중 일부 데이터
우측에 매크로 버튼

결과화면

 

풀 데이터만 추출했습니다. 

 

이걸 어디다가 쓰지..? 라는 생각이 드는데요 

이것만 보면 그렇지만 코드 하나하나 배우다 보면 또 적재적소에 쓸 수 있게 되더라구요

 

전체코드 입니다. 

 

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에 잘 정리되어 있어서 참고하시면 좋을 것 같습니다.

출처 :   https://hwangyoungjae.tistory.com/89

변수지정은 처음부터 딱 지정해서 쓰는 것이 아니라 매크로 쓰다가 변수가 생기면 지정하는 형태로 진행하시면 됩니다. 

 

3. 준비

 

Application.ScreenUpdating 관련해서는 유튜브에서 유명한 '오빠두엑셀' 님이 잘 정리해주신 자료가 있어서 들고왔습니다. 

출처 : https://www.oppadu.com/vba-application-screenupdating/

 

4. With ~ End With

With의 용법은 알아두면 다른 사람 코드를 복사 붙여넣기 할 때도 큰 힘이 됩니다.

With도 사용할 떈  End With와 함께 사용해야 합니다.

With를 쓰는 목적은 반복되는 구문을 뺄 때 사용합니다.

Sheet1 을 계속해서 반복적으로 말해야 할 땐  With Shee1 이라고 작성하고 난 뒤에는 .만 찍어도  Sheet1을 선언한 것과 동일한 성격을 지니고 있습니다. 

 

 

With 를 안썼으면 5번은 Shee1 을 더 선언해야 했습니다.

물론 코드가 길어지면 길어질수록 더욱 유용합니다. 

 

이후 추가되는 중요한 내용은 2편에서 다루겠습니다 ! 

 

포켓몬_속성나누기_매크로.xlsm
0.03MB

 

 

반응형

댓글