Суммирование рабочих часов для сотрудников
В гугл таблице у меня расположен график сотрудников. Каждый лист в нём, это отдельный месяц. Начиная с третьей строки, сверху вниз, перечисляются ФИО сотрудников. На против каждого расставлены нормативные часы (сколько отработал). А в последнем столбце, на против каждого сотрудника, находится значение переработанных часов. Мне необходимо суммировать каждое значение переработанных часов за каждый месяц (со всех листов), для каждого сотрудника по отдельности и если его переработка более 120, то ставить пометку "Ошибка".
К примеру, сотрудник "Котова Елена". Берём её переработки с каждого листа, суммируем и если это значение больше 120, то в последней столбик ставим пометку "Ошибка"
Буду благодарен любым вариантам.
function workHourse() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var activeSheet = sheet.getSheets();
for(var i = 0; i < activeSheet.length; i++) {
if(!activeSheet[i].isSheetHidden()) {
// Все данные со всех листов
var list = activeSheet[i];
var data = list.getDataRange();
// Объекты со значениями / не знаю, нужны ли они вообще...?
var user = {};
var hourse = {};
// Диапазон переработки
var dataRows = data.getNumRows();
var dataColumns = data.getNumColumns();
var lastColumnList = list.getRange(6, dataColumns - 1, dataRows);
// Диапазон сотрудников
var userData = list.getRange('C6:C');
// ФИО сотрудников и их часы
var valuesHourse = lastColumnList.getValues();
var valuesUser = userData.getValues();
// Прохожу циклом по каждому сотруднику и его рабочему времени
for(var j = 0; j < valuesHourse; j++) {
for(var k = 0; k < valuesUser; k++) {
// Дальше я перепробовал все, что я знаю, варианты и никак не смог добиться нужного результата
};
};
};
};
};
Ответы (1 шт):
А чего так сложно заморачиваться и еще скрипт использовать.
По факту: Условно есть 12 страниц - это 12 таблиц на каждый месяц. ОК, здорово, все шаблонно.
Решение: Просто сделать еще одну страницу, например отчетную (или итоговую):
- На этой странице можно иметь столбик со всеми ФИО сотрудниками, которые можно автоматически переносить во все другие листы месячных таблиц.
- Вторая колонка это может быть сумма переработки собранная со всех листов-таблиц простой формулой Таблицы
=SUM(Январь!Z3;Февраль!Z3;....;Декабрь!Z3)
Январь!Z3
- это для примера, нужен реальный адрес ячейки.- Затем размножаете эту функцию для всех ФИО в отчетном листе - и всё.
- Теперь, при каждом изменении в листах-таблицах каких-либо данных о часах - на отчетном листе все будет автоматически видно.
Это самый простейший вариант, но можно и усложнить и исользовать SUMIF
, а если очень заморочиться то и QUERY
, но смысла в этом не вижу.