У меня есть запись первой помощи в Excel, и я пытаюсь автоматизировать некоторые расчеты, которые проводятся каждый год.
Я приложил образец файла (без идентификаторов), чтобы проиллюстрировать проблему. Ссылка Dropbox здесь.
Я пытаюсь подсчитать общее количество часов, отработанных каждым медиком в год, на рабочем листе "Статистика", используя данные из других листов.
Случаи, которые наблюдает каждый медик, заносятся в таблицу "Сводка" в таблице под названием "Запись". Для каждого случая указываются год, смена, имя медика и наличие ошибок в записи.
Каждый сдвиг имеет уникальный идентификатор, указанный в таблице "TimeIndex" в таблице с именем "ShiftValueT".
Я пытаюсь написать формулу, которая делает следующее:
- Определяет строки, соответствующие нескольким критериям (Year, Medic, ISERROR = FALSE ())
- Использует эти строки для определения значений UniqueShift, которые соответствуют
- Создает массив из уникальных значений столбца UniqueShift, которые соответствуют (т.е. удаляет дубликаты).
- Использует эти уникальные значения (INDEX MATCH) в таблице ShiftValueT, чтобы найти соответствующие часы для типа UniqueShift
- Суммирует все экземпляры часов, соответствующие идентифицированным UniqueShifts
Я получил это далеко (как формула массива):
=SUM(INDEX(ShiftValueT[[Value]:[Value]],MATCH(INDEX(Record[[UniqueShift]:[UniqueShift]],MATCH(B$1&FALSE()&$A2,Record[[Year]:[Year]]&Record[[ISERROR]:[ISERROR]]&Record[[Medic]:[Medic]],0)),ShiftValueT[[UniqueShift]:[UniqueShift]],0)))
но это только возвращает первый экземпляр UniqueShift и ссылку на один час в ShiftValueT.
Как я могу изменить мою формулу, чтобы она возвращала сумму всех часов?
Примечание: я бы предпочел не использовать VBA.