У меня есть сообщение, что наше программное обеспечение выкладывается, что я пытаюсь создать что-то более полезное из.В отчете перечислены все переключатели разрешений в системе, например:
JANE DOE PERMISSION 1 N
JANE DOE PERMISSION 2 N
JANE DOE PERMISSION 3 Y
JOHN SMITH PERMISSION 1 Y
JOHN SMITH PERMISSION 2 N
JOHN SMITH PERMISSION 3 Y
Я превращаю это в таблицу, которая использует INDEX / MATCH, чтобы проверить, находится ли переключатель на Y или N, например:
JOHN JANE
PERMISSION 1 Y N
PERMISSION 2 N N
PERMISSION 3 Y Y
Моя проблема в том, что у нас более 100 разрешений и 200 сотрудников.Формула, которую я использую, такова:
=INDEX(toggle,MATCH(1,INDEX((B$1=employee)*($A4=permission),0,1),0))
Итак, мой INDEX / MATCH проверяет список из 20 000 значений, чтобы заполнить 20 000 различных ячеек.Неудивительно, что на это уходит довольно много времени.
Исходный отчет уже организован в алфавитном порядке, поэтому разрешения каждого сотрудника сгруппированы.Что я хотел бы сделать, так это указать моему индексу, чтобы он смотрел только на диапазон, составляющий разрешения текущего сотрудника.Так, например, у меня может быть вспомогательная строка, которая вычисляет диапазон для Джона Доу, и затем использовать INDIRECT (), чтобы указать мой индекс только на этот диапазон.
Я нашел несколько вопросов, касающихся смежных дубликатов, но большинствовключать условное форматирование.Я нашел одно решение, включающее макрос, который автоматически создавал бы именованный диапазон для каждого набора смежных значений, но я не хочу загромождать свой менеджер имен (опять же, более 100 сотрудников, и это пока только одна группа пользователей)и я бы действительно предпочел не использовать VBA, если это не единственный вариант.