我一直在爲此奮鬥了幾個小時,並認爲現在可能是時候尋求幫助。如何刪除不包含特定值的所有行?
我有數百個電子表格,我想手動打開,然後使用宏簡化。每份電子表格都有一份醫院清單(約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