如何从VBA函数将范围传递给Excel公式
我正在写一个vba函数来生成平滑graphics的移动平均值。 我需要使用四分位数范围来调整平滑公式。 如何将QuartileRange传递给Evaluate
函数以返回该范围的四分位值,以便我可以在我的函数中使用它?
这个函数被调用如下
=MovingAverageSmoothQuartile( A1, 4, B1:b10 )
哪里
-
A1
是平滑的价值, -
4
是要使用的值的数量 -
B1:B10
是用来计算四分位数值的一列样本。Function MovingAverageSmoothQuartile(r As Range, ByVal m As Integer, QuartileRange As Range) ' returns a smoothed average using the 'rectangular' method Dim q1 As Double, q2 As Double, q3 As Double q1 = Evaluate("Quartile( " + QuartileRange.Text + ", 1") ' <--- Stuck here
喜欢这个:
q1 = WorksheetFunction.quartile(QuartileRange, 1)
您可以直接在VBA中使用QUARTILE
而无需EVALUATE
。
例如,要从A1返回第一个四分位数:A10:
Sub Calltest() MsgBox Test([a1:a10]) End Sub Function Test(rng1 As Range) Test = Application.WorksheetFunction.Quartile(rng1, 1) End Function
不太清楚为什么你会在这里使用Evaluate
? 我认为你需要这样做:
ql = WorksheetFunction.Quartile(QuartileRange, 1)
q1 = Evaluate("Quartile(INDIRECT(" + QuartileRange.Text + "), 1")
我很抱歉,我不知道使用Quartile
函数,并假定QuartileRange.Text
包含stringforms的范围地址。