我想在我的函数中包含一个ParamArray,但是到目前为止,我的努力已经失败了。
假设我想要建立一个函数来计算离散分布的平均值。
该职能的形式如下:
Function Dist_Discrete(X1, P1, X2, P2, X3, P3, etc.)我现在想到了两种解决办法:
第二种为首选。但是当我试图定义
Function Dist_Discrete(ParamArray XVal() As Variant, ParamArray Prob() As Variant)然后出现一个错误消息--“编译错误”。
我可以找到一种方法,通过设置概率和奇数作为值来解决这个问题。但我认为这可能是个好的临时解决方案
发布于 2019-08-19 14:07:50
发布的示例将输入显示为连续列中的单元格,如X1、X2。如果是这样的话,just使用Range对象作为输入:
Function Dist_Discrete(X as Range, P as Range) as Double然后在工作表单元格中:
=DistDiscrete(X1:X30, P1:P30)发布于 2019-08-19 14:11:27
ParamArray指定过程参数接受指定类型的元素的可选数组。ParamArray只能用于参数列表的最后一个参数。因此,两个param数组是不可能的。(learn.microsoft.com)
但是,您可能会想到Excel中的一个小技巧。例如,让我们考虑以下功能:
Function SumAndMultiply(valuesToSum(), valuesToMultiply()) as Double,它的思想是对valuesToSum()数组的值进行求和,并将结果与每个valuesToMultiply()相乘。
在VBA中,如果第一个表示为范围,那么它将很好地工作:

Public Function SumAndMultiply(valuesToSum As Range, _
ParamArray valuesToMultiply() As Variant) As Double
Dim myCell As Range
Dim sum As Double
For Each myCell In valuesToSum
sum = sum + myCell
Next myCell
Dim param As Variant
SumAndMultiply = sum
For Each param In valuesToMultiply
SumAndMultiply = SumAndMultiply * param
Next
End Functionhttps://stackoverflow.com/questions/57558245
复制相似问题