Board logo

標題: 如何用陣列寫大量資料運算 [打印本頁]

作者: oak0723-1    時間: 2010-9-3 20:58     標題: 如何用陣列寫大量資料運算

如附件
於sheet1的b欄有300筆資料
於f欄也有300比資料
希望b欄乘上f欄的答案顯示於h欄
如何用陣列寫?
作者: oobird    時間: 2010-9-3 21:22

Sub yy()
[h2:h302] = [b2:b302*f2:f302]
End Sub
作者: oak0723-1    時間: 2010-9-3 21:51

回復 2# oobird


    啥???
這樣就可以???
感恩喔~~~
作者: gstone    時間: 2010-12-12 20:35

很簡潔的寫法~~~

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

謝謝解惑~
作者: Hsieh    時間: 2010-12-12 22:56

回復 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
作者: gstone    時間: 2010-12-14 00:27

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

剛才測試6萬多筆資料
若是變動範圍
用定義名稱比用迴圏寫入陣列
速度快了5、6倍
呵~很好的方法~~~
作者: gstone    時間: 2010-12-14 00:57

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

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




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)