EXCEL 內置公式,計數效率是否快過用VBS?

本帖最後由 bongbong3481 於 2016-2-28 00:36 編輯

我有個EXCEL 表, 由A1:A15000  都系等於1,我用count(A1:A15000), 1,2秒就出到答案,但如果用以下VBS CODE 去COUNT, 等成1分鐘先出到答案,有冇人知道點解咁慢呢?

strFileName = "C:\Documents and Settings\KK\桌面\speed.xls"

Set oExcel = CreateObject("Excel.Application")
oExcel.visible = true
set osheet= oExcel.Workbooks.Open(strFileName)

lastrow=osheet.sheets("sheet1").Range("A1").CurrentRegion.Rows.Count
C=0
for  N=1 to lastrow
    if osheet.worksheets("sheet1").cells(N,1).value<>"" then
         C=C+1
    end if
next
msgbox "C=" & C

我有個EXCEL 表, 由A1:A15000  都系等於1,我用count(A1:A15000), 1,2秒就出到答案,但如果用以下VBS CO ...
bongbong3481 發表於 2016-2-27 22:12


Excel functions can be calculated in parallel across the number of cores/processors you have in your computer (this includes VBA functions called from Excel cells).

From http://stackoverflow.com/questio ... a-vs-excel-formulas

TOP

標題

回覆 2# snoopy11hk

你意思指只有excel內置既公式同埋由cell 使用既vba 可以用盡粒cpu?      Vbs 用吾盡?     

或者   如果要快,就要系vbs 調用excel 既內置公式?

TOP

回覆  snoopy11hk

你意思指只有excel內置既公式同埋由cell 使用既vba 可以用盡粒cpu?      Vbs 用吾盡?   ...
bongbong3481 發表於 2016-2-28 00:03



    seems so

TOP

回覆 4# snoopy11hk

我搵到方法解決VBS 效率問題, 睇D 大陸網站, 佢地先用一個數組(array)黎存放SHEET 內 range 既資料, 然後直接處理個數組(array)資料,唔直接處理原來 CELL既資料。 我試過用ARRAY 處理, 速度真系快左好多, 同用EXCEL既FORMULA差唔多。

TOP

回覆 1# bongbong3481

Excel 都 1,2 秒?師兄的電腦太慢了吧?

小弟唔熟 VBS, 但用 VBA 試過,和 Excel 一樣,都是 0 秒。

TOP

回覆 6# 狂蜂一號

SORRY!  發文時間沒用VBA測試, 只是用左VBS測試,我以為VBS同VBA會有一樣效果, 所以貪快偷賴

剛試左,原來結果唔系一樣,同一樣既CODE,VBA真系一秒, VBS 要一分鐘 (但改良左後 VBS 既CODE後,VBS同VBA速度一樣了)

TOP

回覆 7# bongbong3481

師兄已經找到關鍵所在。我想應該係 CODE 或演算法的問題。

TOP

回覆 8# 狂蜂一號

方法系已經搵到,但就系唔明點解同樣既CODE, VBS同VBA 速度差咁遠, 用VBS要另外再加料先快(如果用VBS,我要先將RANGE既資料放入ARRAY內,再處理ARRAY)

TOP