如何将多行代码应用于下拉菜单Google Spreadsheet的条件选择?

时间:2018-08-31 14:02:58

标签: google-sheets

我找到了一个指南,该指南可让我根据其他菜单的选择来设置下拉菜单。我发现的方法仅允许我对几个单元格做出选择。如何扩展到更多对线? 我已采取的步骤如下:

=Match(Pers!F3;C1:C;0)
=TRANSPOSE(INDIRECT("D" & B5 & ":K" & B5))

我的清单由以下内容组成: enter image description here

有了前面写的公式,我可以得到一个受前一个条件约束的单元格。如果选择区域,我将仅在该区域中显示我自己的下拉菜单。例如,如果我选择1区,则可以选择纽约,西弗吉尼亚州,弗吉尼亚州。

enter image description here

如果我尝试拖动,我将始终能够选择第一个区域的状态。

enter image description here

我怎么做多行? 谢谢!

1 个答案:

答案 0 :(得分:0)

如果您不介意使用脚本,请尝试此操作。下拉列表位于Sheet1上,而Zone和城市数据位于Sheet2上。

function onEdit(e) { 
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var s=ss.getActiveSheet()
  var sheet=e.source.getSheetName()
  var target=ss.getSheetByName("Sheet2")
  var col=e.range.getColumn()
  var ro=e.range.getRow()
  if(col==1){
    var val=e.range.getValue()
  if(sheet=="Sheet1" && val=="Zone1"){
    s.getRange(ro,2,1,1).clearContent()//clear cell to update
    var cell = s.getRange(ro,2,1,1)//get cell to update
    var z1=target.getRange(2,2,1,3)//get cities for Zone1
    var rule = SpreadsheetApp.newDataValidation().requireValueInRange(z1)//define the rule
    cell.setDataValidation(rule)//set the data validation rule
   }
      else{//for Zone2
    s.getRange(ro,2,1,1).clearContent()      
    var cell = s.getRange(ro,2,1,1);
    var z2=target.getRange(3,2,1,3)
    var rule = SpreadsheetApp.newDataValidation().requireValueInRange(z2)
    cell.setDataValidation(rule);
      }}}

这是我的测试纸,您可以复制并尝试。 https://docs.google.com/spreadsheets/d/1z9Pw8rvFvJNhItqOUaMkmUt8lohwTJKA22GVgPAIfWU/edit?usp=sharing