您好:
目前有 表1
起 迄
100 110
200 300
表2
單據 需求
A001 30
A002 60
最終結果
單據 需求
A001 30 100 110
200 210
A002 50 211 260 因為超過50張 ,所以 換下一個
261 270
我想要再VBA 先 計算做成一個二維陣列
再把他填到 sheet中, 不然 要找多個地方去計算
但目前 表2 的需求row 筆數 不固定
所以想請問
要如何做一個 動態 二維陣列
篩進去 最終結果
謝謝
在BA中宣告二維陣列時不可以使用變量為陣列的列數及行數,一定要常數。
例如:
Dim x as Integer
Dim Arr(x) as Integer --> 錯誤,必需是常數運算式
不能用Arr(x)來宣告陣列,必需把x換成常數。
但是你可以宣告一個65536列的二維陣列,用不到那麼多列就不管他了,不需要用變量來控制宣告陣列。
例如:
Dim Arr(65536, 65536)
Dim x, y
x = 3 <--可以是運算式
y = 100 <--可以是運算式
Arr(x, y) = 1000
這樣子先宣告固定索引的陣列,再用運算方式指定陣列元素。
有很多種方式來達到你的要求,看使用的程式語言的特性來變通運用囉。
Dim invoices()
ReDim invoices(1, 2)
invoices(1, 2) = 1
MsgBox invoices(1, 2)
# ReDim Preserve保留原陣列資料
# 只能動後面的維度,且只能增加
ReDim Preserve invoices(1, 3)
MsgBox invoices(1, 2)
這樣?
excel VBA用這個限制很大,如果你是用office 365可以考慮用python in excel
https://support.microsoft.com/zh-tw/office/%E5%9C%A8-excel-%E7%B9%AA%E5%9C%96%E5%92%8C%E5%9C%96%E8%A1%A8%E4%B8%AD%E5%BB%BA%E7%AB%8B-python-798b5e8d-ce45-4451-8da3-f269cdad5cff
或power query