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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用带有逗号分隔值的单元格通过apps脚本创建动态下拉列表相关的知识,希望对你有一定的参考价值。

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

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);
    }
    }

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

答案

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

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

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

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


data validation use csv values

屏幕截图显示了csv格式的值;它们是使用这个公式提取和转置的。然后按照YouTube视频的要求命名范围。

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

以上是关于如何使用带有逗号分隔值的单元格通过apps脚本创建动态下拉列表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SQL 查询创建逗号分隔的列表?

如何在一个单元格中查找每个逗号分隔值?

试图在列的每个单元格中查找重复的逗号分隔文本

如何使用带有逗号分隔值的 IIB 覆盖命令

java如何解析excel一个单元格中逗号分隔的数据

将逗号分隔的单元格拆分为多行,保持原始行不变?