내역관련/내역자료

자동필터 지정 및 해제

고추탄 2026. 3. 26. 15:05

※ Copilot 질의 응답

※ 단축키를 지정하면 편리하게 사용 가능

Sub sht_Auto_Filter()

  Dim ws As Worksheet
  Dim Sub_Trade As String
  Dim Detailed_specifications As String
  Dim Target As String
    
 '현재 워크시트 지정
  Set ws = ActiveSheet
  
  Target = Selection.Address

  Cells(Selection.Row, 1).Select
    
 '선택한 셀이 A열에 있는지 확인
  If Not Intersect(Selection, ws.Columns("A")) Is Nothing Then
    
    '선택 공종 값 가져오기
     Sub_Trade = Cells(Selection.Row, 1).Value
     Call RemovePrefixDynamic(Sub_Trade)
     
    '선택 공종의 규격 값 가져오기
     Detailed_specifications = Cells(Selection.Row, 2).Value
     Call RemovePrefixDynamic(Detailed_specifications)
        
    '값이 비어있지 않을 때만 필터 적용
     If Sub_Trade <> "" Or Detailed_specifications <> "" Then
        
       '기존 필터 해제
     
        On Error Resume Next
     
        ws.ShowAllData
     
        On Error GoTo 0
            
       '자동 필터 설정(A열 공종 기준)
        ws.Range("A1").CurrentRegion.AutoFilter Field:=1, Criteria1:="*" & Sub_Trade & "*"
        
       '자동 필터 설정(B열 규격 기준)
        ws.Range("A1").CurrentRegion.AutoFilter Field:=2, Criteria1:="*" & Detailed_specifications & "*"
     
     End If
    
  End If
    
    
 '화면을 최상단으로 이동
  ActiveWindow.ScrollRow = 1
    
  Range(Target).Select
    
End Sub


Sub RemovePrefixDynamic(ByRef filterValue As String)
    
  Dim pos As Long
  
  pos = InStr(filterValue, " ")
    
  If pos > 0 Then
     filterValue = Mid(filterValue, pos + 1)
  End If
    
End Sub


Sub sht_ShowAllDate()
 
  Dim ws As Worksheet
  Dim rng As Range
    
  Set ws = ActiveSheet
  Set rng = Selection   ' 현재 선택된 셀 기억
    
  On Error Resume Next
  ws.ShowAllData        ' 필터 해제
  On Error GoTo 0
    
  rng.Select            ' 원래 선택했던 셀 다시 선택
        
End Sub

자동필터 지정 및 해제.txt
0.00MB

LIST