Более сложный ваш рабочий лист становится с дополнительными изолированными областями, содержащими несвязанные данные (числовые или иные), тем сложнее формулы превращаются в изоляцию диапазонов ячеек для получения истинных результатов.
Еще один способ ссылки на «острова» информации без искажения других областей информации - это использование structured tables. Предоставляя вам возможность изолировать поисковые запросы и ссылки диапазона ячеек к ячейкам, указанным как принадлежащие к таблице, и отбросить все остальные ячейки на листе, это может уменьшить сложность формулы.
Чтобы еще больше осложнить ситуацию, вы основываете свои поисковые запросы на результатах от LARGE function. В случае дублированных сумм вам понадобится второй, третий соответствующий отдел, а не просто повторение первого матча. AGGREGATE¹ function делает хорошую работу по получению этих результатов с циклической калибровкой без использования полноценной формулы массива.
Standard worksheet references (xlA1)
Поскольку маловероятно, что нет ничего выше строки 40, все расчеты для первых 5 наибольших значений в столбце E и последующих возвратов подстановки из столбцов C и D начнется в строке 41 (строка 40 является строкой заголовка таблицы dept/hours/cost).
Предполагаю, что в столбце E. нет цифр ниже последней стоимости. Это означает, что в нижней части затрат нет промежуточных итогов.Это необходимо, потому что тогда диапазон ячеек, содержащих расходы может быть отнесен к:
E41:INDEX(E:E, MATCH(1e99, E:E))
Если есть один номер, который не принадлежит к затратам долговых в колонке Е ниже допустимых расходов долговых в колонке E, тогда ваши результаты будут искажены, и любое правильное возвращение будет совпадающим, а не истинным. Если это так, то формула (ы) должна будет иметь дополнительные вычисления.
Формулы в H58: J58 являются
=LARGE(E$41:INDEX(E:E, MATCH(1E+99,E:E)), ROW(1:1))
=INDEX(C$41:INDEX(C:C, MATCH(1E+99,$E:$E)), AGGREGATE(15, 6, (ROW(C$41:INDEX(C:C, MATCH(1E+99,$E:$E)))-ROW(C$40))/($E$41:INDEX($E:$E, MATCH(1E+99,$E:$E))=$H58), COUNTIF($H$58:$H58, $H58)))
=INDEX(D$41:INDEX(D:D, MATCH(1E+99,$E:$E)), AGGREGATE(15, 6, (ROW(D$41:INDEX(D:D, MATCH(1E+99,$E:$E)))-ROW(D$40))/($E$41:INDEX($E:$E, MATCH(1E+99,$E:$E))=$H58), COUNTIF($H$58:$H58, $H58)))
Заполните вниз по мере необходимости.
Structured table references (xlA1)
В приведенном выше примере изображения, таблица была создана (Вставка ► Таблицы ► таблицы) и имени (контекстное меню Table Tools ► Дизайн ► Свойства ► Таблица Имя) ТаблицаDHC. A Был добавлен всего ряд, чтобы доказать, что он не мешает результатам.
Формулы в H58: J58 теперь,
=LARGE(TableDHC[Cost], ROW(1:1))
=INDEX(TableDHC[Dept], AGGREGATE(15, 6, (ROW(TableDHC[Dept])-ROW(TableDHC[#Headers]))/(TableDHC[Cost]=$H58), COUNTIF($H$58:$H58, $H58)))
=INDEX(TableDHC[Hours], AGGREGATE(15, 6, (ROW(TableDHC[Hours])-ROW(TableDHC[#Headers]))/(TableDHC[Cost]=$H58), COUNTIF($H$58:$H58, $H58)))
Заполните вниз по мере необходимости.
Является ли ссылка на структурированную таблицу упрощенной процедурой или нет, строго зависит от пользователя. Если вы знаете оба метода, вы можете сделать выбор. Если бы числа ниже E59, которые требовали бы более сложных формул в стиле листа, я бы, скорее всего, пошел по пути структурированных таблиц.
¹ AGGREGATE function была введена с Excel 2010. Он не доступен в более ранних версиях.
Вы пробовали (в G57 и скопировали) '= INDEX (C: C, MATCH (H57, E: E, 0))'. – pnuts
Есть ли какие-либо цифры между последней ** Стоимость ** в столбце E и нижней части листа? – Jeeped