web-dev-qa-db-ja.com

Excel VBA:一致を取得できません、エラー「WorksheetFunctionクラスのMatchプロパティを取得できません」

良いものすべてへの愛のために、私はこれを機能させることができないようです。上記のエラーが引き続き発生します。

このテーブルがあり、コードが他の列内のどこかのサブコードに一致するかどうかを確認しようとしていますが、エラーが発生しています。あなたの助けは大歓迎です。

enter image description here

Sub testing()

    Dim m1 As long
    Dim myrange As Range

    Set myrange = Worksheets("Sheet1").Range("B2:B23")

    For e = 2 To 23
        m1= Application.WorksheetFunction.Match(Cells(e, 1).Value, myrange, 0)

        If m1 > 0 Then
            Cells(e, 3).Value = "Yes"
        Else
            Cells(e, 3).Value = "No"
        End If
    Next e

MsgBox "Complete!"

End Sub
9
Humble Val

エラーをトラップする能力を高めるApplication.Match関数を使用します。 WorksheetFunction.Matchを使用する場合、一致するものが見つからないと、エラーが返されます。これが発生しています。

If Not IsError(Application.Match(Cells(e, 1).Value, myrange, 0)) Then
    'Do stuff when the match is found
    Cells(e, 3).Value = "Yes"
Else:
    Cells(e, 3).Value = "No"
End If

潜在的にCountIf関数を使用することもできます。

If Application.WorksheetFunction.CountIf(myRange, Cells(e,1).Value) > 0 Then
    Cells(e,3).Value = "Yes"
Else:
    Cells(e,3).Value = "No"
End If

これらのアプローチでは、m1変数を使用する必要はありません。特定する必要がある場合は、If/ThenステートメントのTrue部分内でこの変数を割り当てることができますwhere一致が見つかりました。

19
David Zemens

別のオプションと同様に、これはセルC2に以下の数式を入力し、C23にドラッグして行うこともできます。

=IF(COUNTIF($A$2:$A$23,B2)>=1,"YES","NO")
3
Jaycal