@Xep4000

Как суммировать определенные ячейки, закрашенные цветом?

Есть строка из 30 (кол-во дней в месяц) ячеек, в каждой указано количество отработанных сотрудником часов в день. Иногда требуется оплатить, рандомно, некоторые смены. Например: 5-е число, 13-е и 27-е. Чтобы в конце месяца понять остаток, нужно из общей суммы часов вычесть уже оплаченные смены (5-е число, 13-е и 27-е). Сейчас это приходится считать вручную по каждому человеку. Хочется, чтобы вся строка анализировалась на совпадение и если есть закрашенные желтым (например) ячейки, то значения их них суммируются и их сумма вычитается из общей суммы часов за месяц.

Пересмотрел варианты решения с вариантами создания новых скриптов, но все они выдают ошибку и там есть проблемы с обновлением. Может, я неправильно выбрал направление и можно помечать как-то по-другому оплаченные ячейки (даты)?
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
ProgrammerForever
@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:""));
}

Демонстрационная таблица
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы