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

Google Sheets下拉列表筛选:排除已分配及故障装卸平台

Google Sheets动态下拉菜单优化方案

一、修改数据源公式,实现双重筛选

你当前的公式仅实现了「Planning标签未分配平台」的筛选,现在需要加入「BDD标签非故障(非Out of service)」的条件,可使用以下公式替换原公式:

=QUERY(
  {
    QUERY(BDD!A2:B, "select A where B <> 'Out of service' and A <> ''", 0),
    QUERY({Schedule!F2:F; Planning!K2:K}, "select count(Col1) where Col1 <> '' group by Col1 label count(Col1) ''", 0)
  },
  "select Col1 where Col2 = 1", 0
)
  • 说明:假设BDD标签中平台列是A列、状态列是B列,如果你的表格列位置不同,直接替换对应单元格范围即可。
  • 逻辑:先从BDD表筛选出正常运行的平台,再和原有的「仅在Schedule或Planning中出现1次(即未被分配)」的条件结合,最终得到符合要求的平台列表。

二、用onEdit()脚本消除「invalid」提示

当用户输入/选择无效值时,单元格会出现「invalid」提示,通过Google Apps Script的onEdit()函数可自动处理:

  1. 打开表格,点击「扩展程序」→「Apps脚本」
  2. 删除默认代码,粘贴以下脚本:
function onEdit(e) {
  const activeSheet = e.source.getActiveSheet();
  const editedCell = e.range;

  // 仅处理「Schedule」标签的「Platform」列(假设Platform是F列,对应列号6,自行调整)
  if (activeSheet.getName() !== "Schedule" || editedCell.getColumn() !== 6) return;

  // 获取有效下拉选项列表
  const validPlatforms = SpreadsheetApp.getActiveSpreadsheet()
    .getRange("辅助表!A2:A") // 替换为你存放下拉数据源公式的单元格范围
    .getValues()
    .flat()
    .filter(val => val !== "");

  const inputVal = editedCell.getValue();

  // 若输入值不在有效列表中,清除单元格内容(可改为设置提示文本)
  if (!validPlatforms.includes(inputVal)) {
    editedCell.clearContent();
    // 可选:设置提示文本 → editedCell.setValue("请选择有效平台");
  }
}
  • 注意:替换"辅助表!A2:A"为实际存放下拉数据源的单元格区域;调整editedCell.getColumn() !== 6中的数字为Platform列的实际列号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 16:55:33