如何根据Excel行中Series列取值为图表动态分配对应数据系列
Excel动态按Series列生成双系列图表的最简方案
不需要新增自定义辅助列,有两种通用实现路径:
方案1:透视图方案(全Excel版本兼容,操作门槛最低)
- 选中你的原始数据区域,按
Ctrl+T转换为超级表(结构化引用表),勾选「表包含标题」确认。这一步的作用是后续新增行、修改单元格内容时,数据范围会自动被识别,不需要手动调整。 - 选中超级表任意单元格,点击「插入」选项卡→「数据透视表」,选择空白区域作为透视表存放位置。
- 在数据透视表字段面板中做如下配置:
- 行区域:拖入
X Value字段 - 列区域:拖入
Series字段 - 值区域:拖入
Y value字段,值字段设置选择你需要的聚合规则(如果同一个X值+同一个Series只有唯一一条数据,选求和/最大值/最小值都不影响结果)
- 行区域:拖入
- 选中透视表任意单元格,插入你需要的图表类型生成透视图即可。
使用效果:修改原始表的Series列取值、新增数据行后,右键点击透视表选择「刷新」,透视表和图表就会自动按最新的系列归属更新。如果想要实现修改后自动刷新不需要手动操作,可按Alt+F11打开VBA编辑器,双击对应工作表粘贴如下代码:
Private Sub Worksheet_Change(ByVal Target As Range) ThisWorkbook.RefreshAll End Sub
方案2:动态命名范围方案(Excel 365/2021及以上版本适用,无需透视表)
如果不想用透视表,可以用动态数组函数定义命名范围作为图表数据源:
- 先按方案1第一步将原始数据转换为超级表,假设超级表默认名称为
表1。 - 点击「公式」选项卡→「定义名称」,依次创建4个命名范围:
- 名称:
系列1_X,引用位置:=FILTER(表1[X Value],表1[Series]="first") - 名称:
系列1_Y,引用位置:=FILTER(表1[Y value],表1[Series]="first") - 名称:
系列2_X,引用位置:=FILTER(表1[X Value],表1[Series]="second") - 名称:
系列2_Y,引用位置:=FILTER(表1[Y value],表1[Series]="second")
- 名称:
- 插入空白目标图表,右键选择「选择数据」,添加两个系列:
- 第一个系列名称填
first,X轴系列值填=当前工作表名称!系列1_X,Y值填=当前工作表名称!系列1_Y - 第二个系列名称填
second,X轴系列值填=当前工作表名称!系列2_X,Y值填=当前工作表名称!系列2_Y
- 第一个系列名称填
配置完成后修改Series列取值,图表会自动实时更新,无需额外操作。
内容的提问来源于stack exchange,提问作者SystemsInCode
相关产品推荐
相关产品推荐

