1
所以我一直在試圖創建一個函數來將VBA中的分貝加在一起。我試過使用ParamArray,但我在處理信息時遇到了麻煩。理想情況下,它可以像SUM()一樣工作,只需要把所有的投入都投入公式和繁榮。參數輸入的參數陣列問題
現在,我有:
Function DBADD3(ParamArray nums()) As Double
Dim DBPrTot As Variant
'this will be input into the log function at the end
DBPrTot = 0
'initializing value for use in for loop
For i = LBound(nums) To UBound(nums)
DBPrTot = DBPrTot + 10^(nums(i)/10)
'all of the values gathered from ParamArray are being input into this running total
Next i
DBADD3 = 10 * WorksheetFunction.Log10(DBPrTot)
'throwing the DBPrTot running value into our end equation
End Function
我想它採取像DBADD3(A1:A3,A5,A7)的輸入,仍然生產的東西。有人可以幫忙嗎?
請使用'對於每個VARG在args'循環,而不是用一個簡單的計時器'For'循環,聲明變量'cel' ,使用'TypeOf args(i)是Range'替代'TypeName'並在添加到'dRunningTotal'之前測試'IsNumeric(cel.Value)'。否則,這是一個很好的答案,+1。 – Leviathan
嘿@ user3561813我有另一個附錄。這個效果很好,但是當值爲0時,它會變得很奇怪。我想跳過包含0的所有迭代,使用if語句或其他東西。你怎麼看?我認爲沿着 的行如果args(i)= 0那麼 dRunningTotal = dRunningTotal –
@ T.Heng將自己的業務邏輯添加到代碼沒有任何問題。它可能看起來像這樣:'如果cel.Value <> 0那麼''dRunningTotal = dRunningTotal + cel.Value' – user3561813