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

看板Office作者 (深呼吸~)時間10年前 (2016/03/15 22:00), 編輯推噓0(0013)
留言13則, 2人參與, 最新討論串1/2 (看更多)
軟體: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 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.39.49.112 ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1458050428.A.3CD.html

03/15 23:10, , 1F
用evaluate試試
03/15 23:10, 1F

03/16 09:09, , 2F
我令變數a=Evaluate("{""" & Join(ary2, """;""") & "
03/16 09:09, 2F

03/16 09:09, , 3F
""}")
03/16 09:09, 3F

03/16 09:10, , 4F
並將sumif函數中的ary2以a變數來取代
03/16 09:10, 4F

03/16 09:10, , 5F
但還是失敗了
03/16 09:10, 5F

03/16 09:12, , 6F
但是a有成功轉變為與amount一樣的格式
03/16 09:12, 6F

03/16 11:06, , 7F
想到的是用evaluate用於sumif上
03/16 11:06, 7F

03/16 11:25, , 8F
因帶入function為range型態是否改用sumifs的方式加總
03/16 11:25, 8F

03/16 17:56, , 9F
可能要用evaluate(sum(if...的方式
03/16 17:56, 9F

03/16 17:56, , 10F
我再試試
03/16 17:56, 10F

03/16 18:36, , 11F
抱歉是用於sum(if上,如原po先前VBA陣列運算問題(SUMIF)的
03/16 18:36, 11F

03/16 18:36, , 12F
回文方式
03/16 18:36, 12F

03/17 17:05, , 13F
已測試成功,謝謝!
03/17 17:05, 13F
文章代碼(AID): #1Mw1LyFD (Office)
文章代碼(AID): #1Mw1LyFD (Office)