VBA,Clear#N / A来自指定的列

问题描述 投票:0回答:1

我希望从我指定的列中清除所有#N / A(非公式):

Sub ClearNA()

    With Worksheets("database")
    Set rng1 = Range( _
                 Range("A1:FR1").Find("columnname").Offset(1), _
                Range("A1:FR1").Find("columnname").Offset(1).End(xlDown))

    Cells.Replace "#N/A", "", rng1

    End With

End Sub

我想用空白替换它们。我在线上遇到类型不匹配

Cells.Replace "#N/A", "", rng1

更新:

   Sub DeleteStringFromColumn(SearchString As String, _
                               ColumnNameOrNumber As Variant, _
                               MySheet As Worksheet, _
                               Optional ReplaceWith = vbNullString)
    With MySheet
        .Range(.Cells(1, ColumnNameOrNumber), .Cells(1048576, ColumnNameOrNumber)).Replace SearchString, vbNullString
    End With
End Sub


Sub clearNA()

    'DeleteStringFromColumn "#N/A", 1, ThisWorkbook.Sheets(1) 'ColumnNumber
    DeleteStringFromColumn "#N/A", "ProductType", ThisWorkbook.Sheets("database") 'ColumnName
End Sub
vba
1个回答
1
投票

我将这个问题包装成一个小子程序。请参阅示例sub以了解用法。

Sub DeleteStringFromColumn(SearchString As String, _
                               ColumnNameOrNumber As Variant, _
                               MySheet As Worksheet, _
                               Optional ReplaceWith = vbNullString)
    With MySheet
        .Range(.Cells(1, ColumnNameOrNumber), .Cells(1048576, ColumnNameOrNumber)).Replace SearchString, vbNullString
    End With
End Sub

Sub Example()
    DeleteStringFromColumn "#N/A", 1, ThisWorkbook.Sheets(1) 'ColumnNumber
    DeleteStringFromColumn "#N/A", "B", ThisWorkbook.Sheets(1) 'ColumnName
    DeleteStringFromColumn "#N/A", ThisWorkbook.Names("ProductType").RefersToRange.Column, ThisWorkbook.Sheets(1) 'Getting Column Number from Named Range
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.