返回列表 上一主題 發帖

如何用陣列寫大量資料運算

如何用陣列寫大量資料運算

如附件
於sheet1的b欄有300筆資料
於f欄也有300比資料
希望b欄乘上f欄的答案顯示於h欄
如何用陣列寫?

990903-1.rar (5.9 KB)

Sub yy()
[h2:h302] = [b2:b302*f2:f302]
End Sub

TOP

回復 2# oobird


    啥???
這樣就可以???
感恩喔~~~

TOP

很簡潔的寫法~~~

想請教版主的是
假設需求同原問題,但資料長度不確定,也就是:
B欄及F欄的資料有N列
B,F的乘積呈現於H欄
也能用此中括號的陣列寫法嗎?

謝謝解惑~

TOP

回復 4# gstone

中括號是OLE寫法
必須是常數名稱
不可使用變數
所以變動範圍的話你必須使用定義名稱
定義3個名稱
x=OFFSET(Sheet1!$B$2,,,COUNTA(Sheet1!$B:$B),)
y=OFFSET(Sheet1!$F$2,,,COUNTA(Sheet1!$B:$B),)
z=OFFSET(Sheet1!$H$2,,,COUNTA(Sheet1!$B:$B),)

程式碼
Sub nn()
[Z].Value = [x*y]
End Sub
學海無涯_不恥下問

TOP

謝謝Hsieh版主
已了解中括號有限制。

剛才測試6萬多筆資料
若是變動範圍
用定義名稱比用迴圏寫入陣列
速度快了5、6倍
呵~很好的方法~~~

TOP

試出不用定義名稱的寫法:
Range("H2:H" & [B65536].End(xlUp).Row) = [B2:B65536*F2:F65536]

雖不明其因,但計算結果及速度和定義名稱一樣。

TOP

        靜思自在 : 靜坐常恩己過、閒談莫論人非。
返回列表 上一主題