엑셀 VBA #28 / 워크시트 함수 [VBA] - Match이용
1. 목적 : VBA내에서 워크시트 함수 사용법 습득
2. 구조
Application.WorksheetFunction.함수명
WorksheetFunction.함수명
Application.함수명
**Best 구조 : Application.함수명
3. 활용
위 표에서 C로 시작되는 제품코드는 원본자료 A2:A9영역 중 몇 번째 있는지를 메세지 박스로 구현하면
MsgBox Application.WorksheetFunction.Match("C*", Range("A2:A9"), 0)
4번째 행에 있다고 나온다.
그러면 D로 시작하는 제품코드는 어디있는지 보자...
MsgBox Application.WorksheetFunction.Match("D*", Range("A2:A9"), 0)
원본자료의 제품코드에는 D로 시작하는 코드가 없기 때문에 오류가 발생한다.
위와 같은 오류 발생시 프로시져를 종료시키는구문은 다음과 같다.
If IsError(Application.WorksheetFunction.Match("D*", Range("A2:A9"), 0)) Then
Exit Sub
End If
하지만 여전히 오류 메세지가 나온다.....
이럴 때 아래 구문처럼 WorksheetFunction 지우면 오류 발생 메세지가 나오지 않는다.
그래서 2항에서 Best 구조는 Application.함수명라고 했던 것이다.
If IsError(Application.WorksheetFunction.Match("D*", Range("A2:A9"), 0)) Then
Exit Sub
End If
4. 심화
Dim rs As Range
Dim r As Long
Set rs = Range("B2:B9")
If IsError(Application.Match(Application.Min(rs), rs, 0)) = False Then
r = Application.Match(Application.Min(rs), rs, 0)
Range("B10") = Cells(r + 1, "A")
End If
Application. Match(Application.Min(rs), rs, 0)) 이해.....
Min함수를 이용하여 B2:B9영역에서 최소값을 찾는다.
B2:B9영역에서 찾은 최소값에 매칭(Matching)하는 행위치를 찾는다.
https://www.youtube.com/watch?v=RAqB6wkP5SA&list=PLfxvqpVCYZ8e0qlyc_FU46neoWjO7yTWj&index=28
'엑셀로 풀어가는 세상' 카테고리의 다른 글
엑셀 VBA #32 / 자동필터_1 [VBA] (0) | 2023.12.14 |
---|---|
엑셀 VBA #31 / 정렬_2 [VBA] - 예제 (0) | 2023.12.14 |
엑셀 VBA #30 / 정렬_1 [VBA] (0) | 2023.12.14 |
엑셀 VBA #29 / VBA함수(split) [VBA] (0) | 2023.12.13 |
엑셀 VBA #27 / 배열 [VBA] - 배열 (0) | 2023.12.13 |
엑셀 VBA #26 / For Each~Next_2 [VBA] - New Collection (0) | 2023.12.13 |
엑셀 VBA #25 / For Each~Next_1 [VBA] - 시트숨기기 (0) | 2023.12.13 |
엑셀 VBA #24 / For~Next_4 [VBA] - 시트 핸들링 (0) | 2023.12.13 |