Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 用户定义的函数结果不显示在Excel中_Vba_Excel - Fatal编程技术网

Vba 用户定义的函数结果不显示在Excel中

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)

我编写了一个名为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)
,我就看不到结果。

您有双重声明。我的意思是,
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),那就是功