Как суммировать определенные ячейки, закрашенные цветом?
Есть строка из 30 (кол-во дней в месяц) ячеек, в каждой указано количество отработанных сотрудником часов в день. Иногда требуется оплатить, рандомно, некоторые смены. Например: 5-е число, 13-е и 27-е. Чтобы в конце месяца понять остаток, нужно из общей суммы часов вычесть уже оплаченные смены (5-е число, 13-е и 27-е). Сейчас это приходится считать вручную по каждому человеку. Хочется, чтобы вся строка анализировалась на совпадение и если есть закрашенные желтым (например) ячейки, то значения их них суммируются и их сумма вычитается из общей суммы часов за месяц.
Пересмотрел варианты решения с вариантами создания новых скриптов, но все они выдают ошибку и там есть проблемы с обновлением. Может, я неправильно выбрал направление и можно помечать как-то по-другому оплаченные ячейки (даты)?
Александр,
нужно, чтобы сумма была не 143, а 116,5 - то есть результат сложения значений в ячейках, закрашенных желтым
Написано
Решения вопроса 1
Григорий Боев
@ProgrammerForever Куратор тега Google Sheets
Учитель, автоэлектрик, программист, музыкант
Можно как-нибудь так. Чтобы указывать нормальные диапазоны, можно парсить аргументы функции, но так надёжнее. С полученными данными можно делать что угодно. Если нужна сумма - оберните в СУММ()
function filterByColor(dataRangeName, colorRangeName) {
let ss = SpreadsheetApp.getActiveSpreadsheet();
let colorRange = ss.getRangeByName(colorRangeName);
let color = colorRange.getBackground();
let dataRange = ss.getRangeByName(dataRangeName);
let data = dataRange.getValues();
let colors = dataRange.getBackgrounds();
return data.map((row,ri)=>row.map((val,ci)=>color===colors[ri][ci]?val:""));
}