所以我有相当具体的任务。我想创建一个将分贝单位相加的函数。目前,您必须输入类似
=10*LOG10(10^(A1/10)+10^(A2/10))
如果您想将 15 个部分加在一起,则可以延长此时间。有点痛。
理想情况下,它会像 excel 函数一样工作SUM
,只接受任何输入。有人可以帮我把它放在一起,或者至少告诉我如果你必须从头开始创建 SUM 会是什么样子?
最好的,T.恒
这个小小的UDF()会给你更多的灵活性:
Public Function decibelle(rng As Range, N As Long) As Double
Dim wf As WorksheetFunction, i As Long, Z As Double
Set wf = Application.WorksheetFunction
For i = 1 To N
Z = Z + 10 ^ (rng(i) / 10)
Next i
decibelle = 10 * wf.Log10(Z)
End Function
其中第一个参数是输入的范围,第二个参数是输入的数量:
编辑#1:
如果您希望UDF()更像SUM()考虑:
Public Function decibelle2(rng As Range) As Double
Dim wf As WorksheetFunction, r As Range, Z As Double
Set wf = Application.WorksheetFunction
For Each r In rng
Z = Z + 10 ^ (r.Value / 10)
Next r
decibelle2 = 10 * wf.Log10(Z)
End Function
所以你可以像这样使用它:
=decibelle2(A1:A2)
下面是一个非常简单的示例User Defined Function
(应该输入到标准模块中),它可以接受任意数量的参数并返回这些参数的总和。您的示例似乎涉及更高级的逻辑,因此您必须扩展我的示例。如果您需要更多帮助,请告诉我们。
Function AddSomeDigits(ParamArray nums()) As Double
Dim vRunningTotal As Variant
vRunningTotal = 0
For i = LBound(nums) To UBound(nums)
vRunningTotal = vRunningTotal + nums(i)
Next i
AddSomeDigits = vRunningTotal
End Function