Excel 根据装箱列表计算标准偏差
假设我有一个整数值列表,Excel 根据装箱列表计算标准偏差,excel,math,statistics,Excel,Math,Statistics,假设我有一个整数值列表,1到10。没有实际的数据集,我只得到每个值的数量。例如: 1 | 73 2 | 121 3 | 155 4 | 149 5 | 187 6 | 180 7 | 166 8 | 148 9 | 120 10 | 81 如您所见,单独列出每个值(731s、1212s等等)会非常耗时,但这是我知道如何使用STDEV()的唯一方法 如何计算这些值的标准偏差 自定义用户定义函数(又称UDF)可能是最方便的方法 A列中的值已分解为B列中的倍数,转换为D2:D13
1
到10
。没有实际的数据集,我只得到每个值的数量。例如:
1 | 73
2 | 121
3 | 155
4 | 149
5 | 187
6 | 180
7 | 166
8 | 148
9 | 120
10 | 81
如您所见,单独列出每个值(731
s、1212
s等等)会非常耗时,但这是我知道如何使用STDEV()的唯一方法
如何计算这些值的标准偏差 自定义用户定义函数(又称UDF)可能是最方便的方法 A列中的值已分解为B列中的倍数,转换为D2:D1381(见下文) E2:G2中的、和公式为
=STDEV($D2:$D1381)
=STDEV.P($D2:$D1381)
=STDEV.S($D2:$D1381)
E3:G3中的UDF公式为
=udf_STDEV_Exploded($A2:$A11, 1) ' or =udf_STDEV_Exploded($A2:$A11)
=udf_STDEV_Exploded($A2:$A11, 2)
=udf_STDEV_Exploded($A2:$A11, 3)
自定义项公式基于以下模块代码
Function udf_STDEV_Exploded(rng As Range, Optional iTYP As Long = 1)
Dim r As Long, v As Long, vVALs As Variant
ReDim vVALs(0)
For r = 1 To rng.Rows.Count
For v = 1 To rng.Cells(r, 2).Value2
vVALs(UBound(vVALs)) = rng.Cells(r, 1).Value2
ReDim Preserve vVALs(0 To UBound(vVALs) + 1)
Next v
Next r
ReDim Preserve vVALs(0 To UBound(vVALs) - 1)
Select Case iTYP
Case 1
udf_STDEV_Exploded = WorksheetFunction.StDev(vVALs)
Case 2
udf_STDEV_Exploded = WorksheetFunction.StDev_P(vVALs)
Case 3
udf_STDEV_Exploded = WorksheetFunction.StDev_S(vVALs)
Case Else
'do nothing
End Select
End Function
我添加了一个使用、或函数处理数组的选项。STDEV功能是默认设置
附录
将A2:B11中的值分解为工作表上的一长列值的代码为
Sub stdev_vals()
Dim rw As Long, f As Long, n As Long
With Worksheets("Sheet1")
For rw = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
.Cells(Rows.Count, 4).End(xlUp).Offset(1, 0).Resize(.Cells(rw, 2).Value2, 1) = .Cells(rw, 1).Value2
Next rw
End With
End Sub
可能的替代方案,假设
1
在A1中,在C1中:
=B1*(A1-SUMPRODUCT(A$1:A$10,B$1:B$10)/SUM(B$1:B$10))^2
复制到C10。在B11中,复制到C11:
=SUM(B1:B10)
在D11中:
=SQRT(C11/(B11-1))
- 如果
是错误答案,请忘记以上内容李>2.520979
以上只是将其分解为与可用数据格式匹配的步骤 首先计算平均值(此处标记为_AVG): 作为数组公式输入(CTRL-SHIFT-ENTER)。然后计算标准偏差:
=SQRT(SUM((BIN_NUM-THE_AVG)^2*REPEATS)/(SUM(REPEATS)-1))
再次作为数组公式输入。如果需要,可以将两个计算折叠为一个公式:
=SQRT(SUM((BIN_NUM-SUM(BIN_NUM*REPEATS)/SUM(REPEATS))^2*REPEATS)/(SUM(REPEATS)-1))
在这些公式中,BIN_NUM表示包含BIN编号的单元格范围(如A1:A10),REPEATS表示包含每个BIN计数的单元格范围(如B1:B10)
希望这能有所帮助也许在这里:
=SQRT(SUM((BIN_NUM-SUM(BIN_NUM*REPEATS)/SUM(REPEATS))^2*REPEATS)/(SUM(REPEATS)-1))