VBA Macro/VBA Excel

[엑셀 VBA] 기준이 없는 리스트에 따라 자동필터하기

루아흐뉴마 2022. 10. 9. 18:19
반응형
  • 통상 필터는 어떠한 기준(조건)에 맞는 사례만 따로 보고자 할 때 쓴다.
  • 이를테면, 수학 성적이 90점 이상인 학생, 성이 김씨인 학생, 안경을 쓴 학생 등을 구할 때 쓴다.
  • 그런데 케이스마다 적용하는 기준이 다르다면? 혹은 없다면?
  • 예를 들어, 수 천 명의 학생 데이터 중에서 특정 100 명만 리스트해야 한다면?

  • 이 매크로는 전체 케이스 중 특정 목록에 속하는 데이터만 필터링하는 매크로이다.
  • 매크로 예제로 사용한 데이터는 미국 주식 티커별 데이터이다.
  • 특정 ETF에 포함된 상위15개 티커를 필터링한다.
  • 참고로 예제 영상에서 모든 데이터가 필터링되지 않는 이유는 나에게 필요하지 않은 티커를 삭제했기 때문이다.
  • 매크로 작동방식은 코드 내 주석을 확인하면 된다.


매크로 Output

 





VBA Code

 
Option Explicit
Sub myFilter()

Dim oSht As Worksheet
Set oSht = Sheets("USA")  '워크시트 설정

Dim rngTickSel As Range '주식을 검색할 ETF 선택 셀
Set rngTickSel = Selection

Dim arrTick As Variant  '선택한 ETF에 포함된 TOP15 주식 티커를 담을 배열

Dim rngTarget As Range  '자동필터를 적용할 대상 범위
Set rngTarget = oSht.Range("$A$1:$AB$2792")

arrTick = Split(oSht.Cells(rngTickSel.Row, "C").Value, ";") 'C열에 작성된 ETF Holding을 배열로 반환

Call rngTarget.AutoFilter(2, arrTick, xlFilterValues) '대상범위의 2번째 열 값을 기준으로 필터 (여기서는 TICK)

End Sub


매크로 실행 동영상

 

 

 Copyright (2022) Ruahneuma. All Rights Reserved.

 

반응형