엑셀 VBA 셀에 있는 데이터 검색해서 찾는 방법

엑셀(Excel)/VBA

엑셀 VBA 셀에 있는 데이터 검색해서 찾는 방법

 

환경: Microsoft Excel 2013

 

VBA 를 이용해서 엑셀 데이터 중 원하는 값을 찾아 몇 번 줄에 있는지 알려 주는 코드를 만들어 보겠습니다. 실행은 양식 컨트롤의 버튼을 이용할 것입니다. 버튼을 클릭하면 지정한 매크로를 실행해서 찾는 내용이 몇 번 행에 있는지 알려 주게 됩니다.

 

프로그램에 쓰이는 컨트롤 목록은 [개발 도구] 탭에 있습니다. 컨트롤 그룹의 삽입 리본 메뉴를 선택하시면 양식 컨트롤에 [버튼] 을 볼 수 있습니다.

 

엑셀 VBA 셀에 있는 데이터 검색해서 찾는 방법

 

버튼을 클릭해서 엑셀 시트에 추가하시면 [매크로 지정] 팝업창이 뜨게 됩니다. 매크로 지정 팝업창에서 매크로 이름을 넣고 [새로 만들기]를 클릭합니다.

엑셀 VBA 셀에 있는 데이터 검색해서 찾는 방법

 

매크로 지정 팝업창에서 [새로 만들기] 버튼을 클릭하시면 VBA 에디터에 매크로 이름에 해당하는 함수가 자동으로 생깁니다. 먼저 함수 내에서 데이터가 들어가 있는 셀이 몇 개 인지 체크하는 소스를 만듭니다. 셀을 내용을 하나씩 체크하기 위해 Do ... Loop Until 반복문을 사용하였고 마지막에 값이 없을 때 까지 반복한 후 몇 개가 있는지 메시지 박스로 알려줍니다.

 

Sub SearchName()

   

    Dim row As Integer

    Dim name As String

   

    row = 0

   

    Do

    DoEvents

        row = row + 1

        name = ActiveSheet.UsedRange.Range("A" & row)

    Loop Until name = ""

       

    MsgBox row - 1

End Sub

 

아래 그림처럼 [찾기] 버튼을 클릭해서 SearchName() 함수를 실행하면 A 열에 있는 이름이 몇 개 인지 알려줍니다.

엑셀 VBA 셀에 있는 데이터 검색해서 찾는 방법

 

 

다음은 위에서 만든 소스에다 [이름 입력]칸에 찾고 싶은 이름을 입력하고 찾기를 누르면 몇 번째 셀에 있는 찾을 수 있도록 소스를 추가해 보겠습니다. Do Loop Until 반복문을 돌면서 입력한 이름값인 “C2” 와 각 셀의 값을 비교해서 해당하는 값이 맞다면 몇 번째인지 searchCount 변수에 저장합니다. 이 값이 찾고자 하는 이름이 있는 행 값입니다. InStr() 함수는 두 번째 인수로 들어간 findName 값이 있으면 1 이상을 리턴하게 됩니다.

 

Sub SearchName()

   

    Dim row, searchCount As Integer

    Dim name As String

   

    row = 0

    searchCount = 0

    findName = ActiveSheet.UsedRange.Range("C2")

   

    If findName = "" Then

        MsgBox "찾을 이름을 입력해 주세요!!"

        Exit Sub

    End If

   

    Do

    DoEvents

   

        row = row + 1

        name = ActiveSheet.UsedRange.Range("A" & row)

        If InStr(name, findName) > 0 Then

            searchCount = row

        End If

       

    Loop Until name = ""

       

    MsgBox findName & " " & searchCount & " 번째 셀에 있습니다."

End Sub

 

아래 그림처럼 찾을 이름을 입력하고 [찾기] 버튼을 누르시면 몇 번째 행에 이름이 있는지 알려 주게 됩니다.

엑셀 VBA 셀에 있는 데이터 검색해서 찾는 방법

 

 

저작자 표시 비영리 변경 금지
신고
Posted by 녹두장군