從例子中了解什麼是陣列:在vba裡陣列就是一組變數
這個是從今天0點開始已經過了多少秒的時間
for i = 2 to 200000
if range("g
" & i) = range("
n5") then '
每一次取值都要到range("n5")裡取值,所以很耽誤時間
k = k + range("
j" &i)
end if
next
range("p5
") =k
msgbox timer -t
end sub
優化1
sub ss2()優化2 這樣運算速度特別快dim i, k
dim str as string
t =timer
str = range("
n5") '
這樣就只取用一次
for i = 2 to 200000
if range("g
" & i) = str then '
從變數裡面取值
k = k + range("
j" &i)
end if
next
range("p5
") =k
msgbox timer -t
end sub
sub ss3()陣列的深入了解:靜態陣列dim i, k
dim str as string
dim arr() '陣列
t =timer
arr = range("
g1:j200000
") '
是二維的 arr(行,列)
str = range("
n5") '
這樣就只取用一次
for i = 2 to 200000
if arr(i,
1) = str then '
從變數裡面取值
k = k + arr(i, 4
) end if
next
range("p5
") =k
msgbox timer -t
end sub
sub test()再舉個例子:動態陣列dim arr(
1 to 4) '
在這裡定義陣列範圍,這個是一維的,是橫著的
arr(1) = "張三"
arr(
2) = "李四"
arr(
3) = "趙五"
range("b1
") = arr(2) '
就是 「李四」
range("
a10:d14
") = arr '
輸出是橫著的
end sub
sub test()查詢銷售冠軍:使用陣列作為輔助列,作為儲存空間,陣列可以直接用在函式裡dim arr()
arr = range("
a1:a5
") '
直接把放到陣列裡
range("
c1") = arr(2, 1
)end sub
計算出該組的最高銷售額及產品
再深入一步:在這了解redim 以及ubound和lbound的作用
sub test()排列組合計算匯款資訊:這裡用到了goto 方法來退出所有迴圈dim arr()
'dim裡面只能用常量
dim j, i as integer
j = range("
a65536
").end(xlup).row - 1
redim arr(
1 to j) '
重定義for i = 1 to jarr(i) = range("
b" & i + 1) * range("
c" & i + 1
)next
range("h3
range("h2
") = range("ah3
"), arr, 0) + 1
)msgbox ubound(arr)
'這裡是針對arr 有兩個方法計算arr的上限和下限,ubound是上限 lbound是下限
'可以結合for迴圈使用
end sub
通過陣列來優化
sub test()dim i, j, k, l as integer
t =timer
arr = range("
a1:a80")
for i = 2 to 80
for j = 2 to 80
for k = 2 to 80
for l = 2 to 80
if arr(i,
1) + arr(j, 1) + arr(k, 1) + arr(l, 1) = 124704
then
range("f3
") = arr(i, 1
) range("g3
") = arr(j, 1
) range("h3
") = arr(k, 1
) range("i3
") = arr(l, 1
) goto
100end if
next
next
next
next
100msgbox format(timer - t, "
0.00000")
end sub
vba 陣列(動態陣列)
主要內容 本文章主要介紹vba中,陣列的使用,特別介紹動態陣列的使用,並有簡單事例,幫助理解。陣列是我們經常用到的儲存資料的一種媒介,他到底是什麼呢?陣列是具有相同資料型別並且共享乙個名字的一組變數的集合。通俗的說,陣列是變數。陣列的宣告 可以用dim語句或者public語句生命陣列。如 dim p...
vba 陣列 陣列引數
關於賦值 我看了很多本書都沒有看到這樣子的,包括官方文件,所以我就寫了下來。sub a dim a dim c a array 1,2,3,4 這裡a後面的 可以給也可以不給 c a end sub寫法一 sub a paramarray a as variant paramarray 可以用byr...
VBA陣列賦值
先說一下,剛才乙個錯誤的操作,連儲存的草稿都沒了,這也太懸了。以後還是在本地寫好了再放上來。陣列是這樣賦值的 dim a2 10 as integer 10是可以使用的最大上標,這和c語言不太一樣 dim a3 2 to 10 as integer 也可以定義下標 dim a1 as integer...