我希望在Excel(2003)中采用导入的数据转储并将其格式化为报告。我所做的大部分工作都涉及录制宏,然后在需要的地方自定义代码。我有一个需要纯代码的地方。基于单元格值删除整个行
我有一个SORTED列(D)列出了发生率的类型(例如:车辆火灾,中风,动物咬伤等)。我想阅读D列中的每个值,如果它不是我们正在寻找的几个值之一,请删除整行。
我已经试过的代码(即我在网上找到),并产生最接近的结果是什么,我需要的代码的多个版本是这样的:
Range("D:D").Select
Dim workrange As Range
Dim cell As Range
Set workrange = Intersect(Selection, ActiveSheet.UsedRange)
For Each cell In workrange
If ActiveCell.Value <> "VFIRE" _
And ActiveCell.Value <> "ILBURN" _
And ActiveCell.Value <> "SMOKEA" _
And ActiveCell.Value <> "ST3" _
And ActiveCell.Value <> "TA1PED" _
And ActiveCell.Value <> "UN1" _
Then ActiveCell.EntireRow.Delete
Next cell
End Sub
此代码删除大部分的名单( 〜原来的168行),但它只是删除行,直到它达到我想要的东西的第一个值。例如,当前数据转储没有“ILBURN”或“SMOKEA”的任何值,但是当第一次出现“ST3”时,宏停止。没有产生错误,它似乎认为它完成了。
我应该添加什么来通过整个列表调用宏?
当删除行时,通常的方法是从底部开始并工作*向上 - 然后当您删除一行时,您不会踩在自己的脚上。 –
从底部开始的逻辑是有道理的,但是在我尝试了几个我写在网上发现的代码版本之后,我仍然无法完成这项工作。你能否给我一些建议(使用上面的例子)?谢谢。 – user3613124
蒂姆,我能在rondebruin的网站上找到工作的代码。非常感谢你从底层开始寻找工作的想法。 – user3613124