Страницы: 1
RSS
Подсчёт суммы ячеек по цвету
 
Добрый день.
Создала документ с подсчётом суммы ячеек по цвету. Получился тяжёлый, тупит, очень долго просчитывает, зависает.
Помогите сократить формулу, возможно поможет.
Код
=@СУММЦВЕТ(AL15:BB44;CP8)+@СУММЦВЕТ(DS15:EI39;CP8)+@СУММЦВЕТ(GP15:HF54;CP8)+
@СУММЦВЕТ(AL51:BB80;CP8)+@СУММЦВЕТ(DT51:EJ75;CP8)+@СУММЦВЕТ(AL86:BB115;CP8)+
@СУММЦВЕТ(DT86:EJ110;CP8)

Пример во вложении, в документе таких листов будет 31+сводные таблицы и т.д.

Может есть варианты как ускорить работу?
 
Цитата
написал:
Помогите сократить формулу, возможно поможет.
уходите от подсчета по цвету и использования формулы
Не бойтесь совершенства. Вам его не достичь.
 
Чем можно заменить?
 
, например вместо цвета -  отметку ставить кукую-то или согласно логике выделения цветом. и использовать обычные суммеслимн  или просто в формуле логику веделеняи прпоисать и сусммировать
Изменено: Mershik - 01.12.2021 15:14:52
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
написал:
Чем можно заменить?
В пакете Plex есть готовая Сумма по цвету
Сравнивали?
 
нет, не пробовала, но мне не разрешат её купить, увы
 
Для себя нашел на просторах Сети решение аналогичного вопроса через VBA-модуль CountByColor.
Код
Function CountByColor(DataRange As Range, ColorSample As Range) As Long
    Dim cell As Range, n As Long
     
    For Each cell In DataRange
        If cell.Interior.Color = ColorSample.Interior.Color Then n = n + 1
    Next cell
    CountByColor = n
End Function
 
Function SumByColor(DataRange As Range, ColorSample As Range) As Double
    Dim cell As Range, total As Double
     
    For Each cell In DataRange
        If IsNumeric(cell) And cell.Interior.Color = ColorSample.Interior.Color Then total = total + cell.Value
    Next cell
    SumByColor = total
End Function
 
Function AverageByColor(DataRange As Range, ColorSample As Range) As Double
    Dim cell As Range, total As Double, n As Long
     
    For Each cell In DataRange
        If IsNumeric(cell) And cell.Interior.Color = ColorSample.Interior.Color Then
            total = total + cell.Value
            n = n + 1
        End If
    Next cell
    AverageByColor = total / n
End Function

Посмотрите, возможно Вам пригодится.

Единственное НО - модуль автоматически не пересчитывает результаты при изменении цвета ячеек. Хотя могу ошибаться.
 
Цитата
написал:
не разрешат её купить, увы
кмк, в сети есть старенькие версии... а эта функция давно
стоит опробовать на скорость
 
Ну у меня в записках есть вот такой способ работы с ячейками по цвету (см.вложение)

А вообще - зачем столько ячеек в одну объединяете? В чём сакральный смысл?
 
Смысл суммировать сумму, т.к. средства поступают из различных источников. Цвет определяет откуда. Можно считать и руками, но зачем
Спасибо, попробую Ваш вариант
Изменено: natacha2705 - 01.12.2021 17:30:51
 
Цитата

Цитата
А вообще - зачем столько ячеек в одну объединяете?
Смысл суммировать сумму, т.к. средства поступают из различных источников. Цвет определяет откуда.
Я не про это. Я про частокол столбцов с объединением оных...
 
что бы можно было добавлять либо удалять таблицы или графы, без смещения. т.к. на странице несколько таблиц.
Страницы: 1
Наверх