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

Google Sheets非动态下拉菜单:显示描述存储对应ID

实现Google Sheets非动态下拉(显示描述,存储ID)

准备数据

先把ID和描述数据存到表格的某个固定区域(比如Sheet2的A1:B4),确保ID在A列、描述在B列:

IDDesc
AAAn option
ABDifferent option
B3Some other option

步骤1:创建显示描述的下拉列表

  1. 选中需要添加下拉的目标单元格(比如Sheet1的A1)
  2. 点击菜单栏「数据」→「数据验证」
  3. 在弹出窗口中配置:
    • 「条件」选择「列表从范围」
    • 输入描述所在的固定范围,比如Sheet2!B2:B4
    • 勾选「显示下拉箭头」,按需设置「拒绝输入无效数据」等选项
    • 点击「保存」

步骤2:实现选择描述后存储ID

分两种场景实现,按需选择:

场景1:下拉单元格直接替换为ID

如果希望用户选完描述后,单元格自动变为对应的ID,用脚本实现:

  1. 点击菜单栏「扩展程序」→「Apps Script」
  2. 删除默认代码,粘贴以下脚本:
function onEdit(e) {
  const targetCell = e.range;
  // 替换为你的下拉单元格范围,例:Sheet1的A列
  const dropdownArea = SpreadsheetApp.getActiveSpreadsheet().getRange('Sheet1!A:A');
  const dataSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet2');
  // 替换为你的ID-描述数据范围
  const dataArea = dataSheet.getRange('A2:B4');
  const dataList = dataArea.getValues();

  // 判断编辑的单元格是否在下拉范围内
  if (targetCell.getSheet().getName() === dropdownArea.getSheet().getName() 
      && targetCell.getRow() >= dropdownArea.getRow() 
      && targetCell.getColumn() === dropdownArea.getColumn()) {
    const selectedDesc = targetCell.getValue();
    // 匹配对应的ID并替换
    for (let i = 0; i < dataList.length; i++) {
      if (dataList[i][1] === selectedDesc) {
        targetCell.setValue(dataList[i][0]);
        break;
      }
    }
  }
}
  1. 修改脚本中的dropdownArea和dataArea为你的实际范围
  2. 点击「保存」,给脚本命名(比如DescToID),完成授权后即可使用

场景2:下拉单元格保留描述,ID存储在另一单元格

比如下拉在Sheet1的A1,ID存到Sheet1的B1:

  1. 在B1单元格输入公式:
=IFERROR(VLOOKUP(A1, Sheet2!B2:A4, 2, FALSE), "")
  • 公式说明:用VLOOKUP匹配A1中的描述,返回Sheet2对应行的ID;IFERROR处理无匹配时显示空值
  1. 下拉填充公式到需要的行即可

注意事项

  • 脚本方案是实时替换,选完描述立刻变为ID;公式方案是联动显示,下拉单元格保留描述、ID在指定单元格
  • 因为是非动态需求,所有范围都用固定区域即可,无需使用动态函数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 16:40:41