Excel:在未知列中查找多值并生成条形图
实现Excel动态数据的条形图方案
刚好之前处理过类似的动态图表需求,给你几个实用的方案,按你的Excel版本和使用习惯选就行:
方案一:用结构化表格(最省心,推荐)
这是Excel自带的动态数据区域功能,完全不用写公式,新增/删除数据时图表自动同步:
- 选中你的整个数据区域(包括表头
Name、Site、Value) - 按下快捷键
Ctrl+T,在弹出的对话框里勾选「我的表格有标题」,点击确定,普通数据就变成结构化表格了(会自动带筛选器) - 选中表格里的任意单元格,点击「插入」选项卡,选你需要的条形图类型(比如簇状条形图)
- 之后不管你在表格末尾新增行、删除行,或者修改单元格数据,图表都会自动更新,完全不用手动调整数据源
方案二:定义动态名称(适合旧版Excel)
如果你的Excel版本没有结构化表格功能(比如Excel 2016及更早),可以用定义名称的方式实现动态引用:
- 点击「公式」选项卡 → 「定义名称」
- 分别给三列数据定义动态名称:
- 名称:
Dynamic_Name,引用位置输入:=OFFSET($A$2,0,0,COUNTA($A:$A)-1,1) - 名称:
Dynamic_Site,引用位置输入:=OFFSET($B$2,0,0,COUNTA($B:$B)-1,1) - 名称:
Dynamic_Value,引用位置输入:=OFFSET($C$2,0,0,COUNTA($C:$C)-1,1)
(注:$A$2是第一行数据的起始单元格,COUNTA($A:$A)-1是统计除表头外的非空行数)
- 名称:
- 插入空白条形图,右键图表 → 「选择数据」
- 在「图例项(系列)」里点击「添加」:系列名称选表头
$B$1,系列值选刚才定义的Dynamic_Value - 在「水平(分类)轴标签」里点击「编辑」,选择定义好的
Dynamic_Name - 以后数据新增或删除时,只要列里没有空行,名称的引用范围会自动调整,图表也会同步更新
方案三:用动态数组函数(Excel 365/2021专属)
如果用的是Excel 365或2021版本,动态数组函数能更灵活地筛选动态数据:
- 在空白区域(比如E1:G1)复制表头
Name、Site、Value - E2单元格输入公式:
=FILTER(A:A,A:A<>""),按回车后会自动溢出所有非空的Name数据 - F2输入:
=FILTER(B:B,B:B<>""),G2输入:=FILTER(C:C,C:C<>""),同样会自动溢出对应列的非空数据 - 选中E1到G列的溢出区域,插入条形图即可
- 后续源数据新增/删除行,溢出区域会自动更新,图表也会跟着同步变化
注意事项
- 结构化表格方案优先推荐,操作最简单,出错概率最低
- 定义名称的方案要确保数据区域没有空行,否则
COUNTA会统计错误导致引用范围不准 - 动态数组方案仅支持Excel 365/2021及以后的版本
内容的提问来源于stack exchange,提问作者I-Dont-Understand
相关产品推荐
相关产品推荐

