验证列表更改源时自动更改验证条目(Google表格)

时间:2017-07-10 12:08:34

标签: excel vba excel-vba google-apps-script google-sheets

您好我的常规Excel工作表上有一个vba代码,效果很好。我想要一些能够在Google工作表上完成工作的东西。

让我解释一下这段代码的作用:

所以基本上,无论何时在工作表上使用下拉菜单,此宏都会立即将您所做的选择更改为具有相同结果的公式。

如果你去改变原始列表中选择的值,那么当前解析为相同值的所有单元格#34; position"将自动更新,因为他们是所有公式。

那么有人可以帮我在Google表格中做同样的事情吗?

这是一个简单的gif,展示了vba代码的工作原理

http://g.recordit.co/DfFslr0iJF.gif

如果您想查看

,这是示例文件

https://drive.google.com/file/d/0B8OCuWHp5L8TWDFyR0xDV1d0bTA/view?usp=sharing

findViewById(R.id.layoutContainer);

1 个答案:

答案 0 :(得分:0)

您可以使用onEdit()触发器。下面的代码通过检查传递给函数的事件对象并动态重建目标范围的验证规则(在本例中为'A1')来获取编辑的上下文。如您的示例所示,列表值位于第2列:

function onEdit(e){

  var sheet = e.source.getActiveSheet();
  var range = e.range;
  var listValuesCol = 2;

  if(range.getColumn() == listValuesCol && sheet.getName() =='yourSheetName'){ // checking if the values were updated

    var sourceRange = sheet.getRange(1, listValuesCol, sheet.getLastRow(), 1); //range containing validation rule list values
    var targetRange = sheet.getRange(1,1); //target cell, e.g. A1

    var newValidationRule = SpreadsheetApp.newDataValidation()
    .requireValueInRange(sourceRange, true) //boolean flag for showing or disabling dropdown list
    .build();

    targetRange.setDataValidation(newValidationRule);

    SpreadsheetApp.flush();


  }


}