- ベストアンサー
#N/Aの文字を削除するには
お世話になっております。 #N/Aの文字を含む行を削除するため以下のようなマクロ(Excel)を組みました。 Dim i As Long With Range("C1") For i = .CurrentRegion.Rows.Count To 1 Step -1 If .Offset(i, 2) = "#N/A" Then .Offset(i, 5).EntireRow.Delete Next i End With 当然かもしれませんが、IF文の ".offset(i,2)="#N/A""のところで「型が一致しません」とエラーが出てしまいます。 シート上で#N/Aは数式でなく値として記録されています。 どのようにすればエラーを回避できるでしょうか。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 IsNA はワークシート関数なので、Application が必要ですね。 If Application.IsNA(.Offset(i, 2)) Then または、 If VarType(.Offset(i, 2)) = vbError Then とか。 #N/A エラーかどうか、エラーの種類チェックが不要なら SpecialCells で数式の エラー値を拾った方が早いと思いますよ。 C 列から列方向に Offset 2 だから E 列でエラー値がある行を削除するのかな? Dim rTarget As Range On Error Resume Next Set rTarget = Columns("E").SpecialCells(xlCellTypeFormulas, xlErrors) If Not rTarget Is Nothing Then rTarget.EntireRow.Delete Shift:=xlShiftUp End If
その他の回答 (1)
- chie65536
- ベストアンサー率41% (2512/6032)
If ISNA(.Offset(i, 2)) Then
お礼
chie65536さんありがとうございます。ISNA関数参考になりました。
お礼
KenKen_SPさん、前回に引き続き今回もありがとうございました。 SpecialCellsの方は条件の"xlCellTypeFormulas"を"xlCellTypeConstants"にしたところうまくいきました。