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

作者: ptguitar (佩蒂吉他)   2018-01-08 14:57:32
上次有問類似問題
現在遇到困難就是
遇到超大量資料 數十萬筆
而要刪除的條件很多
速度很慢
不知道有什麼更快速寫法
===
※ 引述《ptguitar (佩蒂吉他)》之銘言:
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
作者: soyoso (我是耀宗)   2018-01-08 15:17:00
如以進階篩選range.advancedfilter,非變數yy、xx、zz的資料到其他工作表或範圍看是否也符合要保留的資料
作者: ptguitar (佩蒂吉他)   2018-01-08 16:29:00
感謝S大指點~
作者: soyoso (我是耀宗)   2018-01-08 18:37:00
如以篩選的方式,測試了一下以55萬筆*5欄的資料,來取符合條件為36萬8千多筆,時間63~76秒https://i.imgur.com/7oVnwVt.jpg也有要68秒多才完成的 https://i.imgur.com/8LkhaIR.jpg相同資料以sql來取,時間27~28秒多https://i.imgur.com/FkeYhC9.jpg最後加上a:j刪除,時間則為30秒多https://i.imgur.com/6kzKk3Y.jpg以上是模擬55萬筆資料的速度(因電腦而異),如果n大所提供方式效率更好的話,就請忽略上述回文如可以access來協助取出的話,速度上會更快速
作者: newacc (XD)   2018-01-08 21:09:00
s大,我也蠻好奇效率的差別的,方便給個code比較一下嗎?
作者: soyoso (我是耀宗)   2018-01-08 21:54:00
進階篩選方面是range.advancedfilter以copy,條件是以g1:i2,複製位置k1另一個是以以range copyfromrecordset參數data則是以database.execute來執行sql字串的部分,字串方面則是以where not like來當條件,篩選不等於的部分

Links booklink

Contact Us: admin [ a t ] ucptt.com