VBA用其计算值替换内部功能公式



这是我在这里的第一篇文章。我试图寻找答案,但找不到一个答案。

我的问题是将公式中的范围替换为其特定值。为了说明问题,请考虑一个单元格:

=平均(A1:A10)

我希望这个单元格显示计算的平均参数:

=平均({1; 2; 3; 3; 4; 5; 6; 7; 8; 9; 9; 10})

这件事与按F9平行,而范围A1:A10突出显示。我试图从网络中能找到的东西构建一些东西,但无法使其正常工作:

Sub ChangeFormulas()
Const CONST_FUNCTION As String = "AVERAGE"
Dim cell As Range
Dim tmp As String
Dim res As Variant
For Each cell In Selection
  With cell
    If InStr(.Formula, CONST_FUNCTION) > 0 Then
        tmp = Mid(.Formula, 10, InStr(.Formula, ")") - (InStr(.Formula, CONST_FUNCTION) + 8))
        cell.Formula = Replace(cell.Formula, tmp, Application.Evaluate(tmp))
    End If
  End With
Next cell
End Sub

谢谢您的帮助。

不能认为为什么按照@brandon Barney的规定,但这是您需要的

"=AVERAGE({" & join(application.transpose(range("i1:i4").Value),";") & "})"

将像这样返回的

=AVERAGE({1;5;5;10})

最新更新