Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: shzzhy

[已解决]求爱疯老师再出手帮忙“如何自动插入空行并计算平均数”

[复制链接]
发表于 2016-12-16 14:46 | 显示全部楼层
shzzhy 发表于 2016-12-16 09:01
"插入空行并求平均值"中的"材料名称",是首先排序

Option Explicit

Dim arr()                   '数据源
Dim arrResult()             '结果
Dim NotRecord As Integer    '非记录(指平均行或空白行)
Dim Record As Integer       '记录
Const LineCount = 20        '行数 = 多行记录 + 1行平均值

'主程序
Sub test()
    Dim i As Integer, j As Integer

    Call Ready
    arr = Range("a1").CurrentRegion.Value   '如果没有特别情况,这种选取方式的适用性更好。
    '    arr = Range("a1:ab" & Range("b65536").End(3).Row).Value
    ReDim arrResult(1 To UBound(arr) * LineCount, 1 To UBound(arr, 2))
    NotRecord = 0
    Record = 0

    For i = 2 To UBound(arr)
        '如果本行和上行不同,则处理平均行
        If i > 2 And arr(i, 4) <> arr(i - 1, 4) Then Call AverageLine(i)

        '某个产品进行添加记录
        Record = Record + 1
        If Record < LineCount Then
            For j = 1 To UBound(arr, 2)
                '结果的行号 = 累计的记录数 + 累计的非记录行数
                arrResult(i + NotRecord, j) = arr(i, j)
            Next j
        End If
    Next i
    '最后一个产品的平均行,单独处理
    Call AverageLine(i)

    Sheets(2).Activate    '如果存放结果的工作表总是在第2个表
    Cells.Clear
    Range("F:R").NumberFormat = "0.0"
    Range("Z:AB").NumberFormat = "0.00"
    Range("a1").Resize(i + NotRecord, UBound(arrResult, 2)) = arrResult     '结果
    Range("a1").Resize(1, UBound(arr, 2)) = Application.Index(arr, 1, 0)    '标题
    Range("a1").Select
    Call FillColor(LineCount, UBound(arr, 2))    '可选
End Sub

'处理平均行
Sub AverageLine(iData)
    Dim dic As Object               '字典,用于文本型产品的计数
    Dim ProductAvg As Long          '产品的平均行行号
    Dim ProductSum As Double        '数字型产品的和
    Dim ProductCount As Integer     '产品的累计次数
    Dim ProductColumn As Integer    '产品的参照列号
    Dim i As Integer, j As Integer, startRow As Integer, endRow As Integer

    Set dic = CreateObject("scripting.dictionary")
    NotRecord = NotRecord + (LineCount - Record)    'LineCount - Record表示非记录数,即平均行和空白行
    ProductAvg = iData + NotRecord - 1    '某产品的平均行行号 = 累计记录数 + 累计非记录数 - 1
    startRow = ProductAvg - LineCount + 1
    endRow = ProductAvg - 1

    '从第6列(株高cm),到最后1列(经济系数),求各产品的平均值
    For j = 6 To UBound(arr, 2)
        '1)清零
        ProductSum = 0: ProductCount = 0: ProductColumn = 0: dic.RemoveAll

        '2)求和
        For i = startRow To endRow
            '如果产品的值非空
            If arrResult(i, j) <> "" Then
                '如果产品的值是数字
                If IsNumeric(arrResult(i, j)) Then
                    '累计产品值的和
                    ProductSum = ProductSum + arrResult(i, j)
                End If
                '更新终止排号
                arrResult(ProductAvg, 2) = arrResult(i, 2)
            End If
        Next i

        '3)求次数
        '更新产品的参照列号
        Select Case j
        Case 10, 14
            ProductColumn = 16
        Case Else
            ProductColumn = j
        End Select
        '求和的列与求次数的列,因为可能不一样,所以必须再循环
        For i = startRow To endRow
            '如果产品的值非空
            If arrResult(i, ProductColumn) <> "" Then
                '如果产品的值是数字
                If IsNumeric(arrResult(i, ProductColumn)) Then
                    '数字型产品的累计次数
                    ProductCount = ProductCount + 1
                Else
                    '文本型产品的累计次数
                    dic(arrResult(i, ProductColumn)) = dic(arrResult(i, ProductColumn)) + 1
                End If
            End If
        Next i

        '4)求平均值
        If ProductCount Then arrResult(ProductAvg, j) = ProductSum / ProductCount   '数字型 = 和 / 次数
        If dic.Count Then arrResult(ProductAvg, j) = getItem(dic.keys, dic.items)   '文本型 = 最多次数的条目
    Next j

    '处理前5列
    arrResult(ProductAvg, 1) = ""                                                               'A列,统计号
    arrResult(ProductAvg, 2) = "  " & arrResult(startRow, 2) & "-" & arrResult(ProductAvg, 2)   'B列,排号
    arrResult(ProductAvg, 3) = "平均"                                                           'C列,材料序号2014年
    arrResult(ProductAvg, 4) = arrResult(startRow, 4)                                           'D列,材料名称
    arrResult(ProductAvg, 5) = "平均"                                                           'E列,株号

    Record = 0
End Sub

'自定义函数:最多次数的条目
Function getItem(k, t) As String
    Dim i As Integer
    Dim temp As Integer     '最大次数
    Dim Id As Integer       '最大次数的下标
    For i = 0 To UBound(k)
        'k是条目的数组,t是条目次数的数组
        If temp < t(i) Then
            temp = t(i)     '最大次数
            Id = i          '最大次数的下标
        End If
    Next i
    getItem = k(Id)    '最大次数下标对应的条目
End Function

'将结果表里每种材料名称的平均行填充颜色
Sub FillColor(LineCount, c)
    Dim r As Integer
    Dim i As Integer
    Sheets(2).Activate
    r = Range("b65536").End(xlUp).Row
    For i = r To 2 Step -LineCount
        Range(Cells(i, 1), Cells(i, c)).Interior.ColorIndex = 24
    Next i
End Sub

'准备工作
Sub Ready()
    Dim j As Integer
    Sheets(1).Select
    Range("a1").CurrentRegion.Sort key1:=[b1], order1:=xlAscending, Header:=xlYes    '按B列排升序

    '1)手动调整,与“处理前5列”的顺序一致。
    '品种名称
    j = Rows(1).Find("品种名称").Column     '查找品种名称的列号
    Columns(j).Cut                          '剪切"2016年品种名称"
    Columns("E:E").Insert Shift:=xlToRight  '插入到D列
    '排号
    j = Rows(1).Find("排号").Column         '查找排号的列号
    Columns(j).Cut                          '剪切"2016年排号"
    Columns("C:C").Insert Shift:=xlToRight  '插入到B列

    '2)原始数据有错误就清除
    On Error Resume Next
    Cells.SpecialCells(xlCellTypeConstants, 16).Delete    '清除 错误常量
    On Error GoTo 0
End Sub
鲜籽考种平均-测试4.rar (74.63 KB, 下载次数: 11)
回复

使用道具 举报

 楼主| 发表于 2016-12-16 21:54 | 显示全部楼层
爱疯老师好,我测试了下,非常好。为了多次运行都可以,我把排序语句 Range("a1").CurrentRegion.Sort key1:=[b1], order1:=xlAscending, Header:=xlYes   放在清除错误码的前面了,将b1改为d1,即先安置前5列的顺序,再按D列排序。

清除错误码会更换值,如前面M82、M182、M221均有错误值,运行清除代码后,它不是将这几个单元格清空,而是添加了值,如M82变为73.2,M182变为46.5,M221变为空。我需要运行后,清除单元格内容变为空即可,而不需要再重新增加值。如能清除值后将单元格填充上颜色以示错误就最好了。如这个问题不好解决就算了,我提前检查,手工清除错误也可以。

      再次感谢爱疯老师的帮忙,解决了我的问题,又使我学习了分析、理解程序,既完成了专业数据整理,又在跟着你学习编程序解决问题。
回复

使用道具 举报

 楼主| 发表于 2019-4-22 23:45 | 显示全部楼层

求爱疯老师出手帮忙-“如何自动插入空行并计算平均数”

爱疯 发表于 2016-12-16 14:46
Option Explicit

Dim arr()                   '数据源


    爱疯老师好,前面请你帮忙做了程序解决了插入空行求平均值的问题,见下面的链接。
http://www.excelpx.com/forum.php?mod=viewthread&tid=426107&page=3#pid4106970
    现在又遇到了新的问题,附件表中“粒鲜重(g)”、“考种瓜鲜重(kg)”两列,不是求平均值,而是求标准差,其余的列按原来的方式不变。
    这个应该怎么处理,请老师出手帮忙。
回复

使用道具 举报

发表于 2019-4-23 10:04 | 显示全部楼层
Option Explicit

Dim Arr()                   '数据
Dim Brr()                   '结果
Dim NotRecord As Integer    '非记录(指平均行或空白行)
Dim Record As Integer       '记录
Const LineCount = 20        '行数 = 多行记录 + 1行平均值

'入口
Sub rk()
    Dim i As Integer, j As Integer

    Call init
    Arr = Range("a1").CurrentRegion.Value
    ReDim Brr(1 To UBound(Arr) * LineCount, 1 To UBound(Arr, 2))
    NotRecord = 0
    Record = 0

    For i = 2 To UBound(Arr)
        '如果本行和上行不同,则处理平均行
        If i > 2 And Arr(i, 4) <> Arr(i - 1, 4) Then Call AverageLine(i)

        '某个产品的累加记录
        Record = Record + 1
        If Record < LineCount Then
            For j = 1 To UBound(Arr, 2)
                '结果的行号 = 累计的记录数 + 累计的非记录行数
                Brr(i + NotRecord, j) = Arr(i, j)
            Next j
        End If
    Next i
    '最后一个产品的平均行,单独处理
    Call AverageLine(i)

    Sheets(2).Activate    '结果在第2个工作表
    Cells.Clear
    Range("F:R").NumberFormat = "0.0"
    Range("Z:AB").NumberFormat = "0.00"
    Range("a1").Resize(i + NotRecord, UBound(Brr, 2)) = Brr     '结果
    Range("a1").Resize(1, UBound(Arr, 2)) = Application.Index(Arr, 1, 0)    '标题
    Range("a1").Select
    Call FillColor(LineCount, UBound(Arr, 2))    '可选
End Sub

'初始化
Private Sub init()
    Dim j As Integer
    Sheets(1).Select
    Range("a1").CurrentRegion.Sort key1:=[b1], order1:=xlAscending, Header:=xlYes    '按B列排升序

    '1)手动调整,与“处理前5列”的顺序一致。
    '品种名称
    j = Rows(1).Find("品种名称").Column     '查找品种名称的列号
    Columns(j).Cut                          '剪切"2016年品种名称"
    Columns("E:E").Insert Shift:=xlToRight  '插入到D列
    '排号
    j = Rows(1).Find("排号").Column         '查找排号的列号
    Columns(j).Cut                          '剪切"2016年排号"
    Columns("C:C").Insert Shift:=xlToRight  '插入到B列

    '2)原始数据有错误就清除
    On Error Resume Next
    Cells.SpecialCells(xlCellTypeConstants, 16).Delete    '清除 错误常量
    On Error GoTo 0
End Sub

'处理平均行
Sub AverageLine(iData)
    Dim dic As Object               '字典,用于文本型产品的计数
    Dim ProductAvg As Long          '产品的平均行行号
    Dim ProductSum As Double        '数字型产品的和
    Dim ProductCount As Integer     '产品的累计次数
    Dim ProductColumn As Integer    '产品的参照列号
    Dim Crr()                       '为求标准差,准备存放数据的数组
    Dim i As Integer, j As Integer, startRow As Integer, endRow As Integer, temp

    Set dic = CreateObject("scripting.dictionary")
    NotRecord = NotRecord + (LineCount - Record)     'LineCount - Record 表示累加非记录数,即平均行和空白行
    ProductAvg = iData + NotRecord - 1    '某产品的平均行行号 = 累计记录数 + 累计非记录数 - 1
    startRow = ProductAvg - LineCount + 1
    endRow = ProductAvg - 1

    '从第6列(株高cm),到最后1列(经济系数),求各产品的平均值
    For j = 6 To UBound(Arr, 2)
        '1)清零
        ProductSum = 0: ProductCount = 0: ProductColumn = 0: dic.RemoveAll

        '2)求和
        ReDim Crr(startRow To endRow)
        For i = startRow To endRow
            '如果产品的值非空
            If Brr(i, j) <> "" Then
                '如果产品的值是数字
                If IsNumeric(Brr(i, j)) Then
                    '累计产品值的和
                    ProductSum = ProductSum + Brr(i, j)
                    Crr(i) = Brr(i, j)
                End If
                '更新终止排号
                Brr(ProductAvg, 2) = Brr(i, 2)
            End If
        Next i

        '3)求次数
        '更新产品的参照列号
        Select Case j
        Case 10, 14
            ProductColumn = 16
        Case Else
            ProductColumn = j
        End Select
        '求和的列与求次数的列,因为可能不一样,所以必须再循环
        For i = startRow To endRow
            '如果产品的值非空
            If Brr(i, ProductColumn) <> "" Then
                '如果产品的值是数字
                If IsNumeric(Brr(i, ProductColumn)) Then
                    '数字型产品的累计次数
                    ProductCount = ProductCount + 1
                Else
                    '文本型产品的累计次数
                    dic(Brr(i, ProductColumn)) = dic(Brr(i, ProductColumn)) + 1
                End If
            End If
        Next i

        '4)求平均值

        '4-1 数字型 = 和 / 次数
        If ProductCount Then
            Brr(ProductAvg, j) = ProductSum / ProductCount

            '>>>
            '例如1,2,3,4,5的标准差怎么算
            '每个数减平均数的平方相加除以个数,再开平方。
            '标准差 s=√{[(1-3)^2+(2-3)^2+(3-3)^2+(4-3)^2+(5-3)^2]/5}=√2


            '只有 O列和Q列 求的不是平均值,而是标准差
            If j = 15 Or j = 17 Then
                temp = 0
                For i = LBound(Crr) To UBound(Crr)
                    temp = temp + (Crr(i) - Brr(ProductAvg, j)) ^ 2
                Next i
                Brr(ProductAvg, j) = VBA.Sqr(temp / ProductCount)
            End If
            '<<<

        End If

        '4-2 '文本型 = 最多次数的条目
        If dic.Count Then Brr(ProductAvg, j) = getItem(dic.keys, dic.items)

    Next j

    '处理前5列
    Brr(ProductAvg, 1) = ""                                                     'A列,统计号
    Brr(ProductAvg, 2) = "  " & Brr(startRow, 2) & "-" & Brr(ProductAvg, 2)     'B列,排号
    Brr(ProductAvg, 3) = "平均"                                                 'C列,材料序号2014年
    Brr(ProductAvg, 4) = Brr(startRow, 4)                                       'D列,材料名称
    Brr(ProductAvg, 5) = "平均"                                                 'E列,株号

    Record = 0
End Sub

'自定义函数:最多次数的条目
Function getItem(k, t) As String
    Dim i As Integer
    Dim temp As Integer     '最大次数
    Dim Id As Integer       '最大次数的下标
    For i = 0 To UBound(k)
        'k是条目的数组,t是条目次数的数组
        If temp < t(i) Then
            temp = t(i)     '最大次数
            Id = i          '最大次数的下标
        End If
    Next i
    getItem = k(Id)    '最大次数下标对应的条目
End Function

'将结果表里每种材料名称的平均行填充颜色
Sub FillColor(LineCount, c)
    Dim r As Integer
    Dim i As Integer
    Sheets(2).Activate
    r = Range("b65536").End(xlUp).Row
    For i = r To 2 Step -LineCount
        Range(Cells(i, 1), Cells(i, c)).Interior.ColorIndex = 24
    Next i
End Sub



鲜籽考种平均-测试5.rar (78.1 KB, 下载次数: 5)
回复

使用道具 举报

 楼主| 发表于 2019-4-24 10:08 | 显示全部楼层
爱疯 发表于 2019-4-23 10:04
Option Explicit

Dim Arr()                   '数据

爱疯老师好,计算出来的值不对呀。
EXCEL中计算标准差的函数 STDEV 的计算公式如下:

     '>>>
            '例如1,2,3,4,5的标准差怎么算
            '每个数减平均数的平方相加除以个数-1,再开平方。
            '标准差 s=√{[(1-3)^2+(2-3)^2+(3-3)^2+(4-3)^2+(5-3)^2]/(5-1)}=√2.5

回复

使用道具 举报

 楼主| 发表于 2019-4-24 10:12 | 显示全部楼层
爱疯 发表于 2019-4-23 10:04
Option Explicit

Dim Arr()                   '数据

如第一组数值求出的结果为115.0028,而用STDEV函数求出的应为19.4007   
粒鲜重(g)
45.9
71.3
38.9
79.0

回复

使用道具 举报

发表于 2019-4-24 10:29 | 显示全部楼层
鲜籽考种平均-测试6.rar (142.32 KB, 下载次数: 3)
回复

使用道具 举报

 楼主| 发表于 2019-4-24 11:50 | 显示全部楼层
爱疯 发表于 2019-4-24 10:29
'>>>
            '例如1,2,3,4,5的标准差怎么算
            '每个数减平均数 ...

爱疯老师,数据仍然不对,应该是计算公式哪有问题
回复

使用道具 举报

发表于 2019-4-24 15:45 | 显示全部楼层
Option Explicit

Dim Arr()                   '数据
Dim Brr()                   '结果
Dim NotRecord As Integer    '非记录(指平均行或空白行)
Dim Record As Integer       '记录
Const LineCount = 20        '行数 = 多行记录 + 1行平均值

'入口
Sub rk()
    Dim i As Integer, j As Integer

    Call init
    Arr = Range("a1").CurrentRegion.Value
    ReDim Brr(1 To UBound(Arr) * LineCount, 1 To UBound(Arr, 2))
    NotRecord = 0
    Record = 0

    For i = 2 To UBound(Arr)
        '如果本行和上行不同,则处理平均行
        If i > 2 And Arr(i, 4) <> Arr(i - 1, 4) Then Call AverageLine(i)

        '某个产品的累加记录
        Record = Record + 1
        If Record < LineCount Then
            For j = 1 To UBound(Arr, 2)
                '结果的行号 = 累计的记录数 + 累计的非记录行数
                Brr(i + NotRecord, j) = Arr(i, j)
            Next j
        End If
    Next i
    '最后一个产品的平均行,单独处理
    Call AverageLine(i)

    Sheets(2).Activate    '结果在第2个工作表
    Cells.Clear
    Range("F:R").NumberFormat = "0.0"
    Range("Z:AB").NumberFormat = "0.00"
    Range("a1").Resize(i + NotRecord, UBound(Brr, 2)) = Brr     '结果
    Range("a1").Resize(1, UBound(Arr, 2)) = Application.Index(Arr, 1, 0)    '标题
    Range("a1").Select
    Call FillColor(LineCount, UBound(Arr, 2))    '可选
End Sub

'初始化
Private Sub init()
    Dim j As Integer
    Sheets(1).Select

    '1)前5列调整为“统计号,2016年排号,2016年小区号,2016年品种名称,2016年单株号
    If [b1] = "2016年品种名称" Then
        j = Rows(1).Find("品种名称").Column     '查找品种名称的列号
        Columns(j).Cut                          '剪切"2016年品种名称"
        Columns("E:E").Insert Shift:=xlToRight  '插入到D列
        '排号
        j = Rows(1).Find("排号").Column         '查找排号的列号
        Columns(j).Cut                          '剪切"2016年排号"
        Columns("C:C").Insert Shift:=xlToRight  '插入到B列
    End If

    '要在处理前5列后,再排序
    Range("a1").CurrentRegion.Sort key1:=[d1], order1:=xlAscending, Header:=xlYes    'D列 2016年品种名称 升序

    '2)P列有错误的,就删除整行
    On Error Resume Next
    Cells.SpecialCells(xlCellTypeConstants, 16).Delete    '清除 错误常量
    On Error GoTo 0
End Sub

'处理平均行
Sub AverageLine(iData)
    Dim dic As Object               '字典,用于文本型产品的计数
    Dim ProductAvg As Long          '产品的平均行行号
    Dim ProductSum As Double        '数字型产品的和
    Dim ProductCount As Integer     '产品的累计次数
    Dim ProductColumn As Integer    '产品的参照列号
    Dim Crr()                       '为求标准差,准备存放数据的数组
    Dim i As Integer, j As Integer, startRow As Integer, endRow As Integer, temp

    Set dic = CreateObject("scripting.dictionary")
    NotRecord = NotRecord + (LineCount - Record)     'LineCount - Record 表示累加非记录数,即平均行和空白行
    ProductAvg = iData + NotRecord - 1    '某产品的平均行行号 = 累计记录数 + 累计非记录数 - 1
    startRow = ProductAvg - LineCount + 1
    endRow = ProductAvg - 1

    '从第6列(株高cm),到最后1列(经济系数),求各产品的平均值
    For j = 6 To UBound(Arr, 2)
        '1)清零
        ProductSum = 0: ProductCount = 0: ProductColumn = 0: dic.RemoveAll

        '2)求和
        ReDim Crr(startRow To endRow)
        For i = startRow To endRow
            '如果产品的值非空
            If Brr(i, j) <> "" Then
                '如果产品的值是数字
                If IsNumeric(Brr(i, j)) Then
                    '累计产品值的和
                    ProductSum = ProductSum + Brr(i, j)
                    Crr(i) = Brr(i, j)
                End If
                '更新终止排号
                Brr(ProductAvg, 2) = Brr(i, 2)
            End If
        Next i

        '3)求次数
        '更新产品的参照列号
        Select Case j
        Case 10, 14
            ProductColumn = 16
        Case Else
            ProductColumn = j
        End Select
        '求和的列与求次数的列,因为可能不一样,所以必须再循环
        For i = startRow To endRow
            '如果产品的值非空
            If Brr(i, ProductColumn) <> "" Then
                '如果产品的值是数字
                If IsNumeric(Brr(i, ProductColumn)) Then
                    '数字型产品的累计次数
                    ProductCount = ProductCount + 1
                Else
                    '文本型产品的累计次数
                    dic(Brr(i, ProductColumn)) = dic(Brr(i, ProductColumn)) + 1
                End If
            End If
        Next i

        '4)求平均值

        '4-1 数字型 = 和 / 次数
        If ProductCount Then
            Brr(ProductAvg, j) = ProductSum / ProductCount

            '>>>
            'O列 和 Q列,是求标准差
            If j = 15 Or j = 17 Then
                If ProductCount <> 1 Then
                    temp = 0
                    For i = LBound(Crr) To UBound(Crr)
                        temp = temp + (Crr(i) - Brr(ProductAvg, j)) ^ 2
                    Next i
                    Brr(ProductAvg, j) = VBA.Sqr(temp / (ProductCount - 1))
                Else
                    Brr(ProductAvg, j) = "分母不能是0"
                End If
            End If
            '<<<

        End If

        '4-2 '文本型 = 最多次数的条目
        If dic.Count Then Brr(ProductAvg, j) = getItem(dic.keys, dic.items)

    Next j

    '处理前5列
    Brr(ProductAvg, 1) = ""                                                     'A列,统计号
    Brr(ProductAvg, 2) = "  " & Brr(startRow, 2) & "-" & Brr(ProductAvg, 2)     'B列,排号
    Brr(ProductAvg, 3) = "平均"                                                 'C列,材料序号2014年
    Brr(ProductAvg, 4) = Brr(startRow, 4)                                       'D列,材料名称
    Brr(ProductAvg, 5) = "平均"                                                 'E列,株号

    Record = 0
End Sub

'自定义函数:最多次数的条目
Function getItem(k, t) As String
    Dim i As Integer
    Dim temp As Integer     '最大次数
    Dim Id As Integer       '最大次数的下标
    For i = 0 To UBound(k)
        'k是条目的数组,t是条目次数的数组
        If temp < t(i) Then
            temp = t(i)     '最大次数
            Id = i          '最大次数的下标
        End If
    Next i
    getItem = k(Id)    '最大次数下标对应的条目
End Function

'将结果表里每种材料名称的平均行填充颜色
Sub FillColor(LineCount, c)
    Dim r As Integer
    Dim i As Integer
    Sheets(2).Activate
    r = Range("b65536").End(xlUp).Row
    For i = r To 2 Step -LineCount
        Range(Cells(i, 1), Cells(i, c)).Interior.ColorIndex = 24
    Next i
End Sub



鲜籽考种平均-测试7.rar (141.08 KB, 下载次数: 2)
回复

使用道具 举报

 楼主| 发表于 2019-4-24 16:45 | 显示全部楼层
爱疯 发表于 2019-4-24 15:45
Option Explicit

Dim Arr()                   '数据

爱疯老师好,只有一行数据无法计算标准差;标黄之处存在的问题是对的,但是结果仍然不对呀。
以第一组数据为例(2016年品种名称均为0的,即第一组数据):
  按目前程序的统计计算,粒鲜重的标准差为132.8,考种瓜鲜重(kg)的标准差为13.0;
  但实际用STDEV函数计算得出的标准差分别为19.401、1.751

粒鲜重(g)
45.9
71.3
38.9
79.0


考种瓜鲜重(kg)
5.3
6.3
3.6
7.8

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-6 19:17 , Processed in 0.249274 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表