Делал так:
Скрипт
/**
* @param {range} countRange Range to be evaluated
* @param {range} colorRef Cell with background color to be searched for in countRange
*
return {number}
* @customfunction
*/
function countColoredCells(countRange,colorRef) {
var activeRange = SpreadsheetApp.getActiveRange();
var activeSheet = activeRange.getSheet();
var formula = activeRange.getFormula();
var rangeA1Notation = formula.match(/\((.*)\;/).pop();
var range = activeSheet.getRange(rangeA1Notation);
var bg = range.getBackgrounds();
var values = range.getValues();
var colorCellA1Notation = formula.match(/\;(.*)\)/).pop();
var colorCell = activeSheet.getRange(colorCellA1Notation);
var color = colorCell.getBackground();
var count = 0;
for(var i=0;i
for(var j=0;j
if( bg[i][j] == color )
count=count+1;
return count;
};
Функция
=countColoredCells(B1:B9;A1)
B1:B9 - диапазон в котором считаем
A1 - ячейка с цветом, который считаем
У меня работала, но пришлось отказаться от подсчета цветных ячеек, т. к. считал большие диапазоны и всё зависало при каждом пересчете.
PS. Работает только с залитыми ячейками. Если применяете условное форматирование, не получится.
PPS. Будет лучше использовать подсчет чекбоксов
=COUNTIF(B1:B9; TRUE)