如何在Excel及LO Calc中基于(category, value)长格式分类数据制作箱线图
如何在Excel及LO Calc中基于(category, value)长格式分类数据制作箱线图
嘿,这个问题我之前也碰到过!长格式的(category, value)数据直接做箱线图,确实会让Excel和LO Calc有点“摸不着头脑”——默认只会给两列各生成一个箱线,完全达不到按分类分组的效果。除了手动做数据透视表转宽格式,还有几个更高效的办法,我给你详细说说:
Excel 解决方案
1. 用动态数组函数自动转宽格式(适合Excel 365/2021)
如果你的Excel版本支持动态数组,这是最省心的方法,数据更新后还能自动同步:
- 先提取所有唯一分类:在空白单元格(比如C1)输入
=UNIQUE(A:A)(假设你的category列在A列),回车后会自动溢出所有不重复的分类(比如foo、bar、baz) - 接着提取每个分类对应的数值:在第一个分类旁边的单元格(比如D1)输入
=FILTER(B:B,A:A=C1)(B列是value列),回车后会自动列出该分类下的所有数值,后续分类直接下拉公式即可 - 现在你就得到了和示例中一样的宽格式数据,直接选中这些数据插入箱线图就行
2. 用数据透视图快速生成分组箱线图
不想写函数的话,数据透视图也能帮你一键搞定:
- 选中所有长格式数据(包括表头),点击「插入」选项卡的「数据透视图」,选择一个放置位置
- 在右侧字段列表里,把
category拖到「列」区域,把value拖到「行」区域 - 右键透视表,选择「数据透视表布局」改成「表格形式」,就能看到每个分类对应一列数值,直接选中透视表数据插入箱线图即可
LO Calc 解决方案
LO Calc对长格式数据的适配性更好,两种方法任选:
1. 数据透视表一键转宽格式
- 选中长格式数据,点击「数据」选项卡的「数据透视表」,设置好放置位置后确定
- 在透视表字段面板,把
category拖到「列」字段,value拖到「行」字段 - 右键透视表,选择「数据透视表布局」改成「表格形式」,就能看到每个分类对应一列数值,直接选中做箱线图就行
2. 高级筛选提取分类数据
- 先提取唯一分类:选中category列,点击「数据」→「高级筛选」,勾选「选择不重复的记录」,把结果复制到空白列
- 针对每个分类,再次用高级筛选:选中整个数据区域,点击「高级筛选」,设置条件为“category等于当前分类”,把结果复制到对应分类的旁边列,重复操作直到所有分类的数据都提取完成,最后插入箱线图
补充说明
目前不管是Excel还是LO Calc,都还不支持直接基于长格式数据生成分类箱线图,必须转成“一个分类一列数据”的宽格式。上面的方法都是用工具或函数自动完成转换,比手动整理数据高效太多,还能避免出错~
备注:内容来源于stack exchange,提问作者einpoklum




