需结合动态公式、辅助区域与图表配置实现双轴联动交互式图表,具体包括QUERY+INDIRECT联动、FILTER实时筛选、Apps Script动态重绘及图表编辑器双轴格式化四步。

如果您在 Google Sheets 中需要同时展示量纲差异显著的两组数据(如销售额与利润率),并希望用户通过交互操作同步控制双轴图表的显示范围或数据系列,则需结合动态公式、辅助区域与图表配置实现联动效果。以下是构建双轴联动交互式图表的具体方法:
一、使用 QUERY + INDIRECT 构建双数据源联动结构
该方法通过下拉菜单选择主维度(如产品名称),QUERY 函数提取对应的时间与数值对,INDIRECT 则动态引用第二组指标(如同比变化率)所在列,确保左右Y轴数据同步响应同一筛选条件。
1、在 B1 单元格设置数据验证下拉菜单,来源为所有产品名称列表(如 =UNIQUE(A2:A))。
2、在 D1 输入标题“日期”,E1 输入标题“销售额”,F1 输入标题“增长率”。
3、在 D2 输入公式 =QUERY({A2:C}, "SELECT Col1 WHERE Col2='"&B1&"'", 0),提取所选产品的日期列。
4、在 E2 输入公式 =QUERY({A2:C}, "SELECT Col3 WHERE Col2='"&B1&"'", 0),提取对应销售额。
5、在 F2 输入公式 =INDIRECT("G2:G"&COUNTA(E2:E)+1),其中 G 列预先存放各产品对应的环比增长率数据,且区域命名与 B1 值一致(如“产品A_增长率”)。
6、选中 D1:F 列的非空区域,插入折线图;右键图表 → “编辑图表” → “自定义” → 将“增长率”系列设置为次坐标轴。
二、借助 FILTER 函数实现双轴数据实时筛选联动
此方法适用于原始数据为扁平化长表结构(时间、类别、指标名、数值四列),FILTER 可同时按两个条件提取主轴与次轴所需行集,保证时间轴完全对齐,避免因缺失值导致图表错位。
1、确保原始数据表包含四列:A列为日期,B列为产品名称,C列为指标类型(如“销售额”“毛利率”),D列为数值。
2、在 H1 设置下拉菜单,选项为产品名称;在 I1 设置另一下拉菜单,选项为指标类型(如“销售额”“毛利率”)。
3、在 J1 输入标题“日期”,K1 输入标题“主轴值”,L1 输入标题“次轴值”。
4、在 J2 输入公式 =UNIQUE(FILTER(A2:A, (B2:B=H1)*(C2:C=I1))),获取所选产品与主指标共有的时间点。
5、在 K2 输入公式 =FILTER(D2:D, (A2:A=J2#)*(B2:B=H1)*(C2:C=I1)),提取主轴数值。
6、在 L2 输入公式 =FILTER(D2:D, (A2:A=J2#)*(B2:B=H1)*(C2:C="毛利率")),提取固定次轴指标(此处为毛利率)。
7、选中 J1:L 区域插入组合图,将“次轴值”系列指定为次坐标轴,并启用双轴显示。
三、利用 Apps Script 动态重绘双轴图表
当内置函数无法满足复杂联动逻辑(如点击图表某点后自动切换双轴数据源)时,可编写 Apps Script 监听单元格变更事件,触发图表数据区域更新与重绘,实现真正意义上的交互闭环。
1、点击菜单栏“扩展程序” → “Apps Script”,新建脚本文件。
2、在脚本中定义 onEdit(e) 函数,监听 B1 单元格编辑动作。
3、在函数内使用 SpreadsheetApp.getActive().getRange("D2:F").clearContent() 清除旧辅助数据。
4、调用 setValues() 方法将新 FILTER 结果写入 D2:F 区域,覆盖原数据。
5、执行 ChartService 新建图表或更新现有图表对象,指定新数据范围并强制刷新。
6、保存脚本并部署为“编辑时运行”的触发器,确保每次下拉选择后图表自动重绘双轴内容。
四、配合图表编辑器手动配置双轴格式与交互样式
Google Sheets 图表编辑器支持对双轴进行独立格式化,包括刻度范围、数字格式、线条粗细及图例位置,是保障联动效果可视化的最后关键步骤。
1、点击已插入的图表 → 右上角“三点” → “编辑图表”。
2、在“设置”标签页中,勾选“堆积”选项关闭(确保双轴不叠加)。
3、进入“自定义”标签页 → 展开“系列”,找到次轴系列(如“增长率”)→ 勾选“在次坐标轴上绘制”。
4、分别展开“主坐标轴”与“次坐标轴”设置项,将主轴数字格式设为“#,##0”,次轴设为##0.0%。
5、在“图例”子项中,将位置设为底部,并勾选“显示图例”以明确区分双轴含义。
6、返回“设置”标签页 → 开启“滚动条”选项,允许用户横向拖动查看长周期数据。










