分贝计算器?VBA功能编写

T. *_*eng 3 excel vba excel-vba decibel

所以我有相当具体的任务。我想创建一个将分贝单位加在一起的函数。目前,您必须输入类似

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

如果您想将15个零件加在一起,则可以使它更长。有点痛苦。

理想情况下,它将像excel函数一样工作,SUM并且可以接受任何输入。有人可以帮助我将其组合在一起,或者至少告诉我如果必须从头开始创建SUM会是什么样子?

最好,亨亨

Gar*_*ent 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
Run Code Online (Sandbox Code Playgroud)

其中第一个参数是输入范围,第二个参数是输入数量:

在此处输入图片说明

编辑#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
Run Code Online (Sandbox Code Playgroud)

因此您可以像这样使用它:

=decibelle2(A1:A2)
Run Code Online (Sandbox Code Playgroud)