如何在VBA中使用布尔值或字符串跳过单元格,我需要此部分来计算方差,但是如果我运行宏并且列有一个布尔值的单元格则显示错误数字13
Dim i As Integer
Dim q As Integer
q = InputBox("Variance of which column do you need?")
Dim LastRow As Integer
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
Dim sred As Long
sred = WorksheetFunction.Average(Range(Cells(1, q), Cells(LastRow, q)))
Dim s As Double
Dim s_2 As Double
For i = 1 To LastRow
s = (Cells(i, q).Value - sred) ^ 2
s_2 = s_2 + s
Next i
variance = (s_2 / (LastRow - 1))
MsgBox variance
答案 0 :(得分:1)
只需检查单元格是否有数字
For i = 1 To LastRow
If Cells(i, q).Value <> TRUE And Cells(i, q).Value <> FALSE And _
IsNumeric(Cells(i, q).Value)) Then
s = (Cells(i, q).Value - sred) ^ 2
s_2 = s_2 + s
End If
Next i
答案 1 :(得分:1)
或者,您可以使用variance = WorksheetFunction.VAR_S(Range(Cells(1, q), Cells(LastRow, q)))
来计算差异,就像您对平均值所做的那样:
VAR_S
请注意VAR_P
和VAR_S
的区别在于前者除以(n-1)而第二除以n。 STDEV_S
适合您的代码。您还可以使用STDEV_P
或s_2
来获得标准偏差。此外,您在循环中计算的总和DEVSQ
是使用:person_name
获得的。
以上所有函数在计算时会自动忽略目标范围内的非数字值。