Страницы: 1
RSS
Суммировать по цвету заливки VBA
 
Добрый вечер!

На сайте и в интернете есть что-то подобное, но при большом диапазоне код работает очень медлено (по-этому и обращаюсь к ВАМ). У меня будет диапазон из 150000 таких ячеек.
Суть: диапазон будет залит в 9 цветов (иногда в 3-4 цвета). Нужно максимально быстро, подсчитать сумму ячеек каждого цвета отдельно.
Спасибо ВСЕМ за помощь!
Изменено: vanya7819 - 01.06.2019 21:55:16
 
В вашем примере цвета уже указаны в первом столбце. Если следовать такому же принципу - то как вариант решение макросом. Единственное всегда будет считать 9 цветов ))
Изменено: Андрей_26 - 02.06.2019 20:33:47
 
Цитата
vanya7819 написал:
У меня будет диапазон из 150000 таких ячеек.
и кто и как будет это раскрашивать? Вопрос не по тому что любопытно, а по тому что  от этого зависит реализация. Может и не нужно к цветам привязываться.
По вопросам из тем форума, личку не читаю.
 
Добрый день. Поблагодарить хочу за такой прекрасный сайт и массу полезной информации.
Помогите пожалуйста. Я ввел код (считает сумму ячеек с выделенным цветом)
Public Function SumByColor(DataRange As Range, ColorSample As Range) As Double     Dim Sum As Double
   Application.Volatile True

   For Each cell In DataRange
       If cell.Interior.Color = ColorSample.Interior.Color Then
           Sum = Sum + cell.Value
       End If
   Next cell
   SumByColor = Sum
End Function
И создал второй модуль с кодом где изменил (считает кол-во ячеек с выделенным цветом)
Sum = Sum + 1
Все считает отлично, но...возникли трудности со 2 модулем, когда ячейка с нулевым значением и ее не нужно брать, подскажите что нужно изменить. Спасибо
Извините, изначально не в ту тему написал.
 
Код
Public Function SumByColor(DataRange As Range, ColorSample As Range) As Double
Dim Sum As Double
Application.Volatile True
For Each cell In DataRange
    If cell <> 0 And cell.Interior.Color = ColorSample.Interior.Color Then
        Sum = Sum + 1
    End If
Next cell
SumByColor = Sum
End Function
Согласие есть продукт при полном непротивлении сторон
 
Спасибо большое, Sanja!!!
Страницы: 1
Наверх