Board logo

標題: [發問] 關於 like 針對特定文字 刪除 [打印本頁]

作者: av8d    時間: 2023-2-12 16:16     標題: 關於 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
複製代碼
[attach]35833[/attach]

有刪除特定文字,但是無法一次性刪除,按了3次才刪完,
如果資料量多了,就不知道要按幾次,一直沒找出原因,謝謝前輩們的幫忙。
作者: 准提部林    時間: 2023-2-12 16:33

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

For i = 100 To 2 step -1

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

舉例//
當 i = 9 時, 刪去第9行...此時第10行變成第9行
下一回 i 已經是 10, 它檢查的是原資料的第11行了, 等于第10沒有檢查到~~
作者: av8d    時間: 2023-2-12 19:17

回復 2# 准提部林

原來如此,難怪前輩們都說迴圈盡量倒過來寫,原來是這個意思,受益良多,感激不盡!
作者: Andy2483    時間: 2023-2-13 09:21

本帖最後由 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
[attach]35838[/attach]

xU.EntireRow.Delete
https://learn.microsoft.com/zh-tw/office/vba/api/excel.range.entirerow
[attach]35839[/attach]




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)