首页 > 解决方案 > 更改另一个下拉选项后更改一组单元格的下拉选项

问题描述

我有一些任务行,列是天。所有单元格都有一个下拉列表,选项来自另一张表,只有“Y”或“N”。如果任务完成,我在下拉菜单中选择 Y。

如果同一行之一是“Y”,我想将所有下拉选项设置为“Y”。因此,如果我有一排满是“N”并且我将一个更改为“Y”,其余的应该更改为“Y”。与“N”相同,如果一个单元格设置为“N”,则同一行的所有其他单元格都应更改为“N”。

尝试了一些东西,但总是以某种循环错误告终。

在此处输入图像描述

标签: javascriptgoogle-apps-scriptgoogle-sheets

解决方案


代码片段:

调整参数(在下面的代码中带有注释)以匹配您的特定场景。另请查看随附的 gif,以了解我如何根据示例表选择特定参数。

function onEdit(e) {
  const startRow = 2; // assuming header in row 1
  const startCol = 4; // dropdown starts in column D
  const endCol = 7; // dropdown ends in column G
  const sheetName = "Sheet1"; // select the name of your sheet
  const ss = e.source;
  const as = ss.getActiveSheet();
  const ar = e.range;
  const row = ar.getRow();
  const col = ar.getColumn();
  if (as.getName()==sheetName && row>=startRow && col>=startCol && col<=endCol){
    if(["Y","N"].includes(ar.getValue())){
      as.getRange(row,startCol,1,endCol-startCol+1)
      .setValues([(new Array(endCol-startCol+1))
      .fill(ar.getValue())])
    }
  }
}

笔记:

onEdit是一个触发函数。您应该手动执行它,如果这样做,您实际上会收到错误(因为使用了事件对象)。您所要做的就是将此代码片段保存到脚本编辑器中,然后它会在编辑时自动触发。

代码片段的输出:

在此处输入图像描述


推荐阅读