如何通过应用脚本使用Google表格中的逗号分隔值的单元格创建动态下拉列表

时间:2018-09-28 18:21:29

标签: google-apps-script google-sheets

下面的脚本允许我使用基于单元格上选择的值设置的命名范围自动创建动态下拉列表

function depDrop_(range, sourceRange){
    var rule = 
    SpreadsheetApp.newDataValidation().requireValueInRange(sourceRange, 
    true).build();
    range.setDataValidation(rule);
    }
function onEdit (){
    var aCell = SpreadsheetApp.getActiveSheet().getActiveCell();
    var aColumn = aCell.getColumn();
    if (aColumn == 3 && SpreadsheetApp.getActiveSheet()){
    var range = SpreadsheetApp.getActiveSheet().getRange(aCell.getRow(), 
                aColumn + 1);
    var sourceRange = 
    SpreadsheetApp.getActiveSpreadsheet().getRangeByName(aCell.getValue()); 
    depDrop_(range, sourceRange);
    }
    else if (aColumn == 4 && SpreadsheetApp.getActiveSheet()){
       var range = SpreadsheetApp.getActiveSheet().getRange(aCell.getRow(), aColumn + 1);
       var sourceRange = SpreadsheetApp.getActiveSpreadsheet().getRangeByName(aCell.getValue());
       depDrop_(range, sourceRange);
    }
    }

我想做的是使用一个逗号分隔值(而不是namedranges)的单元格作为动态下拉列表,我想根据另一个单元格上的选定值自动创建该列表。任何想法将不胜感激!

1 个答案:

答案 0 :(得分:0)

我已经看到了此代码所基于的YouTube video。这是一个非常非常复杂的问题的非常非常简单的解决方案。我强烈建议您尝试使用该脚本,但要使用逗号分隔的值作为输入范围。

我建议使用此公式从各个单元格中提取csv值。

=TRANSPOSE(SPLIT(B3,","))

使用SPLIT分隔单元格中的各个元素。然后使用TRANSPOSE垂直定向数据。如果数据不是按“正确的”顺序排列,您也可以放入SORT。


data validation use csv values

屏幕截图以csv格式显示值;使用此公式将它们提取并转置。然后按照YouTube视频的要求命名范围。

这实际上是创建动态的多依赖下拉列表的最简单的方法