用户定义的函数结果不会出现在Excel中

时间:2015-10-17 13:52:00

标签: 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),我就看不到结果了。

3 个答案:

答案 0 :(得分:1)

将您的功能简化为以下内容:

= myaverage(A1, B1, C1)

在Excel单元格中,使用:

{{1}}

答案 1 :(得分:0)

 

你有双重声明。我的意思是,Public 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 已在签名中声明,并且您在函数体中重新声明了它。所以这将有效:

characters
  • 不要忘记该功能必须放在模块中(例如Module1)。请参阅第2步 in this tutorial

  • 如果您更改了代码,请务必使用菜单调试>重新测试您的语言错误功能。的编译即可。如果显示错误,请修复它们。

答案 2 :(得分:0)

如果要使用范围CREATE TABLE #Tbl1 ( ID int, Name VARCHAR(50) ) CREATE TABLE #Tbl2 ( ID int, SearchTerm Varchar(50) ) INSERT INTO #Tbl2 VALUES (1, 'LIKE'), (2, '=') INSERT INTO #Tbl1 VALUES (1, 'F'), (2, 'Fred'), (3, 'Fred Astaire'),(4, 'Simon Says') DECLARE @keyword varchar(50) = 'Fred' SELECT t1.*, t2.ID FROM #Tbl1 t1 INNER JOIN #Tbl2 t2 ON t2.SearchTerm = 'LIKE' WHERE Name Like '%' + @keyword + '%' UNION ALL SELECT t1.*, t2.ID FROM #Tbl1 t1 INNER JOIN #Tbl2 t2 ON t2.SearchTerm = '=' WHERE Name = @keyword ORDER BY t2.ID 作为输入参数,则必须相应地编写UDF:

A1:C1