数据验证取决于条件Google Spreadsheets

时间:2016-02-14 13:45:19

标签: validation google-sheets

在Google Spreadsheets中,是否可以根据条件的结果对一系列数字进行单元格数据验证?

示例:

column1     column2  
   a        if column1=a then show dropdown of (1,0) if b then (2,3) so [1,0]
   a        if column1=a then show dropdown of (1,0) if b then (2,3) so [1,0]
   b        if column1=a then show dropdown of (1,0) if b then (2,3) so [2,0]
   a        if column1=a then show dropdown of (1,0) if b then (2,3) so [1,0]

1 个答案:

答案 0 :(得分:0)

我不清楚你想要什么,但你可以 根据不同的值有不同的下拉菜单 一个细胞。此代码假定要评估的值在 单元格A1(' a',' b'或其他值)。如果A1 = a那么 下拉列表来自C1:C2。如果A1 = b则下拉 列表来自D1:D2。 A1中的任何其他值都会删除 B1中的变形。 (在A1中输入a或b将放入 valadation回来)。

function onEdit(e)
{
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheetName= sheet.getSheetName();
  if(sheetName=="Sheet1"){ //Only Sheet1
  var editRange = sheet.getActiveRange();
  var editRow = editRange.getRow();
  var editCol = editRange.getColumn();
  var lr = sheet.getLastRow()
  var range = sheet.getRange("A1"); // Only apply on edit to cell Sheet1!A1
  var rangeRowStart = range.getRow();
  var rangeRowEnd = rangeRowStart + range.getHeight()-1;
  var rangeColStart = range.getColumn();
  var rangeColEnd = rangeColStart + range.getWidth()-1;
  if (editRow >= rangeRowStart && editRow <= rangeRowEnd 
      && editCol >= rangeColStart && editCol <= rangeColEnd)
  {
drop()
 }}}
 function drop(){
 var cell = SpreadsheetApp.getActive().getRange('B1');//set validation in B1
 var ocell=SpreadsheetApp.getActive().getRange('B1').offset(0,  -1).getValue()//evaluate value in A1
 var cellVal=cell.getValue()
 if(ocell=="a"){ //If A1=a dropdown list is C1:C2
 var range = SpreadsheetApp.getActive().getRange('C1:C2');
 var rule =    SpreadsheetApp.newDataValidation().requireValueInRange(range).build();
 cell.setDataValidation(rule)}
 else if(ocell=="b"){ //if A1=b dropdown list = D1:D2
  var range = SpreadsheetApp.getActive().getRange('D1:D2');
 var rule =   SpreadsheetApp.newDataValidation().requireValueInRange(range).build();
 cell.setDataValidation(rule);}
 else{ // If A1 is not a or b remove validation from B1
 cell.clearDataValidations()}
 }

如果这不是你想要的解释,我可以调整。