如何在Google Sheets堆叠条形图中添加第二个条形标签?
我之前也碰到过这个痛点!Google Sheets原生图表的数据标签默认只能绑定单个系列,但不用修改原始数据也能实现你要的双标签条形图,分享两个靠谱的方法:
方法1:辅助列+组合图表(零代码,新手友好)
这种方法靠新增隐藏辅助列来生成第二个标签内容,再通过组合图表把两个标签叠加:
新增辅助列:在原始数据旁边插一列(比如D列),用公式生成你需要的第二个标签内容。举个例子,如果要显示百分比,假设原始数值在B列,总数值在B10,公式可以写:
=TEXT(B2/$B$10,"0.0%")要是需要其他内容(比如分类名称),直接引用对应单元格就行。
设置组合图表:
- 选中包含辅助列的所有数据,点击「插入」→「图表」
- 在右侧图表编辑器里,把图表类型改成「组合图」
- 把原始数值系列设为「条形图」,辅助列系列设为「散点图」(散点图能自由控制标签位置)
- 给散点图设置数据:x轴用对应条形的数值(和原始数值一致),y轴对应条形的分类项
- 给散点图添加数据标签,选择「单元格值」(选辅助列的内容),然后调整标签位置到条形右侧(和第一个标签错开)
- 最后把散点图的标记大小设为0,隐藏掉散点,就只剩双标签了
方法2:Apps Script自定义标签(更灵活,无需辅助列)
如果不想加辅助列,用脚本可以直接给每个条形绑定两个标签:
- 打开脚本编辑器:点击「扩展程序」→「Apps Script」
- 粘贴并修改脚本:
function addDualBarLabels() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const targetChart = sheet.getCharts()[0]; // 这里取第一个图表,可根据需要调整索引 const data = targetChart.getRange().getValues(); // 修改图表标签,把两个内容用换行拼接 const updatedChart = targetChart.modify() .setOption('series.0.dataLabels.text', function(){ // 这里[row][1]是第一个标签(比如数值),[row][2]是第二个标签(比如百分比),按需修改列索引 return `${data[this.row][1]}\n${data[this.row][2]}`; }) .setOption('series.0.dataLabels.position', 'outsideEnd') // 标签位置设为条形外侧 .build(); sheet.updateChart(updatedChart); } - 运行脚本:点击运行按钮,授权后脚本会自动给图表添加上下排列的双标签
效果对比说明:
- 当前效果:每个条形仅显示单个标签(如纯数值)
- 目标效果:每个条形显示上下两个标签(如数值+百分比,或其他组合内容)
内容的提问来源于stack exchange,提问作者willheard27
相关产品推荐
相关产品推荐

