【发布时间】:2017-06-19 15:32:24
【问题描述】:
我正在尝试获取一个单元格范围(具体为 B 列)并找到该范围内值小于零的单元格并清除这些单元格的内容。有没有办法在不遍历每个单元格的情况下做到这一点?该列是一个非常大的数据集,每周都会变长,因此循环需要大量时间。
下面是我正在使用的当前循环
Dim sht As Worksheet
Dim LastColumn As Long
Set sht = ThisWorkbook.Worksheets("Sheet1")
lastrow = sht.Cells.Find("*", SearchOrder:=xlByRows,
searchdirection:=xlPrevious).Row
for i=1 to lastrow
if sheets("time").cells(i, "B") then
sheets("time").cells(i, "B").clear
end if
next i
我尝试检查然后可能删除的单元格包含公式
编辑:标记为已接受的答案加快了进程,但仍需要循环。如果有人有任何比发布的内容更快的内容,请随时添加。
【问题讨论】:
-
您可以将数据读入一个数组,然后将任何小于零的值更改为空(或“”),然后重新输出该列。运行时间应少于 1 秒
-
也许在问题中添加您现有的循环代码。
-
我看不出循环不是您的最佳选择。
-
我知道你标记了
VBA,但你也可以在单元格上放置一个过滤器,过滤掉所有正值,然后清除剩余的可见单元格 -
@BruceWayne 我想过这个问题,但是我每周更新工作簿并且已经有一些 VBA 并且在我完成后很快就会传递给某人。由于很少需要手动操作,所以我试图找到一种自动化的方式来完成它。
标签: vba excel excel-2010