我沒有在VBA的經驗,我需要這個百分功能轉換爲一個自定義的VBA函數計算百分使用自定義的VBA函數
=PERCENTILE(
IF('RAW JO TIME'!$J$2:$J$51816=$A7,
IF($B$4="(All)",'RAW JO TIME'!$P$2:$P$51816,
IF('RAW JO TIME'!$M$2:$M$51816=$B$4,'RAW JO TIME'!$P$2:$P$51816)
)
),
E$6)
其中$ A7,$ B $ 4和E $ 6應該作爲參數傳遞...
我一直在嘗試不同的方法,但沒有工作。搜索在論壇上我發現了一個可能的解決辦法是這樣的:
ActiveCell.Formula = "=IF('RAW JO TIME'!$J$2:$J$51816=" & InputRange & ", IF($B$4=""(All)"",'RAW JO TIME'!$P$2:$P$51816, IF('RAW JO TIME'!$M$2:$M$51816=$B$4,'RAW JO TIME'!$P$2:$P$51816)))"
其中「InputRange」是爲具有被搜索在另一片的範圍值paramters通過細胞...
也試過這個
Dim r As Range
Set r.FormulaArray = "=IF('RAW JO TIME'!$J$2:$J$51816=$A7, IF($B$4=""(All)"",'RAW JO TIME'!$P$2:$P$51816, IF('RAW JO TIME'!$M$2:$M$51816=$B$4,'RAW JO TIME'!$P$2:$P$51816)))"
正如你所看到的,我沒有使用的參數爲這一個,只是想測試數組公式是...但我得到了相同的結果。執行在設置r.FormulaArray
停止我的理解是,這IF語句將返回小區或之後將由百分函數中使用的數據矩陣的範圍...
但後來,我當調試代碼,它被卡在ActiveCell.Formula ...爲什麼會這樣?
我想知道在這種情況下,最好的解決方案是如何在函數中實現每個「if」作爲VB if語句?
幫助將不勝感激
謝謝!
這是有效的,這是一個數組公式。 – ApplePie
@ jprealini你至少需要知道如何開始使用VBA。一種簡單的方法是重建公式並使用Application.Evaluate()。 – ApplePie
@ Dave.Gugg,正如我所解釋的那樣,我需要創建一個自定義的PERCENTILE函數,將矩陣作爲它的一系列數據,這些數據將成爲「IF」語句和您在其中進行比較的結果... – jprealini