Изначально, есть необходимость просуммировать расходы по персоналу. Есть ЗП сотрудников и Процент загрузки. Решается простым Sumproduct по двум спискам.
Появилось дополнительное условие - в столбце Процент загрузки визуальным способом (например, заливка ячейки, цвет шрифта) отдельно выделять некоторых сотрудников . Итоговых суммы расходов, соответственно, рассчитать надо две. Общую и "отдельную".
Стал изучать встроенную функцию Cell в надежде найти некий критерий, по которому можно различать ячейки, подходящего не нашел. Погуглив, предположил, что выход лишь в написании функции которая различает ячейки. Например, возвращает 1, если цвет черный и 0, если цвет любой другой.
Если ход размышлений верный, буду признателен за подсказку: 1) кода функции. 2) примера, как вставить данную функцию в SUMPRODUCT. Прикрепил файл на случай, если коряво объяснил.
Если мыслю неверно, прошу направить в правильном направлении.
Спасибо!
Добрый день!
Буду признателен за помощь в решении.
Изначально, есть необходимость просуммировать расходы по персоналу. Есть ЗП сотрудников и Процент загрузки. Решается простым Sumproduct по двум спискам.
Появилось дополнительное условие - в столбце Процент загрузки визуальным способом (например, заливка ячейки, цвет шрифта) отдельно выделять некоторых сотрудников . Итоговых суммы расходов, соответственно, рассчитать надо две. Общую и "отдельную".
Стал изучать встроенную функцию Cell в надежде найти некий критерий, по которому можно различать ячейки, подходящего не нашел. Погуглив, предположил, что выход лишь в написании функции которая различает ячейки. Например, возвращает 1, если цвет черный и 0, если цвет любой другой.
Если ход размышлений верный, буду признателен за подсказку: 1) кода функции. 2) примера, как вставить данную функцию в SUMPRODUCT. Прикрепил файл на случай, если коряво объяснил.
Если мыслю неверно, прошу направить в правильном направлении.
пользуемся поиском, находим например эту тему, слегка редактируем: [vba]
Код
Function СУММ_ЦВЕТ(Диапазон_суммирования As Range, Цвет_берется_из_ячейки As Range) For Each cll In Диапазон_суммирования.Cells If cll.Font.ColorIndex = Цвет_берется_из_ячейки.Font.ColorIndex Then summa = summa + cll.Value * cll.Offset(0, -1) End If Next СУММ_ЦВЕТ = summa End Function
[/vba]
пользуемся поиском, находим например эту тему, слегка редактируем: [vba]
Код
Function СУММ_ЦВЕТ(Диапазон_суммирования As Range, Цвет_берется_из_ячейки As Range) For Each cll In Диапазон_суммирования.Cells If cll.Font.ColorIndex = Цвет_берется_из_ячейки.Font.ColorIndex Then summa = summa + cll.Value * cll.Offset(0, -1) End If Next СУММ_ЦВЕТ = summa End Function
В более развернутом варианте отчета есть еще столбцы - месяцы, в которых процентная загрузка меняется. Тогда, код "cll.Offset(0, -1)" не подойдет, но можно же добавить offset как отдельный параметр, верно понимаю? И, для каждого месяца, будет просто свой параметр при вызове СУММ_ЦВЕТ. Сделаю завтра же. Еще раз спасибо!
Спасибо большое! Получается, достаточно функции.
В более развернутом варианте отчета есть еще столбцы - месяцы, в которых процентная загрузка меняется. Тогда, код "cll.Offset(0, -1)" не подойдет, но можно же добавить offset как отдельный параметр, верно понимаю? И, для каждого месяца, будет просто свой параметр при вызове СУММ_ЦВЕТ. Сделаю завтра же. Еще раз спасибо!Bogdan2