良いものすべてへの愛のために、私はこれを機能させることができないようです。上記のエラーが引き続き発生します。
このテーブルがあり、コードが他の列内のどこかのサブコードに一致するかどうかを確認しようとしていますが、エラーが発生しています。あなたの助けは大歓迎です。
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
エラーをトラップする能力を高める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一致が見つかりました。
別のオプションと同様に、これはセルC2に以下の数式を入力し、C23にドラッグして行うこともできます。
=IF(COUNTIF($A$2:$A$23,B2)>=1,"YES","NO")