我正在尝试使用具有两个条件的函数 - 如果条件为真则求和,如果不是背景颜色则求和。
通常我会使用函数SUMIFS,但这里我有一个内置函数和一个自定义函数。这两个函数都可以单独工作,但我不能将它们组合在一起。
要“如果条件为真则求和”我使用了内置函数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的打印屏幕上。)
我会感激任何线索。
答案 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;
}