如果条件为真且背景颜色不正确则求和 - Google电子表格

时间:2017-08-22 06:49:29

标签: google-apps-script google-sheets

我正在尝试使用具有两个条件的函数 - 如果条件为真则求和,如果不是背景颜色则求和。

通常我会使用函数SUMIFS,但这里我有一个内置函数和一个自定义函数。这两个函数都可以单独工作,但我不能将它们组合在一起。

enter image description here

要“如果条件为真则求和”我使用了内置函数SUMIF,对于“如果背景颜色不是”,我使用了脚本库中的函数。

以下是我的电子表格Spreadsheet

的链接

另外一件事是我需要总结不同的列。值2具有相同的条件。

使用@Ritz代码我正在尝试修改他的代码,我有这个脚本:

  /**
     * @return The sum of range B where the corresponding value in Column A matches the color
     * @customfunction
     */

function conditionalCheck(color,rangeCondition, rangeSum, criteria){
  var condition = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(2,rangeCondition,11).getValues();
  var val = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(2,rangeSum,11).getValues();
  var bg = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(2,rangeSum,11).getBackgrounds();
  var sum = 0;
  for(var i=0;i<val.length;i++){
     if(condition[i] == criteria && bg[i] != color){
       sum += val[i];
     }
  }
  return sum;
}

但结果是变量“sum”进行值的连接但不对它求和。 (结果显示在单元格H10的打印屏幕上。)

我会感激任何线索。

1 个答案:

答案 0 :(得分:1)

尝试以下脚本。您需要将两列的颜色和范围作为参数传递。 =conditionalCheck("#ffff00","A2:B12")

/**
 * @return The sum of range B where the corresponding value in Column A matches the color
 * @customfunction
 */
function conditionalCheck(color,range){
  var val = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(range).getValues();
  var bg = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(range).getBackgrounds();
  var sum = 0;
  for(var i=0;i<val.length;i++){
     if(val[i][0] == "A" && bg[i][1] == color){
       sum = sum + val[i][1]
     }
  }
  return sum;
}