Страницы: 1
RSS
Суммирование по условиям, в том числе по цвету
 
сумма по столбцу с условиями:
яблоки или груши
поставили или оплатили
цвет
грубо говоря внутри формулы СУММЕСЛИМН вставить ИЛИ и зависимость от цвета

имею это
Код
Function СЧЁТЕСЛИМН_ЦВЕТ(диапазон_сумм As Range, _
                        диапазон_усл1 As Range, усл1 As Variant, _
                        диапазон_усл2 As Range, усл2 As Variant, _
                        образец_цв As Range)
Application.Calculation = xlCalculationAutomatic
Application.Volatile True
Sum = 0
For Each cl In диапазон_сумм
    If Cells(cl.Row, диапазон_усл1.Column) = усл1 And _
        Cells(cl.Row, диапазон_усл2.Column) = усл2 And _
        cl.Interior.ColorIndex = образец_цв.Interior.ColorIndex And _
        cl.Interior.Pattern = образец_цв.Interior.Pattern Then Sum = Sum + 1
Next
СЧЁТЕСЛИМН_ЦВЕТ = Sum
End Function
СПАСИБО
Изменено: vikttur - 14.10.2021 11:46:48
 
Почему должно быть 4? Проверьте ещё раз свои условия
Может вы имели ввиду: если ячейка, с образцом цвета, закрашена, то считать по закрашенные ячейки этим цветом, иначе считать по другим условиям. Тогда попробуйте так:
Код
Function СЧЁТЕСЛИМН_ЦВЕТ(диапазон_сумм As Range, диапазон_усл1 As Range, усл1 As Variant, диапазон_усл2 As Range, усл2 As Variant, образец_цв As Range)
Application.Calculation = xlCalculationAutomatic
Application.Volatile True
Sum = 0
For Each cl In диапазон_сумм
    If образец_цв.Interior.ColorIndex <> -4142 Then
        If cl.Interior.ColorIndex = образец_цв.Interior.ColorIndex Then Sum = Sum + 1
    ElseIf Cells(cl.Row, диапазон_усл1.Column) = усл1 And Cells(cl.Row, диапазон_усл2.Column) = усл2 Then
        Sum = Sum + 1
    End If
Next
СЧЁТЕСЛИМН_ЦВЕТ = Sum
End Function
Изменено: Msi2102 - 14.10.2021 12:38:52
 
Цитата
Msi2102 написал:
Почему должно быть 4?
складывается при условии если:
1- ячейка закрашена
2- или яблоки или груши
3- или поставили или оплатили
при выполнении всех трех условий
Изменено: alex ku - 14.10.2021 13:35:30
 
Цитата
alex ku написал:
при выполнении всех трех условий
Так в первом Вашем сообщении функция так и считает.
От того, что во второй таблице Вы покрасили ячейки, яблоки не становятся грушами
Изменено: Msi2102 - 14.10.2021 13:38:16
 
Цитата
Msi2102 написал:
Так в первом Вашем сообщении функция так и считает.
не совсем так. она считает только:
1- по цвету
2-учитывает только одно значение (только яблоки или груши)
3-учитывает только одно значение (только поставили или оплатили)

пример цвет+яблоки+поставили
            цвет+яблоки+оплатили
             цвет+груши+оплатили
             цвет+груши+поставили
вот
спасибо, извините за ранние неточности
Изменено: alex ku - 14.10.2021 13:46:42
 
Все равно не до конца понял, что Вы хотите, попробуйте так:
Код
Function СЧЁТЕСЛИМН_ЦВЕТ(диапазон_сумм As Range, _
                        диапазон_усл1 As Range, усл1 As Variant, _
                        диапазон_усл2 As Range, усл2 As Variant, _
                        образец_цв As Range)
Application.Calculation = xlCalculationAutomatic
Application.Volatile True
usl_1 = Split(усл1, ",")
usl_2 = Split(усл2, ",")
Sum = 0
For n = LBound(usl_1) To UBound(usl_1)
    For m = LBound(usl_2) To UBound(usl_2)
        For Each cl In диапазон_сумм
            If Trim(Cells(cl.Row, диапазон_усл1.Column)) = Trim(usl_1(n)) And _
                Trim(Cells(cl.Row, диапазон_усл2.Column)) = Trim(usl_2(m)) And _
                cl.Interior.ColorIndex = образец_цв.Interior.ColorIndex And _
                cl.Interior.Pattern = образец_цв.Interior.Pattern Then Sum = Sum + 1
        Next
    Next
Next
СЧЁТЕСЛИМН_ЦВЕТ = Sum
End Function
условия записывайте, через запятую
Код
=СЧЁТЕСЛИМН_ЦВЕТ(F14:F25;G14:G25;"яблоки,груши";H14:H25;"поставили,оплатили";I14)
 
Цитата
Msi2102
СПАСИБО БОЛЬШОЕ
СПАСЛИ
 
Цитата
alex ku написал:
СПАСЛИ
Ну уж если совсем проблема была, могли обойтись Вашей функцией из первого поста
Код
=СЧЁТЕСЛИМН_ЦВЕТ(F14:F25;G14:G25;"яблоки";H14:H25;"поставили";I14)+СЧЁТЕСЛИМН_ЦВЕТ(F14:F25;G14:G25;"яблоки";H14:H25;"оплатили";I14)+СЧЁТЕСЛИМН_ЦВЕТ(F14:F25;G14:G25;"груши";H14:H25;"поставили";I14)+СЧЁТЕСЛИМН_ЦВЕТ(F14:F25;G14:G25;"груши";H14:H25;"оплатили";I14)
Страницы: 1
Наверх