我有一个包含数字的列,只想计算正数。
例如,如果数字是3、2,-1,-6、7,-4、0、10,-15,则结果应为3.20,因为计算应仅考虑3、2、7和10。
在普通Excel中,我可以这样:
STDEV.P(IF(RANGE > 0, RANGE))
,然后按Control + Shift + Enter
。
我将如何在VBA中做到这一点?
答案 0 :(得分:1)
具有正数标准(未经测试的一般演练)的较长stdev函数的示例
for i = startrow to endrow
if cells(i,1).value > 0 then
redim preserve arr(ubound(arr)+1)
arr(ubound(arr)) = cells(i,1).value
x = x + cells(i,1).value
n = n + 1
end if
next i
现在您已经收集了所需的所有值...
使用您的double变量执行常规计算。
如果您可以摆脱它,就像我的评论一样,请在.FormulaArray
,然后在value=value
中使用现有公式,例如:
Cells(1, 1).FormulaArray = "=STDEV(IF(B2:B100>0,B2:B100))"
Cells(1, 1).Value = Cells(1, 1).Value
答案 1 :(得分:1)
你在这里。
如果您想在其他地方使用它,则可以在公式之外设置范围
Sub StandDev()
Dim ws As Worksheet, rng As Range
Set ws = Worksheets("StandDev") 'Worksheet name
Set rng = ws.Range("B2", "B100") 'Your range
With Cells(1, 1) 'Cell "A1"
.FormulaArray = "=STDEV.P(IF(" & rng.Address & "> 0," & rng.Address & "))"
.Value = .Value 'Your formula
End With
End Sub