Application.Match
을 사용하여 arr
배열에 적어도 1 개의 "아니오"가 있는지 찾을 수 있습니다.
Option Explicit
Sub CheckArray()
Dim arr As Variant
Dim Res As Variant, r As Variant
Dim Result As String
' test #1: at least 1 "No" or "-" in array
arr = Array("Yes", "-", "Yes", "NA", "Yes")
Res = Application.Match(Array("No", "-"), arr, 0)
For Each r In Res
Result = "Yes" ' init value
If Not IsError(r) Then ' <-- at least 1 result of "-" or "No" found
Result = "No"
Exit For
End If
Next r
' === The result is "No" ===
' test #2: there are no "No" or "-" in the array
arr = Array("Yes", "NA", "Yes", "NA", "Yes")
Res = Application.Match(Array("No", "-"), arr, 0)
For Each r In Res
Result = "Yes" ' init value
If Not IsError(r) Then ' <-- at least 1 result of "-" or "No" found
Result = "No"
Exit For
End If
Next r
' === The result is "Yes" ===
End Sub
점심 시간에 빵과 버터! :/ –
필자는 어떤 전제 조건없이 테스트 케이스를 포함 해 자체적으로 대답한다는 사실을 특히 좋아합니다. 굉장해! – Ralph
이것은 지옥처럼 느립니다! 'Application.Match'와 같은 셀 함수 사용을 피하십시오. 셀 묶음을 통한 루프가 훨씬 빠릅니다. 저는 여러분의 함수와 30000'yes'로 테스트를 실행하고 30001에서 평균 7-8 초 만에'no'를 테스트합니다. 그리고 내 대답 0.4 초 같은 루프와 동일! –