Сводный лист данных колляции

Вопрос или проблема

Я работаю над рабочей книгой Excel, в которой данные распределены по нескольким листам (например, “Уголь”, “Сталь”, “Турбодизель”, “Компьютер”). Каждый лист содержит массивы данных, относящихся к различным ресурсам (таким как уголь, вода, железо и т. д.), с сопутствующими значениями, такими как Производство, Использование и Избыток. Я успешно собрал все уникальные названия ресурсов в одном столбце на сводном листе, используя формулы, но столкнулся с проблемой, когда попытался суммировать сопутствующие значения по листам. Проблема возникает из-за того, что массивы на каждом листе не одинакового размера, а некоторые ресурсы повторяются на разных листах. Это приводит к ошибкам при попытке объединить их в один сводный столбец. Мне нужно суммировать значения для каждого уникального ресурса на разных листах, но разные размеры массивов и разбросанные данные делают это трудно достижимым. Буду признателен за любые советы по эффективному суммированию этих значений в одном массиве! Я также предпочел бы сделать это без VBA, так как у меня были с ним проблемы в прошлом.

Моя формула для сбора уникальных текстовых данных на сводной странице:
UNIQUE(FILTERXML("<t><s>"&TEXTJOIN("</s><s>", TRUE, $AA$4#, $AB$4#, $AC$4#, $AD$4#)&"</s></t>", "//s")) и AA по AD найдены:

LAMBDA(c,
    FILTER(
        INDIRECT(c & ":" & c ),
        (INDIRECT(c & ":" & c ) <> "") *
        (ROW(INDIRECT(c & ":" & c)) > 2)
    )
)(CHAR(AA$3 + 64))

где третья строка – это номер столбца найденных данных. Мне не нравится этот подход, и я предпочел бы использовать одну формулу для поиска всех уникальных данных.

Я получаю каждый столбец данных на своей сводной странице следующим образом:

LAMBDA(x,c,
    IFERROR(
        FILTER(INDIRECT("'" & x & "'!$" & c &":$" & c), INDIRECT("'"&x&"'!$S:$S") = TRUE),
        NA()
    )
)
(INDIRECT(ADDRESS(1, COLUMN())),
 INDIRECT(ADDRESS(2, COLUMN())))

Моя сводная страница:
изображение сводной страницы

Ответ или решение

Для успешного агрегирования данных из множества листов в единую сводную таблицу без использования VBA, вам необходимо использовать формулы Excel, которые позволяют эффективно работать с уникальными значениями и суммировать данные, даже если они размещены в массивах различного размера. Рассмотрим поэтапно процесс решения вашей задачи.

Шаг 1: Получение уникальных ресурсов

Для начала нужно получить список уникальных ресурсов. Вы можете использовать более послушную и компактную формулу, чем та, что вы предложили. Например:

=UNIQUE(FILTER(СШАД!A:A, СШАД!A:A <> ""))

Здесь СШАД — это имя одного из ваших листов, который вы хотите обработать. Не забудьте дополнить формулу для всех остальных листов. Если ваши уникальные ресурсы содержатся в нескольких разных листах, объедините результаты с помощью TEXTJOIN.

Шаг 2: Суммирование значений для каждого ресурса

Теперь нужно суммировать значения для каждого уникального ресурса. Вы можете использовать комбинацию SUMIF и FILTER, чтобы аккуратно управлять значениями из различных листов. Например:

=SUMIF(INDIRECT("'" & Лист1 & "'!$A:$A"), A2, INDIRECT("'" & Лист1 & "'!$B:$B")) +
SUMIF(INDIRECT("'" & Лист2 & "'!$A:$A"), A2, INDIRECT("'" & Лист2 & "'!$B:$B")) +
СУММПРОИЗВ( ... )  ' Повторить для всех листов

Здесь предполагается, что в каждой таблице ресурс в столбце A и соответствующие значения в столбце B.

Шаг 3: Объединение формул для всех ресурсов

Чтобы собрать всё вместе, вы можете создать формулу в вашем сводном листе, которая будет автоматически суммировать все значения для уникальных ресурсов. Сделайте что-то подобное для каждого ресурса в итоговом списке:

=SUM(SUMIF(INDIRECT("'" & Лист1 & "'!$A:$A"), D2, INDIRECT("'" & Лист1 & "'!$B:$B")),
    SUMIF(INDIRECT("'" & Лист2 & "'!$A:$A"), D2, INDIRECT("'" & Лист2 & "'!$B:$B")),
    ...)

Шаг 4: Упрощение с помощью массива

Если ваши массивы не одинакового размера, но вы хотите избежать ошибок типа "spill", можно использовать:

=SUMPRODUCT(SUMIF(INDIRECT("'" & Листи & "'!A:A"), D2, INDIRECT("'" & Листи & "'!B:B")))

Здесь необходимо заменить Листи на массив имен листов.

Шаг 5: Проверка данных

После того как вы написали все необходимые формулы, проверьте корректность введенных данных. Убедитесь, что на каждом листе детали размещены одинаково, чтобы формулы работали корректно и всевозможные ошибки были исключены.

Используя приведенные рекомендации, вы сможете эффективно агрегировать данные из различных листов и избежать ошибок, связанных с размером массивов. Надеюсь, это поможет вам в вашей задаче!

Оцените материал
Добавить комментарий

Капча загружается...