如何从 VBA 中的标准偏差计算中排除“0”值?

How do I exclude "0" values from a standard deviation calculation in VBA?

我试图从我的标准偏差计算中排除所有零值。例如,如果我的数据范围有三个数字: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

例如:

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