본문 바로가기
VBA/엑사남_기초방

[기초방] VBA 100제 #78 [ 열선택하여 조건에 맞는값 출력 ]

by 일등미노왕국 2023. 10. 19.

원본테이블에서 일부열을 선택 후 조건에 맞는 값을 도출하는 문제이다.

 

이런 문제에 FILTER함수가 너무 특화되어 있기 때문에 이러한 문제는 365 사용자라면 VBA까지 들어오지 않을 것같다.

 

단 한줄....

=SORT(FILTER(FILTER(A4:F80,F4:F80>J3),{0,1,0,0,1,0}),2)

물론 이중 FILTER대신 CHOOSECOLS를 사용해도 된다.

 

여하튼

 

이번 문제의 핵심은 아래 구문인데, 이해가 잘 안되시는 분은 본인의 포스팅 중 배열 슬라이싱에 대해서 한번 더 짚고 오길 바란다.

https://1stminokingdom.tistory.com/153

 

[VBA] 배열 슬라이싱(feat. 배열맛집)

오늘은 배열 슬라이싱에 관해서 알아보자. 본인이 쓴글에 간간히 배열 슬라이싱에 관해서 구문을 이용한적은 있지만, 요즘 채팅방에서 학구열이 너무 높아져서 배열에 대해서 좀 더 깊이 다루

1stminokingdom.tistory.com

 

rowV = .Sequence(UBound(V, 1))                 
        
Vtemp = .Index(V, rowV, Array(2, 5, 6))        

Vtemp = .SortBy(Vtemp, .Index(Vtemp, , 3), -1)

 

 

 

더보기
Option Explicit

Sub 기초방78()

    Dim V: V = Range([a4], [f4].End(4))
    Dim rowV
    Dim Vtemp, Va, i&  
    
    With Application
    
        rowV = .Sequence(UBound(V, 1))                  
        
        Vtemp = .Index(V, rowV, Array(2, 5, 6))         
        
        Vtemp = .SortBy(Vtemp, .Index(Vtemp, , 3), -1) 
        
        For Each Va In .Index(Vtemp, , 3)             
        
            If Va > [j3] Then                         
            
                i = i + 1
                
            Else                                    
            
                Exit For                             
            
            
            End If
            
        Next Va
        
        [l7].Resize(i, 2) = Vtemp                      
        
    End With

End Sub

 

이번 문제역시 APPLICATION.FILTER를 통해서 풀어보려 했지만 조건문을 넣는것이 쉽지 않았다.

 

이러한 하나하나가  365를 배워야하는 이유이다.

기초방78.xlsm
0.02MB

댓글