Вот вариант, который не использует Power Query или Pivot Tables:
Как вы указали в комментариях, вы можете создать желаемую таблицу результатов со всем, кроме Ordered qty.
и Delivered qty.
поля. Это означает, что все, что нам нужно сделать, это суммировать значения для каждого листа, используя Art-no.
как уникальный идентификатор.
Шаг 1: Создайте список со всеми именами листа. Это можно сделать с помощью небольшого VBA, поскольку в вашем файле так много листов.
Sub SheetNames()
Dim ws As Worksheet
Dim r As Integer
Set ws = Worksheets.Add
For r = 1 To Worksheets.Count
ws.Cells(r, 1).Value = Worksheets(r).Name
Next
End Sub
Шаг 2: Создайте именованный диапазон, который ссылается на список имен рабочих листов. Я превратил список в таблицу и основал диапазон имен на этом, но это не обязательно.
Шаг 3: Создайте свою базовую таблицу результатов без Ordered qty.
и Delivered qty.
заполненные значения Если у вас где-то этого нет, может быть проще всего использовать что-то вроде того, что опубликовал сэр Аделаида, чтобы объединить все листы, удалить ненужные поля, стереть все количество. значения и удалить дубликаты. Вы можете задаться вопросом, зачем вам это нужно, если вы просто будете следовать этому методу, но уловка на следующем шаге слишком крута, чтобы не делиться ею.
Шаг 4: Напишите свои формулы для суммирования данных со всех листов одновременно. Во-первых, вот формула, которую вы можете использовать для Ordered qty.
:
=SUMPRODUCT(SUMIF(INDIRECT("'"&sheets&"'!"&"B2:B10000"),[@[Art-no.]],INDIRECT("'"&sheets&"'!"&"D2:D10000")))
Это специальный SUMIF
завернутый в SUMPRODUCT
. Ключом к тому, чтобы заставить SUMIF
работать с трехмерной ссылкой, является функция INDIRECT
и тот список имен листов, который мы создали. Вот части формулы:
INDIRECT("'"&sheets&"'!"&"B2:B10000")
Это стандартная INDIRECT
функция , за исключением того , что мы ссылающийся на именованный диапазон мы сделали в шаге 2 , что указывает на список имен листов. Это то, что делает его эталоном 3D. Я выбрал 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 и подумал, что это было круто .