VB(A)

자동필터를 이용한 데이터 검색

당근쨈 2015. 5. 2. 21:55

날짜, 호기, 주/야 중 하나를 검색어로 입력하면

자동필터를 활용하여 원본데이터의 일부를 가져온다.

검색어의 타입에 따라 필터검색 조건을 지정하는 것이 포인트.


Option Explicit
Sub fndCondition()
 
    Dim rng As Range
    Dim strFnd As Range
    Dim intFind As Integer
    Dim wsData As Worksheet
    Dim rngPaste As Range
    Dim rng1stData As Range
    
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
        .Calculation = xlCalculationManual
    End With
    
    '변수 설정
    Set wsData = Sheets("기본정보")
    Set strFnd = Range("C4")
    Set rngPaste = Range("B9")
    Set rng1stData = wsData.Range("B3")
    
    '기존자료 삭제
    rngPaste.CurrentRegion.Offset(1).ClearContents
    
    '검색 조건에 따라 검색범위 지정
    Select Case TypeName(strFnd.Value)
        Case "Date": intFind = 1 '날짜
        Case "Double": intFind = 2  '호기
        Case "String": intFind = 3  '주/야
        Case "Empty": GoTo j    '빈셀이면 매크로 종료
    End Select
    
    '검색조건에 맞춰서 기본정보 시트에 필터 적용
    With rng1stData
        .AutoFilter Field:=intFind, Criteria1:=strFnd.Text
        .CurrentRegion.Offset(1).Copy rngPaste
    End With
    
    '붙여온 값에서 구분은 삭제
    With rngPaste
        .CurrentRegion.Offset(1).Columns(5).Resize(, 3).Cut .Offset(, 3)
    End With
    
    '작업 완료 후 검색 조건 셀속성을 일반으로 변경하고 필터 해제
    With strFnd
        .Value = .Text
        .NumberFormatLocal = "G/표준"
    End With
    rng1stData.AutoFilter
 
j:
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
        .Calculation = xlCalculationAutomatic
    End With
End Sub
cs


엑셀 예제-0502.xlsm



'VB(A)' 카테고리의 다른 글

그룹으로 내림차순  (0) 2015.05.15
셀 안의 문자열 삭제  (0) 2015.05.03
초과근무내역 가져오기  (0) 2015.04.29
흩어진 글자들을 한줄로 오름차순 정렬  (1) 2015.04.22
표를 달력으로 보내기  (2) 2015.04.20