我正在尝试创建一个跟踪器,该跟踪器具有两个依赖于同一列的下拉列。例如,我为客户提供3种不同的服务,每种服务都有自己的支持类型和结果。选择一项服务后,我希望“支持”和“结果”列中填充与该服务相关的项目。
当前将填充一些结果选项,但不是全部。
我发现了并且正在尝试操纵本文How do you do dynamic / dependent drop downs in Google Sheets?中使用的代码。
我创建了第二部分以获取结果的下拉列表。这是我已经完成的工作的示例文档,https://docs.google.com/spreadsheets/d/1KmET4ilVqxGQwnIKGGo2hPFxWcQCtrXta-z8OHJT_5c/edit?usp=sharing
谢谢!
function onEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var myRange = SpreadsheetApp.getActiveRange();
var dvSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Dropdowns");
var option = new Array();
var startCol = 0;
// Dynamic dropown for Support Provided
if(sheet.getName() == "Tracker" && myRange.getColumn() == 3 && myRange.getRow() > 1){
if(myRange.getValue() == "Credit"){
startCol = 3;
} else if(myRange.getValue() == "Legal"){
startCol = 4;
} else if(myRange.getValue() == "Housing"){
startCol = 5;
} else {
startCol = 6
}
if(startCol > 0 && startCol < 6){
option = dvSheet.getSheetValues(3,startCol,6,1);
var dv = SpreadsheetApp.newDataValidation();
dv.setAllowInvalid(false);
//dv.setHelpText("Some help text here");
dv.requireValueInList(option, true);
sheet.getRange(myRange.getRow(),myRange.getColumn() + 1).setDataValidation(dv.build());
}
if(startCol == 6){
sheet.getRange(myRange.getRow(),myRange.getColumn() + 1).clearDataValidations();
}
}
// Dynamic dropdown for Outcome
if(sheet.getName() == "Tracker" && myRange.getColumn() == 3 && myRange.getRow() > 1){
if(myRange.getValue() == "Credit"){
startCol = 7;
} else if(myRange.getValue() == "Legal"){
startCol = 8;
} else if(myRange.getValue() == "Housing"){
startCol = 9;
} else {
startCol = 10
}
if(startCol > 6 && startCol < 10){
option = dvSheet.getSheetValues(6,startCol,10,1);
var dv = SpreadsheetApp.newDataValidation();
dv.setAllowInvalid(false);
//dv.setHelpText("Some help text here");
dv.requireValueInList(option, true);
sheet.getRange(myRange.getRow(),myRange.getColumn() + 2).setDataValidation(dv.build());
}
if(startCol == 10){
sheet.getRange(myRange.getRow(),myRange.getColumn() + 2).clearDataValidations();
}
}
}
答案 0 :(得分:0)
您为“结果”下拉列表的选项列表(代码行48)指定了错误的开始行(即“ 6”):
option = dvSheet.getSheetValues(6,startCol,10,1);
将“ 6”替换为“ 3”,下拉列表中将显示正确的选项列表。