Страницы: 1
RSS
Счет в массиве по трем условиям (включая цвет ячеек)
 
Добрый день.

Подскажите пожалуйста как можно реализовать счет в двумерном массиве по трем условиям:
1)должность в столбце
2)дата в строке
3)цвет ячеек на пересечении первых двух условий

По сути вопроса: есть две таблицы- планирование людей и требования по количеству людей(planning и required соответственно)
На листе balance просто собирается общая информация. Планирование отмечается для каждого человека цветом ячеек, а требования - для должности количеством людей.
По требованиям все получилось сделать, но там только два условия, а сделать счет с тремя вышеперечисленными условиями никак не получается.
 
Как вариант, добавить к каждой дате вспомогательный столбец, где в каждой ячейке вставить имеющуюся у вас в модуле функцию "GetColorIndex". А затем с помощью СУММПРОИЗВ легко подсчитать количество ячеек с тем или иным номером цвета
 
Если уже используете UDF, то можно написать ещё одну и для этой работы.
См. жёлтую правее.
Изменено: Hugo - 29.07.2020 00:07:32
 
проблема как раз в том что нужен счет, а не сумма.
В planning в серых и зеленых ячейках будут проставлены количества дней по порядку(то есть с момента как человек прибыл и по возрастанию до момента отъезда).
И хотелось бы избежать дополнительных строк и столбцов так как лист planning(а точнее это отдельный файл) и лист required делают разные люди и
в итоге это приведет к тому что при сведении данных надо будет каждый раз править.
 
andrewpavlov,
просто немного измени код:
Код
Function SumProdColor(u1 As Range, d1 As Range, u2 As Range, d2 As Range, c As Range, diap As Range)
    Dim x&, y&, t, tmp
    t = GetCellColor(c)
    For x = 1 To d1.Cells.Count
        For y = 1 To d2.Cells.Count

            If d1.Cells(x) = u1 Then
                If d2.Cells(y) = u2 Then
                    If GetCellColor(diap.Cells(x, y)) = t Then
                        tmp = tmp + 1
                    End If
                End If
            End If
        Next
    Next
    SumProdColor = tmp
End Function
Изменено: evgeniygeo - 29.07.2020 07:50:48
 
Спасибо огромное, всё получилось.
Страницы: 1
Читают тему (гостей: 1)
Наверх