【发布时间】:2012-11-13 15:50:14
【问题描述】:
我有一个 2 列的 Excel 电子表格,最后一行是 287983。在 A 列中有数字,如果单元格没有数字 NaN 则放置在那里。在 B 列中有日期。我正在尝试使用以下宏来删除 A 列中单元格具有NaN 的所有行:
Sub Rowdel()
Dim i As Long
For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
If Cells(i, 1) = "NaN" Then Cells(i, 1).EntireRow.Delete
Next i
End Sub
但是,当我运行上述代码时,NaN 单元格仍然存在。谁能建议为什么代码不起作用?
【问题讨论】:
-
您的代码对我有用。您是否需要使用工作表来限定单元格。例如
Worksheets("Sheet1").Cells(Rows.Count, 1)? -
这对我来说似乎很好用。一个潜在的问题可能是您的“NaN”单元格包含“NaN”以外的其他内容(不同的大小写、不同的基础数据类型等)。尝试在循环中添加
Debug.Print Cells(i, 1)并验证您得到的确实是“NaN”。 -
另一个建议是,在运行此代码时,右侧工作表未处于活动状态。此代码将只查看现在的活动工作表。所以添加一个正确的工作表参考
sheetx.Cells(i,... -
假设问题不是已经建议的工作表参考,请尝试
Trim(Lcase(Cells(i,1))) = "nan"。或使用StrComp()。有时字符串比较可能会很容易出错。