Я надеюсь, что это правильный сайт для этого вопроса
У меня есть квитанции о доставке за годы (более 60 таблиц, каждая на отдельном листе) с одинаковыми заголовками, и я хотел бы добавить их в сводную таблицу по годам.
Все, что мне нужно Art-No.
, это Description
общее и общее Delivered Quantity
, но прохождение каждого отдельного листа и составление их в индивидуальном порядке займет много времени. Не каждый заказ будет иметь одинаковые продукты или в том же порядке. Некоторые продукты могут появляться только один раз в год, в то время как другие на каждом заказе. Это немного беспорядок.
По Art-No.
сути, это идентификатор продукта и может использоваться для идентификации продукта (а также Description
).
Пример таблицы желаемых результатов
Я пытался использовать Power Query для слияния, но это не консолидирует данные, а, кажется, помогает.
Я пробовал сводные таблицы, но они не хотят, чтобы они звучали как «Ссылка на источник данных недействительна»
Есть ли более простой способ сделать это?
источник
Ответы:
Я думаю, что вы были на правильном пути с Power Query. Как правило, шаги:
Загрузите каждую таблицу в Power Query (это неприятно, но я не знаю ни одного варианта массовой загрузки). Вы можете установить опцию по умолчанию только для загрузки соединения, чтобы у вас не было дубликатов листов с версией Power Query для каждой таблицы.
Откройте свою первую таблицу в Power Query Editor. Выберите Добавить запросы (не объединять) в разделе Объединить ленты.
В диалоговом окне «Добавить» выберите вторую таблицу и нажмите «ОК». Повторите эти действия для каждой таблицы, которую вы загрузили в Power Query. Теперь вы добавляете строки из каждой из 60 таблиц в одну «супер таблицу».
Когда все ваши загруженные таблицы будут добавлены, загрузите ваш запрос на добавление в Excel.
Используйте таблицу запросов добавления в качестве источника данных для создания сводной таблицы. Выберите Арт-№. и Description в качестве меток строк (в формате Tablular Layout, без промежуточных итогов) и Количество в качестве значений.
источник
Если бы все данные были на одном листе, было бы довольно легко применить к нему сводную таблицу для генерации сводки. Копирование и вставка 60+ листов в один заняло бы несколько минут вручную, но это можно сделать.
Кроме того, вы можете использовать макрос для копирования и вставки. Предполагая, что каждый лист начинается в A1 и все листы содержат таблицы данных, этот макрос должен работать:
источник
Вот подход, который не использует Power Query.
Для любой таблицы вы можете суммировать доставленное количество определенного продукта (Арт. №), используя SUMIF . Например, следующая формула даст общее количество доставленного Арт-№. 59792 в таблице под названием Table1.
Вы можете использовать функцию INDIRECT, чтобы извлечь имя таблицы из другой ячейки. Например, если ячейка A2 содержит «Table1», то следующая формула даст тот же результат, что и приведенная выше.
Таким образом, чтобы создать новую таблицу с общим количеством статей каждого типа в каждой таблице, вы можете выполнить следующее:
= SUMIF (НЕПОСРЕДСТВЕННЫЙ ($ A2 & "[Art-No.]"), B $ 1, НЕПОСРЕДСТВЕННЫЙ ($ A2 & "[Доставленное количество]"))
источник
Вот вариант, который не использует Power Query или Pivot Tables:
Как указано в комментариях, вы можете создать таблицу результатов вы хотите со всем , за исключением
Ordered qty.
иDelivered qty.
пол. Это означает, что все, что нам нужно сделать, это суммировать значения для каждого листа, используяArt-no.
в качестве уникального идентификатора.Шаг 1: Создайте список со всеми именами листа. Это можно сделать с помощью небольшого VBA, поскольку в вашем файле так много листов.
Шаг 2: Создайте именованный диапазон, который ссылается на список имен рабочих листов. Я превратил список в таблицу и основал диапазон имен на этом, но это не обязательно.
Шаг 3: Создание вашей таблицы базовых результатов без
Ordered qty.
иDelivered qty.
значений , заполненных Если вы не имеете , что имеется где - то, что может быть проще всего использовать что - то вроде того, что. Сэр Аделаида отправил объединить все листы, удалить поля , которые не нужно стереть все кол-во. значения и удалить дубликаты. Вы можете задаться вопросом, зачем вам это нужно, если вы просто будете следовать этому методу, но уловка на следующем шаге слишком крута, чтобы не поделиться ею.Шаг 4: Напишите свои формулы для суммирования данных со всех листов одновременно. Во-первых, вот формула, которую вы можете использовать для
Ordered qty.
:Это специальная
SUMIF
упаковкаSUMPRODUCT
. Ключом кSUMIF
работе с трехмерной ссылкой являетсяINDIRECT
функция и список имен листов, которые мы создали. Вот части формулы:INDIRECT("'"&sheets&"'!"&"B2:B10000")
Это стандартнаяINDIRECT
функция, за исключением того, что мы ссылаемся на именованный диапазон, который мы создали в шаге 2, который указывает на список имен листов. Это то, что делает его трехмерным эталоном. Я выбрал,B2:B10000
но вы можете настроить / расширить это по мере необходимости. Легко сделать эталонный путь больше, чем требуется, чтобы убедиться, что ничего не пропущено, если диапазоны в обеихINDIRECT
функциях имеют одинаковый размер. Он должен указывать на столбец сArt-no.
другими листами.[@[Art-no.]]
Поскольку я превратил свою таблицу результатов в фактическую таблицу в Excel, это просто указывает наArt-no.
значение в текущей строке с формулой.INDIRECT("'"&sheets&"'!"&"D2:D10000")
Это то же самое, что и другие,INDIRECT
но оно указывает наOrdered qty.
столбец.SUMIF(~)
Это сейчас становитсяSUMIF(Art-no. from every sheet, Art-no. in this row, Ordered qty. from every sheet)
SUMPRODUCT(~)
SUMIF
Возвращает массив вместо одного значения , поэтому мы используем это , чтобы просто сложить все значения в этом массиве.Формула
Delivered qty.
такая же , за исключением того, вы должны изменить ,D2:D10000
чтобыG2:G10000
или все , что требуется , чтобы указать на колонку сDelivered qty.
в других листах.Кредит, где кредит должен, я нашел этот метод на CreditJet.net и подумал, что это было круто .
источник