以下是一个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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录