返回列表 上一主題 發帖

[發問] 關於 like 針對特定文字 刪除

[發問] 關於 like 針對特定文字 刪除

本帖最後由 av8d 於 2023-2-12 16:18 編輯
  1. For i = 2 To 100
  2.         If Cells(i, 9) Like "已超時*" = True Then Rows(i).Delete
  3.     Next
複製代碼
刪除.rar (18.54 KB)

有刪除特定文字,但是無法一次性刪除,按了3次才刪完,
如果資料量多了,就不知道要按幾次,一直沒找出原因,謝謝前輩們的幫忙。

本帖最後由 Andy2483 於 2023-2-13 09:30 編輯

回復 1# av8d


    謝謝前輩發表此主題與範例
為了獲取積分,雖然 准提部林前輩已經給正確答案,後學厚臉皮的想回答
後學建議:

Option Explicit
Sub 收集符合條件的儲存格集_一次移除所在的列()
Dim xU As Range, i&
Set xU = ActiveSheet.UsedRange.Item(ActiveSheet.UsedRange.Count + 1)
For i = 2 To 100
   If Cells(i, 9) Like "已超時*" = True Then Set xU = Union(xU, Cells(i, 9))
   'https://learn.microsoft.com/zh-tw/office/vba/api/excel.application.union
Next
Application.Goto xU
Application.Wait (Now + TimeValue("0:00:3"))
xU.EntireRow.Delete
End Sub


Application.Goto xU
https://learn.microsoft.com/zh-tw/office/vba/api/excel.application.goto


xU.EntireRow.Delete
https://learn.microsoft.com/zh-tw/office/vba/api/excel.range.entirerow
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 2# 准提部林

原來如此,難怪前輩們都說迴圈盡量倒過來寫,原來是這個意思,受益良多,感激不盡!

TOP

本帖最後由 准提部林 於 2023-2-12 16:36 編輯

For i = 100 To 2 step -1

刪行, 要反向,
否則 每刪一次,  i 不變動, 會少刪//

舉例//
當 i = 9 時, 刪去第9行...此時第10行變成第9行
下一回 i 已經是 10, 它檢查的是原資料的第11行了, 等于第10沒有檢查到~~

TOP

        靜思自在 : 吃苦了苦、苦盡廿來,享福了福、福盡悲來。
返回列表 上一主題