【问题标题】:Dependent Drop Down Lists从属下拉列表
【发布时间】:2019-12-09 21:14:28
【问题描述】:

我目前正在设计一个依赖下拉列表,我使用 Indirect 函数设置了该列表。在“I”列中,我有一个由“Livery”和“Operator”组成的下拉列表,相关下拉列表位于“K”列中,其中列出了取决于选择 Livery 或 Operator 的相关详细信息。

但是,我有第三个项目要添加到“I”列的下拉列表中,即“名称”,但如果选中,我希望这需要手动输入“K”列 - 是否可以如果选择了 Livery 或 Operator,工作表会给我一个相关的下拉列表,但如果选择 Name,则会有一个用于手动输入的空白​​单元格?

【问题讨论】:

  • 如果可能,那么只能通过脚本 - 否则不会

标签: google-apps-script google-sheets drop-down-menu scripting


【解决方案1】:

您的问题可以通过使用 Apps 脚本和编写脚本来解决。

第一个功能是使用.newDataValidation() 方法创建具有所需值的下拉菜单。

function createDropdown() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var rangeRule = SpreadsheetApp.newDataValidation().requireValueInList(['Livery','Operator','Name'],true).build();
  ss.getRange('I1').setDataValidation(rangeRule);
}

第二个函数将用于根据K cell 中的选择更新I cell

//the installable trigger 
function onEditTrigger(e) {
    var sheet = e.range.getSheet();
    var cellValue = e.range.getValue();
    var liveryOptions = ['livery1', 'livery2', 'livery3', 'livery4'];
    var operatorOptions = ['operator1', 'operator2', 'operator3', 'operator4'];

    if (cellValue == 'Name') {
      SpreadsheetApp.getUi().alert('Input your name in the K1 cell');
      sheet.getRange("K1").setDataValidation(null);
      sheet.getRange("K1").clear();
      sheet.getRange("K1").setBackground("yellow");
    } else if (cellValue == 'Operator') {
      sheet.getRange("K1").setBackground("white").setValue("Choose an option");
      var dataValidation = SpreadsheetApp.newDataValidation().requireValueInList(operatorOptions, true).build();
      sheet.getRange("K1").setDataValidation(dataValidation);
    } else if (cellValue == 'Livery') {
      sheet.getRange("K1").setBackground("white").setValue("Choose an option");
      var dataValidation = SpreadsheetApp.newDataValidation().requireValueInList(liveryOptions, true).build();
      sheet.getRange("K1").setDataValidation(dataValidation);
    }
}

为了使您的下拉选择起作用,您应该在第二个函数中添加一个installable trigger

您可以转到项目的触发器并创建具有以下属性的新触发器:

当您运行脚本时,您只需运行createDropdown() 函数,因为触发器将在后台连续运行。

下面是脚本的工作原理:

Livery被选中

Name被选中时Alert prompt会出现要求用户在单元格上输入数据

此外,以下链接可能对您有所帮助:

  1. Installable Triggers;

  2. DataValidation Class;

  3. Apps Script.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-18
    • 2020-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    相关资源
    最近更新 更多