复制值并排除 #N/A 单元格



我有以下代码,可以从一个 excel 工作表中复制单元格并将特殊值粘贴到文本文件中。

现在从我正在复制的工作表中,我有很多包含 #N/A 的单元格。

任何人都可以建议如何排除这些细胞吗?

谢谢

Private Sub CommandButton3_Click()
Dim i As Long
Dim wb As Workbook
Dim NewWB As Workbook
Dim saveFile As String
Dim WorkRng As Range

On Error Resume Next
i = Sheets(1).Range("W158:W" & Range("W158").End(xlDown).Row).Rows.Count
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set wb = ActiveWorkbook
Set NewWB = Application.Workbooks.Add
Thispath = wb.path
wb.Sheets(2).Range("W158:W" & i + 5).Copy
NewWB.Worksheets(1).Range("A1").PasteSpecial Paste:=xlPasteValues
NewWB.SaveAs filename:=Thispath & "textfile.txt", FileFormat:=xlText, 
CreateBackup:=False
NewWB.Close
Application.CutCopyMode = False
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

我能想到的唯一方法是做一个基本的 for 循环来单独遍历所有单元格并检查它们的值

For Each cell In activehseet.Range("W158:W" & i + 5)
With cell
If .Value = "#NA" Then
Exit Sub
Else
.Copy
'code to paste here
End With
Next cell

不幸的是,这将需要相当长的时间才能运行,并且数据库的大小越大,这只会变得更长。我建议丢失任何未使用的行/列以加快速度。

但是,这可能是解决问题的最简单方法

使用数组是可能的,但由于我不是数组操作专家,所以我不确定。我相信比我聪明得多的人可以帮助你度过难关

希望这有助于您入门。好问题!

您可以尝试将公式包装在IFERROR中,只需选择要包装的所有单元格并运行以下宏:

Sub WrapFormulasWIthIFERROR()
Dim Cell As Range
For Each Cell In Selection
If Cell.HasFormula Then
If Left(Cell.Formula, 9) <> "=IFERROR(" Then
Cell.Formula = "=IFERROR(" & Mid(Cell.Formula, 2) & ","""")"
End If
End If
Next
End Sub

如果单元格值为 N/A,则结果将为空单元格。请注意不要选择整个工作表,因为它将永远运行。

最新更新