我一直在为此奋斗了几个小时,并认为现在可能是时候寻求帮助。如何删除不包含特定值的所有行?
我有数百个电子表格,我想手动打开,然后使用宏简化。每份电子表格都有一份医院清单(约400份),我想限制每份电子表格仅显示100家医院的数据。医院由三个字母缩写词表示,该列在不同位置(行/列)变化,但总是标题为“代码”。
因此,举例来说,我想宏观上删除不包含值“代码”,“ABC”,“DEF”,“GEH”的所有行等
我不是普通的Excel用户,只需要用它来解决这个问题...!
我曾尝试连接的代码,但它有几个错误的:
- 它删除包含“ABC”的行也是如此。如果我定义范围(“B1:B100”),但如果范围跨多个列(例如“A1:E100”),则此问题消失。令人沮丧的是,电子表格中的“代码”列有所不同。
- 由于我想节省100个医院代码,所以感觉好像应该有比使用“或”运算符100次更好的方法。
任何人都可以帮忙吗?
Sub Clean()
Dim c As Range
Dim MyRange As Range
LastRow = Cells(Cells.Rows.Count, "D").End(xlUp).Row
Set MyRange = Range("A1:E100")
For Each c In MyRange
If c.Value = "Code" Then
c.EntireRow.Interior.Color = xlNone
ElseIf c.Value = "ABC" Or c.Value = "DEF" Then
c.EntireRow.Interior.Color = vbYellow
Else
c.EntireRow.Delete
End If
Next
End Sub
删除行时,您会希望使用反向步进索引循环而不是'For Each'循环,否则会产生很多问题。 – braX
这是使用[Select Case](https://msdn.microsoft.com/VBA/Language-Reference-VBA/articles/select-case-statement)语句的最佳示例 – tigeravatar
@tigeravatar为什么? – Tom