[英]Simple VBA function that returns product of range value
我希望函數將一系列單元格作為參數並返回其產品。 我們假設單元格的值如下:
A1=5
A2=2
A3=3
讓我們調用函數Multiply
。 =Multiply(A1:A3)
將返回30(= 5×2×3)。
這是什么代碼? 我只是想熟悉語法,這將有很多幫助。
編輯:想通了:
Function multiply(rng As Range)
multiplied = 1
For Each cell In rng
multiplied = multiplied * cell.Value
Next
multiply = multiplied
End Function
您可以直接使用VBA
版本的PRODUCT
,即
MsgBox WorksheetFunction.Product([a1:a3])
您可以使用Excel工作表函數。
如果只提供一個范圍,則SUMPRODUCT
的默認行為是返回總和,這樣您就可以通過這種方式將范圍傳遞給SUMPRODUCT
:
WorksheetFunction.Sumproduct(**your range goes here**)
OK =PRODUCT
,它完成這項工作( SUMPRODUCT
不會做最初的同事所要求的)。
但是,只是為了好玩,使用數學函數EXP和LN的屬性,我們有if
X = A1*B1*C1 then
LN(X) = LN(A1)+LN(B1)+LN(C1)
and
X = EXP(LN(X)) or
X = EXP(LN(A1)+LN(B1)+LN(C1))
所以只需放入一個cel: =EXP(SUM(LN(A1:C1)))
和il! (你必須使用CTRL + SHIFT + ENTER )
如果您堅持編寫自己的功能,請嘗試以下操作。 它首先將所有值加載到內存中,因此應該更快地工作。
Public Function RngProduct(ByRef r as Range) as Double
Dim vals() as Variant, res as Double
vals = r.Value
Dim i as Long, N as Long
N = r.Rows.Count
res = #1
For i=1 to N
res = res * vals(i,1)
Next i
RngProduct = res
End Function
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.