[算表] vba迴圈刪除類似字眼資料?

看板Office作者 (佩蒂吉他)時間8年前 (2017/06/06 14:34), 8年前編輯推噓1(107)
留言8則, 5人參與, 最新討論串1/4 (看更多)
軟體:excel 2007以上 版本: 2007以上 我要把一整段有符合某字眼的刪除 Sub eachssdelete() Dim ss As Object lastrow = Range("A65536").End(xlUp).Row For Each ss In Range("A1:A" & lastrow) If ss.Text Like "*海外分行*" Or ss.Text Like "*機構名稱*" _ Or ss.Text Like "*工作表*" Then Rows(ss.Row).Delete End If Next ss End Sub 但是我都要按好幾次巨集執行才會刪光 不知道那邊還要改? 原始檔案:: https://drive.google.com/open?id=0BwCgrQhGgaw7RXByS2kxRnFjWTQ 巨集如下: Sub eachssdelete() Dim ss As Object lastrow = Range("A65536").End(xlUp).Row For Each ss In Range("A1:A" & lastrow) If ss.Text Like "*海外分行*" Or ss.Text Like "*機構名稱*" _ Or ss.Text Like "*工作表*" Then Rows(ss.Row).Delete End If Next ss End Sub -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.250.67.77 ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1496730852.A.51C.html

06/06 15:32, , 1F
執行 for 迴圈中刪除 row 會改變 next ss 的原始位置
06/06 15:32, 1F

06/06 15:35, , 2F
當有有關鍵字上下相連時,下一個就會跳過For迴圈不會執行
06/06 15:35, 2F

06/06 15:37, , 3F
所以說我把所有的row位置先讀出來再一起刪才對?
06/06 15:37, 3F

06/06 16:01, , 4F
以for..next反序step為負的方式
06/06 16:01, 4F
感謝S大 真的要這樣寫 後來可以 Sub test001() Dim YY, XX, ZZ YY = "*海外分行*" XX = "*機構名稱*" ZZ = "*工作表*" For i = [A65536].End(xlUp).Row To 1 Step -1 If Range("A" & i).Text Like YY Or Range("A" & i).Text Like XX Or Range("A" & i).Text Like ZZ Then Rows(i).Delete End If Next End Sub ※ 編輯: ptguitar (60.250.67.77), 06/06/2017 16:21:40

06/06 19:28, , 5F
由屁股往回刪
06/06 19:28, 5F

06/06 19:29, , 6F
如果照原來的方式,就必需插入一個假設刪除該行,就得在
06/06 19:29, 6F

06/06 19:29, , 7F
該行重新再次掃瞄一次,直到沒有like才可以進行下一行
06/06 19:29, 7F

06/07 20:23, , 8F
不錯欸 受用
06/07 20:23, 8F
文章代碼(AID): #1PDapaKS (Office)
文章代碼(AID): #1PDapaKS (Office)