Sub Match()
// match_type
// lookup_array에서 lookup_value를 찾는 방법(-1, 0, 1)
// 1 lookup_value보다 작거나 같은 값 중에서
최대값을 찾습니다.
// Lookup_array는 반드시
오름차순(...-2, -1, 0, 1, 2,...A-Z, FALSE, TRUE)으로 정렬되어
있어야 합니다.
// 0 lookup_value와 같은 첫째 값을 찾습니다.
// Lookup_array는 임의의 순서이어도 됩니다.
// -1 lookup_value보다 크거나 같은 값 중 가장
작은 값을 찾습니다.
// Lookup_array는 TRUE,
FALSE, Z-A, ...2, 1, 0, -1, -2, ..., 등으로 내림차순으로 입력되어야
합니다.
// match_type을 생략하면 1로 간주합니다.
Dim lookup_array_asc
Dim lookup_array_des
Dim lookup_value
Dim match_type
// match_type을 1로 사용하기 위해
오름차순으로 정렬된 배열
lookup_array_asc = Array(25, 38, 40, 41)
With Application.WorksheetFunction
lookup_value = 39
match_type = 1
Debug.Print .Match(lookup_value,
lookup_array_asc, match_type)
// match_type을 0으로 하여 정확한
값을 찾음
lookup_value = 40
match_type = 0
Debug.Print .Match(lookup_value,
lookup_array_asc, match_type)
End With
// match_type을 -1로 사용하기 위해
내림차순으로 정렬된 배열
lookup_array_des = Array(41, 40, 38, 25)
With Application.WorksheetFunction
lookup_value = 40
match_type = -1
Debug.Print .Match(lookup_value,
lookup_array_des, match_type)
lookup_value = 41
match_type = 0
Debug.Print .Match(lookup_value,
lookup_array_des, match_type)
// 다음은 에러가 나는 코드입니다.
// 1.lookup_array 인수 배열이 match_type에 맞게 정렬되어
있지 않은 경우
// 2.일치하는 값을 못 찾은 경우
// ' Match속성을
구할 수 없다'는 런타임에러가 발생.
lookup_array 인수 배열이 match_type에 맞게 정렬되어 있지 않은 경우
lookup_value = 40
match_type = -1
Debug.Print .Match(lookup_value,
lookup_array_asc, match_type)
일치하는 값을 못 찾은 경우
lookup_value = 45
match_type = 0
Debug.Print .Match(lookup_value,
lookup_array_asc, match_type)
End With
End Sub |