You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:在Google Sheets中实现支票簿式Dependent Dropdowns

Google Sheets长列表联动下拉脚本实现方案

问题背景

此前用自制Excel表格追踪财务状况,迁移至Google Sheets后,联动下拉列公式失效。查阅多数方案仅适配主表单一选择的联动下拉,无法满足支票簿这类长列表场景,需代码实现方案。已准备简化版表格(仅保留数月数据,清除多数数据验证与公式)。

核心需求

  • 将CategoryMaster工作表的内容同步至Jan、Feb等月份工作表
  • 在月份工作表的D列选择分类后,对应联动下拉列仅显示该分类下的选项

脚本实现步骤

1. 进入脚本编辑器

打开目标Google Sheets,点击「扩展程序」→「Apps Script」进入脚本编辑界面。

2. 粘贴脚本代码

删除编辑器默认代码,替换为以下代码:

function onEdit(e) {
  const sheet = e.source.getActiveSheet();
  // 按需扩展月份工作表名称
  const monthSheets = ['Jan', 'Feb', 'Mar'];
  if (!monthSheets.includes(sheet.getName())) return;

  const range = e.range;
  // 监听D列(分类列)第2行及以下的编辑
  if (range.getColumn() !== 4 || range.getRow() < 2) return;

  const selectedCategory = range.getValue();
  const masterSheet = e.source.getSheetByName('CategoryMaster');
  const masterData = masterSheet.getDataRange().getValues();
  
  // 筛选当前分类对应的选项
  const options = masterData.filter(row => row[0] === selectedCategory && row[1]).map(row => row[1]);

  // 为当前行E列设置联动下拉验证(若需其他列,修改数字5为对应列号)
  const targetCell = sheet.getRange(range.getRow(), 5);
  const rule = SpreadsheetApp.newDataValidation()
    .requireValueInList(options, true)
    .setAllowInvalid(false)
    .build();
  
  targetCell.setDataValidation(rule);
}

3. 脚本配置说明

  • 月份工作表范围:修改monthSheets数组,添加实际需要的月份表名称(如'Apr'、'May')
  • 监听列调整:若分类列不是D列,修改range.getColumn() !== 4中的数字4为对应列号(A列=1,B列=2...)
  • 联动列调整:若联动下拉列不是E列,修改getRange(range.getRow(), 5)中的数字5为对应列号

4. 测试验证

在任意月份工作表的D列选择分类,对应行的联动列会自动加载该分类下的选项下拉列表。


内容的提问来源于stack exchange,提问作者Psychphrancisco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 00:12:47