VBA实现按列统计平均值、标准差、中位值判断如果A18A21区域存在编号为0或10x数值则统计时对应行数据不包含在统计范围内
以下是一个VBA代码的示例,用于按列统计平均值、标准差和中位值。在统计时,如果A18:A21区域存在编号为0或10x数值,则对应行数据将不包含在统计范围内。
Sub CalculateStats()
Dim rng As Range
Dim cell As Range
Dim sum As Double
Dim count As Integer
Dim values() As Variant
Dim i As Integer
' 设置要统计的区域
Set rng = Range("A1:A17")
' 初始化统计结果
sum = 0
count = 0
' 循环遍历区域中的每个单元格
For Each cell In rng
' 判断是否为0或10x数值
If cell.Value <> 0 And (cell.Value < 100 Or cell.Value > 109) Then
' 将符合条件的数值添加到数组中
ReDim Preserve values(count)
values(count) = cell.Value
count = count + 1
End If
Next cell
' 统计结果
If count > 0 Then
' 计算平均值
For i = 0 To count - 1
sum = sum + values(i)
Next i
Dim average As Double
average = sum / count
MsgBox "平均值: " & average
' 计算标准差
Dim variance As Double
For i = 0 To count - 1
variance = variance + (values(i) - average) ^ 2
Next i
variance = variance / count
Dim stdDev As Double
stdDev = Sqr(variance)
MsgBox "标准差: " & stdDev
' 计算中位值
Dim median As Double
If count Mod 2 = 1 Then
median = values(count \ 2)
Else
median = (values(count \ 2 - 1) + values(count \ 2)) / 2
End If
MsgBox "中位值: " & median
Else
MsgBox "没有符合条件的数据"
End If
End Sub
请注意,代码中的区域范围是"A1:A17",您可以根据需要修改为实际的区域范围。另外,统计结果将通过消息框显示,您也可以根据需要将其修改为适合的输出方式
原文地址: http://www.cveoy.top/t/topic/h0TS 著作权归作者所有。请勿转载和采集!