2015-10-17 63 views
-1

我編寫了一個名爲myaverage用戶定義的函數,它計算的3個數字的加權平均值:用戶自定義函數的結果不會出現在Excel中

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),我看不到結果。

+0

我在excel表格中鍵入= myaverage(A1:A3)在特定單元格中,我的隨機數字在哪裏出現,並且沒有出現答案 – Jonathan

+0

與所有其他單元一樣,最好將「a」聲明爲double。另外,確保沒有溢出,否則你會有#NA結果。 –

+0

我改變它,並寫Dim a爲Double,但它仍然出現#VALUE! – Jonathan

回答

0

您有雙重聲明。我的意思是,x是在簽名中聲明的,並且你在函數體中重新聲明它。因此,這將工作:

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 
  • 不要忘記功能必須放在模塊(例如模塊1)。見步驟2in this tutorial

  • 如果你改變了代碼,總是重新測試功能使用菜單調試>編譯語言錯誤。如果顯示錯誤,請修復它們。

+0

好的,謝謝 – Jonathan

1

簡化你的函數是這樣的:

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) 
+0

好。我發現了錯誤。如果我輸入= myaverage(A1,B1,C1)而不是= myaverage(A1:C1),那就行了 – Jonathan

0

如果你想使用範圍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 
相關問題