반응형

sum()함수보다 인수가 더 필요한 Vlookup(), Countif() 함수도 VBA에서 사용가능했습니다.

예제를 한번 만들어보았습니다(교재 등 예제 잘 만드시는분들 존경..)

둘리의 영어점수가 있는 셀 값을 가져오려면 =VLOOKUP(G3,$A$3:$D$6,3,0) 이런 수식이 필요할텐데요 이 수식을 VBA에서 그대로 사용할 수는 없지만 약간의 변경 후 사용 가능합니다

Sub itng()

    Range("h4").Value = WorksheetFunction.VLookup(Range("g3"), Range("a2:d6"), 2, 0)
    
End Sub

WorksheetFunction 과, 범위를 인자로 하는 부분을 Range()를 사용한 부분을 제외하면 크게 차이가 없습니다. 

예시로 Vlookup 함수를 사용하였지만 Countif 함수나 Sumif 등 여러 함수들을 업무상 VBA로 편하게 사용했었습니다. 단, 예시에는 고정적인 범위만 입력되어 있지만 VBA로 사용할때는 범위를 변수로 지정하여 유동적으로 사용했습니다.

요구사항을 조금 변경하여 4인의 영어 점수를 추출하기 위해서는???

=VLOOKUP(G3,$A$3:$D$6,3,0)

=VLOOKUP(G4,$A$3:$D$6,3,0)

=VLOOKUP(G5,$A$3:$D$6,3,0)

=VLOOKUP(G6,$A$3:$D$6,3,0)

H열에 각각 위와 같은 수식들이 들어갈텐데요, 이걸 VBA 매크로로 동일하게 작성하면 ???  반복문을 사용하여 수식은 한줄만 사용하면 됩니다.

Sub itng()

    Dim i As Long
    
    For i = 3 To 6
        Range("h" & i).Value = WorksheetFunction.VLookup(Range("g" & i), Range("a2:d6"), 3, 0)
        
    Next i
       
End Sub

구해야 하는 값에 따라 변수의 위치 갯수 등을 조정하여 얼마든지 유용하게 활용가능할것입니다.

 

반응형

+ Recent posts