所以我完成了特定的任务。我想创建一个将分贝单元加在一起的函数。目前,您必须输入类似
的内容 entry = int(raw_input("Press 7 to append text into this file, 8 to truncate the content of this file, or 9 to delete this file : "))
如果你想要将15个部分加在一起,那就更长一些。有点痛。
理想情况下,它会像excel函数=10*LOG10(10^(A1/10)+10^(A2/10))
一样工作,只需接受任何输入。有人可以帮我把它放在一起,或者至少告诉我如果你必须从头开始创建SUM会是什么样的?
最佳, T. Heng
答案 0 :(得分:5)
这个小 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)
答案 1 :(得分:1)
下面是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