Для Google:
/**
* Функция возвращает сумму ячеек в диапазоне с цветом фона равным color
* @param {Any[][]} range - Диапазон ячеек
* @param {String} color - цвет фона ячеек
* @return {Number} сумма ячеек в диапазоне с цветом фона равным color
*/
function sumByBackgroundColor(range, color) {
const values = range.getValues();
const backgrounds = range.getBackgrounds();
let sum = backgrounds.reduce((acc, row, ri) => {
return row.reduce((acc, c, ci) => {
if (c === color) {
return acc + values[ri][ci];
}
return acc;
}, acc);
}, 0);
return sum;
}
Для Excel:
Public Function SumCellsByColor(rng As Range, clr As Long) As Double
Dim cell As Range
Dim colSum As Double
colSum = 0
For Each cell In rng
If cell.Interior.ColorIndex = clr Then
colSum = colSum + cell.Value
End If
Next cell
SumCellsByColor = colSum
End Function