Vba 用户定义的函数结果不显示在Excel中
我编写了一个名为myaverage的用户定义函数,它计算3个数字的加权平均数:Vba 用户定义的函数结果不显示在Excel中,vba,excel,Vba,Excel,我编写了一个名为myaverage的用户定义函数,它计算3个数字的加权平均数: Function myaverage(x, y, z) As Double Dim a As Single Dim x As Double Dim y As Double Dim z As Double a = 0.4 * x + 0.5 * y + 0.1 * z myaverage = a End Function 但是如果我键入=myaverage(A1:A3)
Function myaverage(x, y, z) As Double
Dim a As Single
Dim x As Double
Dim y As Double
Dim z As Double
a = 0.4 * x + 0.5 * y + 0.1 * z
myaverage = a
End Function
但是如果我键入
=myaverage(A1:A3)
,我就看不到结果。您有双重声明。我的意思是,x
已在签名中声明,而您在函数体中重新声明了它。因此,这将起作用:
公共函数myaverage(x为双精度,y为双精度,z为双精度)为双精度
myaverage=0.4*x+0.5*y+0.1*z
端函数
- 不要忘记功能必须放在模块中(例如模块1)。请参见步骤2
- 如果更改代码,请始终使用“调试”菜单重新测试函数的语言错误。如果显示错误,请修复它们
Function myaverage(x As Double, y As Double, z As Double) As Double
myaverage = 0.4 * x + 0.5 * y + 0.1 * z
End Function
在Excel单元格中,使用以下命令:
= myaverage(A1, B1, C1)
如果要使用range
A1:C1
作为输入参数,则必须相应地编写UDF:
Public Function RangeAverage(rRef As Range) As Double
With rRef
RangeAverage = 0.4 * .Cells(1).Value2 + 0.5 * .Cells(2).Value2 + 0.1 * .Cells(3).Value2
End With
End Function
我在excel工作表中键入=我的平均值(A1:A3),其中特定单元格中是我的随机数,答案似乎不是,最好像所有其他单元格一样将
a
声明为双精度。另外,请确保没有溢出,否则结果将是#NA。我将其更改并将Dim a写为Double,但它仍然显示为#VALUE!公开功能。良好的入门问答。如你所见,尽可能多地(从一开始)为你的问题添加必要的细节。(当然,避免不必要的东西。)好的问题回答得比较快。我发现了错误。如果我输入=myaverage(A1,B1,C1)而不是=myaverage(A1:C1),那就是功