dB计算器? VBA函数写作

所以我有相当的具体任务。 我想创build一个将分贝单位加在一起的函数。 目前,你必须input类似的东西

=10*LOG10(10^(A1/10)+10^(A2/10))

如果你有15个部分要加在一起,那就更长一些。 一种痛苦。

理想情况下,它将像Excel函数SUM一样工作,只需input任何内容。 有人可以帮我把它放在一起,或者至less告诉我,如果你必须从头开始创buildSUM会是什么样子?

最好的T. Heng

这个小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 

第一个参数是input的范围,第二个参数是input的数量:

在这里输入图像说明

编辑#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 (它应该被input到一个标准模块中)的例子,它可以接受任意数量的参数并返回这些参数的总和。 你的例子似乎涉及更高级的逻辑,所以你将不得不扩展我的例子。 让我们知道你是否需要更多的帮助。

 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 
Interesting Posts