[算表] VBA如何將陣列轉為range

作者: nazomegami (深呼吸~)   2016-03-15 22:00:26
軟體:excel vba
版本:2010
各位版大好,以下我有一個自訂函數,其中ary2(i,0)為不同字串之組合(projectx、numx
等),我想要在一個迴圈裡使用sumif,但是在這裡ary2參數似乎是要為range型態,我不想
要在儲存格中多一欄來記錄此一組合字串。
不知道這樣的問題是否有解法? 謝謝!!
Function inventory_period(in_date As Range, cur_date As Range, _
project As Range, num As Range, srl As Range, _
item_name As Range, amount As Range) As Long
Dim in_datex, cur_datex, projectx, numx, srlx, item_namex, amountx, str1
Dim ary1$(), ary2(10, 1), ary3(10)
Dim i&, w&
in_datex = in_date
cur_datex = cur_date
projectx = project
numx = num
srlx = srl
item_namex = item_name
amountx = amount
For i = 1 To UBound(projectx)
ary2(i, 0) = projectx(i, 1) & numx(i, 1) & srlx(i, 1) & item_namex(i, _
1)
ary2(i, 1) = cur_datex - in_datex(i, 1)
Next
For i = 1 To UBound(projectx)
If InStr(str1, ary2(i, 0)) = 0 Then
w = w + 1
str1 = str1 & "," & ary2(i, 0)
ary3(w) = WorksheetFunction.SumIf(ary2, ary2(i, 0), amount)
End If
Next
End Function
作者: soyoso (我是耀宗)   2016-03-15 23:10:00
用evaluate試試
作者: nazomegami (深呼吸~)   2016-03-16 09:09:00
我令變數a=Evaluate("{""" & Join(ary2, """;""") & """}")並將sumif函數中的ary2以a變數來取代但還是失敗了但是a有成功轉變為與amount一樣的格式
作者: soyoso (我是耀宗)   2016-03-16 11:06:00
想到的是用evaluate用於sumif上因帶入function為range型態是否改用sumifs的方式加總
作者: nazomegami (深呼吸~)   2016-03-16 17:56:00
可能要用evaluate(sum(if...的方式我再試試
作者: soyoso (我是耀宗)   2016-03-16 18:36:00
抱歉是用於sum(if上,如原po先前VBA陣列運算問題(SUMIF)的回文方式
作者: nazomegami (深呼吸~)   2016-03-17 17:05:00
已測試成功,謝謝!

Links booklink

Contact Us: admin [ a t ] ucptt.com