본문 바로가기

vba

자주 쓰는 VBA 패턴 (3) - 찾고 있는 값의 열 번호를 알파벳으로 반환


VBA로 코드를 짜다 보면, C에 개체 대신 반드시 Range 개체를 사용하고 싶을 때가 있다.

Range 개체는 열 번호를 엑셀의 알파벳 값으로 받기 때문에 ( )안의 값 을 하드 코딩하지 않고 변수로 처리하려면 Range (Var1 & Var2) 또는 Range (var1& var2 & ":" & var3 & var4)과 같은 식으로 처리해야 된다.

이때 아래의 코드가 도움이 될 것이다.

Function FindColLetter(hdr_row As Integer, search_value As Variant) As String

    Dim search_rng As Range
    Dim found_cell As Range
    Dim col_letter As String
    
    Set search_rng = ActiveSheet.Rows(hdr_row)
    
    Set found_cell = search_rng.Find(What:=search_value, LookIn:=xlValues, LookAt:=xlWhole)
    
    If Not found_cell Is Nothing Then
        col_letter = Replace(found_cell.Cells.Address(False, False), hdr_row & "", "")
        FindColLetter = col_letter
    Else
        FindColLetter = "Value not found."
    End If

End Function

해더가 있는 데이터 프레임에서 특정 해더의 값을 찾아서 그 값이 몇 열에 있는지를 알파벳으로 반환한다.