我有大量存儲在一個CSV文件(約60MB)的數據,其具有鄰近名名稱和兩個日期即VBA:雙人間遍歷數據量非常大的
A1name1 B1date1 C1date2
A2name2 B2date1 C2date2
列表
我有有名稱的列表另一個文件:
names1
names2
names3
names4
我想舉個例子names1,通過名字的大數據庫搜索,如果names1發現返回日期1和日期2。我已經做了這個使用雙循環。僞因爲這是如下:
For i = 1 to SMLendofrow
for j = 1 to LRGendofrow
if cells(i,"A").value = lrgwkbook.wrksheet.cells(j,"A").value then
cells(i,"B").value =lrgwkbook.wrksheet.cells(j,"B").Value
cells(i,"C").value =lrgwkbook.wrksheet.cells(j,"C").Value
end if
next j
next i
下面這段代碼完美的作品不過那簡直是太長時間。由於具有所有名稱的大型工作簿非常大,因此需要大約10分鐘來搜索所有名稱。這是更有效的方法嗎?我已經使用python作爲替代方案,並在2分鐘內完成它,但我想要特別針對VBA。
謝謝
你有沒有考慮推範圍爲數組,然後直接比較陣列而不是迭代單元格?應該更快。此外,考慮嘗試[codereview.se]這個問題,因爲這是正確的地方優化代碼已經工作... – Dave
道歉不知道。我會給陣列方法一個鏡頭。 – james1395
@ james1395在我的回答下面試試我的代碼,你可以使用'Match'功能並保存內部循環。讓我知道這是否幫助你在你的評論中幫助你 –