как посчитать количество ячеек определенного цвета в гугл таблицах?
Хотела использовать этот код:
function getColor(cell) {
return cell.getBackground();
}
function isColor(cell, color) {
return cell.getBackground() == color;
}
Но либо он не работает, либо я его неправильно сохраняю и/или развертываю. Мне нужно посчитать колиство ячеек того или иного цвета, но в основных функциях и формулах я этого не нашла. Помогите, пожалуйста.
Ответы (1 шт):
Использовать цвет заливки ячейки в качестве отличительного признака данных не самый лучший подход, но бывает так, что без этого не обойтись.
Для решения этой задачи будем использовать кастомную функцию =SUMCOLORS(), которая находится в редакторе скриптов. Показываем, как с её помощью посчитать сумму всех значений в диапазоне Таблицы в ячейках соответствующих цветов, например сумму всех зелёных и сумму всех красных.
Вот как она выглядит:
=SUMCOLORS("A5:A7";"D16:H21")
Как использовать:
Скопировать код в редактор скриптов Таблицы и вызвать из поля формул.
код:
/**
* Считает сумму значений в ячейках по цветам
* @param {"A5:A7"} colorCellsA1 столбец с цветами, сумму по которым нужно посчитать
* @param {"D16:H23"} rangeA1 диапазон для суммирования
* @customfunction
*/
function SUMCOLORS(colorCellsA1, rangeA1) {
const colors = SpreadsheetApp.getActiveSheet().getRange(colorCellsA1)
.getBackgrounds().map(row => row[0]);
const range = SpreadsheetApp.getActiveSheet().getRange(rangeA1);
const values = range.getValues();
const sums = range.getBackgrounds().reduce((p, row, i) => {
row.forEach((cell, j) => {
if (!Object.prototype.hasOwnProperty.call(p, cell)) {
p[cell] = 0
}
p[cell] += Number(values[i][j]) || 0;
})
return p;
}, {});
return colors.map(color => [sums[color] || 0]);
}