반응형
- 통상 필터는 어떠한 기준(조건)에 맞는 사례만 따로 보고자 할 때 쓴다.
- 이를테면, 수학 성적이 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.
반응형
'VBA Macro > VBA Excel' 카테고리의 다른 글
[엑셀 VBA] 스파크라인 자동으로 삽입하기 (3) | 2023.02.28 |
---|---|
[엑셀VBA] 1차원 배열의 역배열(Reverse Array) 반환하기 (0) | 2022.11.05 |
[엑셀 VBA] 짤막하고 유용한 사용자정의 함수 및 스니핏 (0) | 2021.02.02 |
[엑셀 VBA] 숫자데이터의 구간별 빈도 빠르게 산출하기 (0) | 2021.01.26 |
[엑셀 VBA] 가능한 모든 조합 나열하기 (응용하기) (0) | 2021.01.25 |