Excel如何对数据透视表中001、002类子集数据计算STDEV.P总体标准差

你之前尝试失败的核心原因是数据透视表的计算字段不支持数组运算,STDEV.P嵌套IF的数组逻辑无法在透视表计算字段中直接运行,以下是几种可行的解决办法:
解决方法
方案1:透视表内置功能直接计算(无需写公式)
这是操作成本最低的方案:
- 把标注001/002的分类字段拖到透视表的「筛选器」区域,年份字段拖到「行」/「列」区域
- 把需要计算标准差的数值字段拖到「值」区域,点击值字段下拉箭头选择「值字段设置」
- 在弹出窗口的计算类型列表里选择「总体标准差」,确认后即可得到计算结果
- 如果需要同时查看001、002两类的结果,把分类字段拖到「行」/「列」区域和年份并列,就能输出每一年两类数据各自的总体标准差
方案2:源数据加辅助列实现自定义计算
如果需要保留自定义的筛选计算逻辑,可以给源数据新增辅助列:
- 在源数据空白列新增表头「目标子集数值」,单元格输入公式
=IF(OR(分类列="001",分类列="002"),数值列,NA()),替换公式中的列名为你表格的实际列名 - 刷新数据透视表,把新增的「目标子集数值」字段拖到值区域,设置值字段计算类型为「总体标准差」即可,公式返回的NA值会被透视表自动忽略,不会参与计算
方案3:直接用单元格公式计算(无需透视表)
如果不需要生成透视表结构,只想直接拿到计算结果,可以按Excel版本选择对应公式:
Excel 365/2021及以上版本
用FILTER筛选后直接套STDEV.P即可:
=STDEV.P(FILTER(数值列, (分类列="001")+(分类列="002")))
Excel 2019及更早版本
需要使用数组公式,输入完成后按Ctrl+Shift+Enter三键触发运算:
=STDEV.P(IF(OR(分类列="001",分类列="002"),数值列,""))
内容的提问来源于stack exchange,提问作者ODCODE
相关产品推荐
相关产品推荐

