해더에서 원하는 값을 찾아 특정 값이 있는 열을 문자가 아닌 숫자 열 번호로 반환하는 코드입니다.
Function MatchKeyValue(keyValue As Variant, headerRow As Range) As Long
Dim cell As Range
Dim i As Long
For Each cell In headerRow.Cells
If IsNumeric(keyValue) And IsNumeric(cell.Value) Then
If CDbl(keyValue) = CDbl(cell.Value) Then
MatchKeyValue = cell.Column
Exit Function
End If
Else
If CStr(keyValue) = CStr(cell.Value) Then
MatchKeyValue = cell.Column
Exit Function
End If
End If
Next cell
MatchKeyValue = 0
End Function
if와 else로 복잡하게 나눈 이유는 application의 match함수를 사용할 경우 String type 숫자와 Int type 숫자를 서로 다른 것으로 파악하고 찾지 못하는 경우가 나타났기 때문입니다.
'vba' 카테고리의 다른 글
| 자주 쓰는 VBA 개체 : Range 개체(1) - Range 속성 (0) | 2023.08.04 |
|---|---|
| 자주 쓰는 VBA 패턴 (4) : VBA로 index match 함수 구현하기 (0) | 2023.08.02 |
| 자주 쓰는 VBA 패턴 (3) - 찾고 있는 값의 열 번호를 알파벳으로 반환 (0) | 2023.08.01 |
| 자주 쓰는 VBA 패턴 (2) - 마지막 행, 마지막 열 찾기 (0) | 2023.07.31 |
| 자주 쓰는 VBA 패턴 (1) - 찾는 값이 배열 안에 있는지 확인 (0) | 2023.07.30 |