我是milarky这个公式的新手,并在我的农场的Google表格上制作了一个电子表格。我想让除草剂(G栏)下拉,取决于C栏中选择的内容。
我对每种作物的要求列在下拉选项卡(colm M-V)
上(https://docs.google.com/spreadsheets/d/1wBaHVORL86C38FO1sRapxR3Ps9TuYfAFRzH12daN64k/edit?usp=sharing)
ps:任何人认为对我和我的农场都有好处的任何其他想法将不胜感激
答案 0 :(得分:0)
附件是指向我对电子表格所做修订的链接。我添加了一个Sheet4,它会读取您的下拉列表表。我添加了Herbicides Needed下拉菜单然后读取Sheet4。看看它,如果您有任何问题,请告诉我。
https://docs.google.com/spreadsheets/d/1P2hKDqb-MtOW5Ov3MZiac8LMQLwSV-k4b1R8SIUFyeE/edit?usp=sharing
答案 1 :(得分:0)
我六个月前在YouTube上回答了这个问题(https://youtu.be/rW9T4XZy-7U)。经典的方法,在A列中你有主下拉列表,在B列你有第二个下拉列表,它依赖于列A中的第一个,在下面。我还添加了脚本,以便能够在C列中依赖于列B具有第二个从属下拉列表。此脚本要求您已在电子表格中设置已命名的范围,否则它将无法工作。
function depDrop_(range, sourceRange){
var rule = SpreadsheetApp.newDataValidation().requireValueInRange(sourceRange, true).build();
range.setDataValidation(rule);
}
function onEdit (){
var aCell = SpreadsheetApp.getActiveSheet().getActiveCell();
var aRow = aCell.getRow();
var aColumn = aCell.getColumn();
if (aColumn == 1 && SpreadsheetApp.getActiveSheet()){
var range = SpreadsheetApp.getActiveSheet().getRange(aRow, aColumn + 1);
var sourceRange = SpreadsheetApp.getActiveSpreadsheet().getRangeByName(aCell.getValue());
depDrop_(range, sourceRange);
}
else if (aColumn == 2 && SpreadsheetApp.getActiveSheet()){
var range = SpreadsheetApp.getActiveSheet().getRange(aRow, aColumn + 1);
var sourceRange = SpreadsheetApp.getActiveSpreadsheet().getRangeByName(aCell.getValue());
depDrop_(range, sourceRange);
}
}
放置这些下拉列表的不太常见的方法是按行,这意味着主下拉列表在A1中,依赖下拉列表在A2中。要实现这一目标,您只需要更改" aColumn"到" aRow"在if子句的开头,在" aRow"之后加上+ 1而不是" aColumn"在if子句的中间。例如:
if (aRow == 1 && SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1")){
var range = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getRange(aRow + 1, aColumn);
var sourceRange = SpreadsheetApp.getActiveSpreadsheet().getRangeByName(aCell.getValue());
depDrop_(range, sourceRange);
}