Re: [算表] VBA Function變數定義問題
謝謝S大的回覆,第二個版本比較簡潔,而且我測試成功,第一個版本是我原本的結構,
後來結果還是失敗。不過這裡我還是有幾個問題想要請教:
1.item_range一開始沒有定義它是二維陣列,為什麼後來又要用item_range(i,1),而且
如果不這樣用還跑不出結果。
2.sub模式有逐步執行的功能,但function模式似乎沒有? 沒有辦法看到分段執行結果真
的很難偵錯。
3.在function模式中修改語法後如何使儲存格中的值重新計算?
以上問題請多指教,謝謝!!
※ 引述《nazomegami (深呼吸~)》之銘言:
: 軟體:excel vba
: 版本:2010
: 各位大大好,以下我有一個function,item_range為儲存格(如A1:A10),內容為文字串,
: 如"A", "B", "A", "B", "B", "C", "B", "C", "D", "B",而number_range亦為儲存格
: (如B1:B10),內容為數字,如1, 2, 3, 4, 5, 6, 7, 8, 9, 10。
: 今天想要計算各item_range的項目(以取唯一值)之累加金額,並回傳金額第k大(rank_
: order)之項目名稱,我之前以虛擬陣列在Sub中執行都沒有問題,但是改以Function就
: 執行不出結果,想要請問一下我哪裡做錯了?(變數定義?) 謝謝!
: Function inventory_rank(item_range() As Variant, number_range() As Variant,
: rank_order As Integer) As String
: Dim c, d, str1, str2
: Dim ary1$(), ary2(100), ary3(100)
: '求算資料筆數(陣列上限+1)
: c = UBound(item_range)
: '若某字串a(i)在組合字串(str)中沒有出現才會被加入組合字串(str)中
: For i = 0 To c
: If InStr(str1, item_range(i)) = 0 Then
: str1 = str1 & "," & item_range(i)
: End If
: Next
: '將第2位開始之字串轉換為陣列
: ary1 = Split(Mid(str1, 2), ",")
: '求算不重複項目之個數(陣列上限+1)
: d = UBound(ary1)
: '求算不重複項目之累加金額
: For i = 0 To d
: ary2(i) = ary1(i)
: ary3(i) = Evaluate("sum(if({""" & Join(item_range, """,""") & """}="""
: & ary1(i) & """, {" & Join(number_range, ",") & "}))")
: Next
: '求算第k位金額之項目名稱
: inventory_rank = Application.WorksheetFunction.Index(ary2, Application.
: WorksheetFunction.Match(Application.WorksheetFunction.
: Large(ary3, rank_order), ary3, 0))
: End Function
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.39.54.158
※ 文章網址: https://www.ptt.cc/bbs/Office/M.1457011995.A.2EE.html
→
03/03 23:33, , 1F
03/03 23:33, 1F
→
03/03 23:33, , 2F
03/03 23:33, 2F
→
03/03 23:34, , 3F
03/03 23:34, 3F
→
03/03 23:34, , 4F
03/03 23:34, 4F
→
03/03 23:34, , 5F
03/03 23:34, 5F
→
03/03 23:38, , 6F
03/03 23:38, 6F
→
03/03 23:51, , 7F
03/03 23:51, 7F
→
03/03 23:51, , 8F
03/03 23:51, 8F
→
03/03 23:52, , 9F
03/03 23:52, 9F
→
03/03 23:52, , 10F
03/03 23:52, 10F
→
03/04 06:40, , 11F
03/04 06:40, 11F
→
03/04 21:14, , 12F
03/04 21:14, 12F
→
03/04 21:14, , 13F
03/04 21:14, 13F
→
03/04 21:14, , 14F
03/04 21:14, 14F
→
03/04 21:15, , 15F
03/04 21:15, 15F
→
03/04 21:15, , 16F
03/04 21:15, 16F
→
03/04 21:47, , 17F
03/04 21:47, 17F
→
03/04 21:48, , 18F
03/04 21:48, 18F
→
03/04 21:48, , 19F
03/04 21:48, 19F

→
03/05 11:36, , 20F
03/05 11:36, 20F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Office 近期熱門文章
PTT數位生活區 即時熱門文章