Index 関数と Match 関数を使用して入力された列があり、値が見つからない場合は N/A 値になります。列のそのようなエラー値をすべて特別な値に置き換えられるようにしたいと考えています。これをVBAコードで実行したい。何か助けはありますか?
関数を IF ロジックで書き直したくありません。
次のようにして、VBAなしでこれを実際に行うことができます。
IFERROR(myIndexMatchFormula,"special value")
本当に VBA ソリューションが必要な場合は、以下のようなものを試してください。範囲内のすべてのエラー セルが検出され、選択したものに置き換えられます。If
ステートメントもループもありません。
Option Explicit
Sub replaceErrors()
Dim rng As Range
On Error Resume Next
Set rng = Range("A1:A10").SpecialCells(xlCellTypeFormulas, 16) ' -> replace with your specific range
rng.Value = "special values" '-> place what you want here
On Error GoTo 0
End Sub
Columns("E").SpecialCells(xlCellTypeFormulas, xlErrors).Value = ""
例として、列 E のすべてのエラーを置き換えることができます。ただし、残念ながら、specialcells は何も見つからない場合は常にエラーをスローするため、何らかの方法でこのエラーをキャッチする必要があります。on error ...
r
が調査する必要のある範囲である場合は、いつでも以下を使用して、セルの値が「N/A」であるかどうかを識別できます。
If r.Value = CVErr(xlErrNA) Then
... ' do something
Else
... ' do something else
Endif