繁体   English   中英

基于脚本的依赖下拉列表不起作用(表格)

[英]Script based Dependent Drop-Down List not working (Sheets)

我已设置此脚本以在单元格 Y4 上为我提供一个下拉列表,具体取决于在单元格 S4 上选择的值。 这两个值来自的数据基于另一个名为 DW 的工作表,从第 2 行开始,因为它有标题。

function onEdit(){
  var tabLists = "DW";
  var tabValidation = "EditItem";
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var datass = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(tabLists);
  var activeCell = ss.getActiveCell();

  if(activeCell.getColumn() == 19 && activeCell.getRow() == 4 && ss.getSheetName() == tabValidation){

    activeCell.offset(0, 6).clearContent().clearDataValidations();

    var makes = datass.getRange("A2:C").getValues();

    var makeIndex = makes[0].indexOf(activeCell.getValue()); //This gives me row2 to check below, but I need the column data, instead. How to change this one then?

    if(makeIndex != 0){

      var validationRange = datass.getRange("C2:C");
        var validationRule = SpreadsheetApp.newDataValidation().requireValueInRange(validationRange).build();
        activeCell.offset(0, 6).setDataValidation(validationRule);

     }  

  }

}

根据在 S4 上选择的项目名称,我从 Y4 上列出的 DW("C2:C") 获得列表,但它没有“过滤”。

关于我缺少什么的任何信息?

谢谢!

如果我正确理解了您的问题-问题出在您的陈述中if(makeIndex != 0)

请记住,如果未在数组中找到条目,则indexOf方法返回-1而不是0

因此,如果您只想在activeCell.getValue()包含在"C2:C"中的情况下实现数据验证,则应该查询if(makeIndex != -1)

更新

  • 您想知道B列中的哪一行包含S4中的值
  • 您希望此行的C列中的值用于Y4中的数据验证

在这种情况下,您需要

  • B列中的条目转换为可搜索的数组 - 这可以使用map()
  • C列中找到相应的值 - 这可以通过使用检索到的索引手动构建单元格的 A1 表示法来完成

样本:

    var makes = datass.getRange("A2:C").getValues();    
    var searchArray=makes.map(function(e){return e[1];});                            
    var makeIndex = searchArray.indexOf(activeCell.getValue());    
    if(makeIndex != -1){
      var validationRange = datass.getRange("C" + (2+makeIndex));
      var validationRule = SpreadsheetApp.newDataValidation().requireValueInRange(validationRange).build();
      activeCell.offset(0, 6).setDataValidation(validationRule);

    } 

笔记:

  • 看来您没有使用 A 列,因此无需将其包含在范围makes

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM