VBA,不适用';从指定列中删除
我希望清除我指定列中的所有不适用项(非公式):VBA,不适用';从指定列中删除,vba,Vba,我希望清除我指定列中的所有不适用项(非公式): 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.Repla
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
我把这个问题包装成一个小的子程序。有关用法,请参见示例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
在哪里可以定义列名?如果我想从A列中删除N/A,我是否只需执行l
.Range(.Cells(1,1)
即可?请参见编辑:)您可以将其称为DeleteStringFromColumn“#N/A”,1,ThisWorkbook.sheetNamehere”(“MySheetNameHere”)
在.Range(.Cells(1,ColumnNameOrNumber),.Cells(1048576,ColumnNameOrNumber)).替换SearchString,vbNullString
将使用我得到的更新我的代码。ProductType
不是有效的列引用。它必须是一个数字或字母。例如,A列为1,B列为“B”。ProductType
是命名范围吗?如果是这样的话,类似这样的操作将有效DeleteStringFromColumn“#N/A”,ThisWorkbook.Names(“ProductType”)。referestorange.Column,ThisWorkbook.Sheets(1)
没问题!很高兴这有帮助:)