【问题标题】:How do I exclude "0" values from a standard deviation calculation in VBA?如何从 VBA 中的标准偏差计算中排除“0”值?
【发布时间】:2021-08-16 15:56:03
【问题描述】:

我试图从我的标准偏差计算中排除所有零值。例如,如果我的数据范围有三个数字:0,1,2,那么我只想计算 1 和 2 的标准差。

这是我当前的代码(供参考-我的代码的顶部用于引用某些单元格名称,这样可以正确提取随后的数据):

Sub DownsideSTDVCalc()

    Dim fund As String
    Dim checkFund
    Dim item As String
    fund = Worksheets(12).Range("A2").Value
     
    For i = 2 To 48
        checkFund = Worksheets(11).Columns(i)
        item = Worksheets(11).Columns(i).Cells(1, 1)
        If item = fund Then
            Dim values
            Dim qtd
            values = Worksheets(11).Range(Worksheets(11).Cells(2, i), Worksheets(11).Cells(4, i))
            For j = 1 To UBound(values) - LBound(values)
                values(j, 1) = values(j, 1)
            Next
            qtd = Application.WorksheetFunction.StDev_S(values)

            Worksheets(12).Range("b2").Value = qtd
        End If
    Next
End Sub

【问题讨论】:

标签: excel vba finance standard-deviation


【解决方案1】:

例如:

Sub Tester()
    Debug.Print StdDevNoZero(Selection)
End Sub


Function StdDevNoZero(rng As Range)
    Dim f, addr
    addr = rng.Address(False, False)
    f = "STDEV.S(IF(" & addr & ">0," & addr & "))"
    StdDevNoZero = rng.Parent.Evaluate(f)
End Function

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-10
    • 2017-09-26
    • 1970-01-01
    相关资源
    最近更新 更多