作者ptguitar (佩蒂吉他)
看板Office
標題[算表] vba迴圈刪除類似字眼資料?
時間Tue Jun 6 14:34:09 2017
軟體: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
→ Linkey: 執行 for 迴圈中刪除 row 會改變 next ss 的原始位置 06/06 15:32
→ Linkey: 當有有關鍵字上下相連時,下一個就會跳過For迴圈不會執行 06/06 15:35
→ ptguitar: 所以說我把所有的row位置先讀出來再一起刪才對? 06/06 15:37
→ soyoso: 以for..next反序step為負的方式 06/06 16:01
感謝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
→ waiter337: 由屁股往回刪 06/06 19:28
→ waiter337: 如果照原來的方式,就必需插入一個假設刪除該行,就得在 06/06 19:29
→ waiter337: 該行重新再次掃瞄一次,直到沒有like才可以進行下一行 06/06 19:29
推 LBJisGod5566: 不錯欸 受用 06/07 20:23