엑셀 팁(excel)/엑셀 매크로 VBA

엑셀 특정 값 데이터 검색 매크로(vba) #5

Emlog 2023. 12. 9. 01:25

검색 기능 매크로

이번 매크로(vba)는 검색하려는 값을 입력하고 조회 버튼을 눌러 결과를 도출하는 매크로이다. 엑셀의 시트에 범위가 지정되어있고 그 범위안의 값과 동일한 입력값(문자열)을 찾으면 해당 행을 결과로 나타내고 그러지 않은 행은 숨겨지는 매크로 이다. 동작되는건 간단한데 매크로는 그리 간단해보이지 않는다. 버튼을 두개나 생성하는 것에 매크로 코드는 조금 더 길어지니 말이다.

어차피 매크로는 저장해뒀다 필요할때 꺼내쓰니 매크로 코드가 길어진 듯 뭔 상관이 있을까. 반복 작업은 단순하게 만들고 시간은 단축시켜주니 매크로는 계속 애용해야 할것이다. 매크로를 어떻게 사용하는지 궁금하다면 이전 게시글을 참조하면 된다.

 

 

 

 

엑셀 매크로 검색 기능 예시1

매크로 조건 및 코드 (검색 기능)

매크로 동작은 아래와 같다.

  • 검색 버튼과 초기화 버튼 생성.
  • 값을 입력후 검색 버튼을 누른다.
  • 검색하려는 값을 아래 지정된 범위에서 찾음.
  • 문자열이 포함된 범위는 행으로 표시.
  • 그렇지 못한 범위는 숨김.
  • 초기화 버튼을 누른다.
  • 검색 입력값과 숨김은 초기화.
  • 검색 입력값 없이 검색 버튼을 누르면 메세지 박스 출력.
  • 검색 입력값과 범위내 값이 일치하는것이 없으면 전부 숨김.
Option Explicit

Sub 검색하기()
    Dim 검색값 As Variant
    Dim 범위 As Range
    Dim 행 As Range
    Dim 셀 As Range
    Dim 찾음 As Boolean
    
    검색값 = Trim(Range("C2").Value)
    
    If 검색값 = "" Then
        MsgBox "검색하려는 값을 입력하세요.", vbExclamation
        Exit Sub
    End If
    
    Set 범위 = Range("B5:E13")
    
    Rows.Hidden = False
    
    For Each 행 In 범위.Rows
        찾음 = False
        For Each 셀 In 행.Cells
            If InStr(1, CStr(셀.Value), 검색값) > 0 Then
                행.EntireRow.Hidden = False
                찾음 = True
                Exit For
            End If
        Next 셀
        If Not 찾음 Then 행.EntireRow.Hidden = True
    Next 행
End Sub

Sub 숨김_초기화()
    Rows.Hidden = False
End Sub

Sub 초기화()
    숨김_초기화
    Range("C2").Value = ""
End Sub

엑셀 매크로 검색 기능 예시2

 

매크로 실행 (검색 기능)

먼저 검색하려는 값을 입력하고 우측에 검색 버튼을 클릭한다. 아래 범위의 값들 중에 검색 입력값과 일치하는 문자열의 범위 값은 표시된다. 4개의 열의 값 중 하나라도 일치하게 되면 해당 되는 행은 모두 표시 한다.
물론 표시한다라는 의미는 아닐것이다. 입력한 문자열과 일치하지 않은 행을 숨김처리 한것이다. 왼쪽 행번호를 보면 띄어진 번호를 확인할수 있다.

입력한 값을 정확히 일치해야 하는것은 아니다. 텍스트중에 Left, Right, Mid 어느쪽에 있어도 포함되기만 하면 문자열과 일치하다고 판단한다. 검색 값을 확인한 후 초기화 버튼을 클릭하면 다시 원래대로 돌아 간다. 검색 입력값은 지워지고, 숨김처리되어있던 행들은 다시 전부 보여진다.

엑셀 매크로 검색 기능 예시3
엑셀 매크로 검색 기능 예시4
엑셀 매크로 검색 기능 예시5


검색 입력값이 존재하지 않은채로 검색 버튼을 클릭하면 아래과 같은 메세지 박스가 출력된다. "검색하려는 값을 입력하세요." 확인을 클릭하면 다시 원래대로 복귀한다.
값을 입력하고 검색을 클릭했지만 아래 범위에 일치하는 값이 없다면 모두 숨김처리 하여, 검색되지 않은 것처럼 보인다. 다시 초기화를 클릭하면 원래대로 복귀한다.

엑셀 매크로 검색 기능 예시6
엑셀 매크로 검색 기능 예시7

매크로 응용 (검색 기능)

생각보다 동작은 간단하다. 검색 입력값에 검색어를 입력하고, 검색 버튼을 누르고 일치하지 않는 값이 포함된 행은 숨김. 초기화 버튼을 클릭하면 다시 모든 숨김은 해제.
코드가 길어지니 내가 원하는 매크로의 본질을 벗어나기 시작한다. 매크로 생성한다고 시간을 더 소비하게 되니 말이다. 이번 매크로의 관건은 오류이다. 몇 가지 안되는 경우의 수를 매크로는 확인해가며 동작을 해야 할것이다. 시행 착오는 많았지만 만들어 두면 어디든 유용하게 쓰일듯하다. 나만의 문서 관리 프로그램이 하나 생긴것 아닌가?

엑셀 매크로#5.txt
0.00MB

 

매크로 작성용 코드는 복사해서 매크로 편집(작성)하기에 붙여넣어 사용하면 된다. 다만 검색 입력 셀과 범위의 위치는 동일하게 하는것이 아니라면 수정이 필요하다. 3군대만 원하는 위치의 셀번호를 수정하면 별 문제는 없을 것이다.

엑셀 매크로 검색 기능 예시8

 

엑셀 매크로(vba)로 편하게 엑셀하기

 

'엑셀 매크로로 편하게 엑셀하기

사무실 일잘러의 가장 필요한 팁들

minidrawer.tistory.com

 

 

 

 

 

 

엑셀 매크로 검색 기능