Страницы: 1
RSS
совмещение нескольких таблиц
 
здравствуйте уважаемые форумчане!
никак не могу сообразить как получить конечный результат и прошу помощи.

суть задачи такая:
есть таблица в файле excel по продажам (пример исходник.jpg), в этом же файле на основе первоначальной нужно получить результирующую таблицу (пример результат.jpg).
желательно всё сделать стандартными формулами, без vba и макросов, если возможно.

в файле приведено то что уже наработано:
изначальная таблица разделена на несколько по видам продуктов
вопрос как их совместить в одну?
 
А откуда в результирующей таблице взялись Яблоки, Груши и прочие фрукты? В исходных данных их нет. Покажите более реальный файл-пример.
Изменено: Sanja - 13.06.2019 15:01:01
Согласие есть продукт при полном непротивлении сторон
 
второй столбец исходника. пример более, чем реальный.
Изменено: itinich - 13.06.2019 20:44:22
 
itinich, кнопка цитирования не для ответа! Без цитаты никак?
 
Открыл файл, и понял, что так данные хранить нельзя, нужен в файле навести какой то порядок, там же, что то непонятное творится. Я к тому, что если такой отчет формировать за год или количество товаров будет велико, то просто может не хватить листа Excel для формирование отчета.
"Все гениальное просто, а все простое гениально!!!"
 
Я полностью поддержу тезис:

Цитата
Nordheim написал:
так данные хранить нельзя

Здесь Вам надо работать не над тем как все собрать, а над тем, как разместить данные в формате, который будет удобно анализировать.

В прикрепленном файле я привет пример того, как должны быть построены данные.
В таком случае не надо никаких формул, весь отчет строим через сводную таблицу с фильтрами и можем смотреть и отдельно по каждому ип, магазину или юр лицу. Да много чего еще можем с нормальной структурой данных.
Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее!
 
Dyroff спасибо за совет, действительно попробую развернуть таблицу из 2d в плоскую.
 
Цитата
itinich написал: второй столбец исходника. пример более, чем реальный.
Упс. Пролистал лист влево и
Цитата
Nordheim написал: понял, что так данные хранить нельзя
далее по тексту, поддержу коллег
Согласие есть продукт при полном непротивлении сторон
 
Dyroff, спасибо большое это именно то что мне нужно было - сводная таблица сделанная по промежуточной.
Во вложении окончательный вариант для дальнейшего наполнения.
 
Вариант в PQ
Код
let
    fn = (a)=>let
        d = List.Count(List.FirstN(Table.Column(a,b{0}),each _=null)),
        e = List.Transform(List.Zip(Table.ToRows(Table.FirstN(a,d))),each if List.NonNullCount(_)>0 then Text.Combine(_,"|") else null),
        f= Table.PromoteHeaders(Table.InsertRows(Table.Skip(a,d),0,{Record.FromList(e,Table.ColumnNames(a))})) 
    in 
        Table.SplitColumn(Table.UnpivotOtherColumns(f, List.FirstN(b,c+1), "Атрибут", "Значение"), "Атрибут", Splitter.SplitTextByDelimiter("|")),
    Source = Excel.CurrentWorkbook(){[Name="отчеты"]}[Content],
    a = Source{0},
    b = Table.ColumnNames(Source),
    c = List.Count(List.FirstN(Record.ToList(a), each _=null))-1,
    d = List.Skip(b,c),
    e = Record.FieldValues(Record.SelectFields(a,d)),
    f = List.Count(e&{0})/(List.Count(e)+1-List.NonNullCount(e))*2,
    g = List.Select(List.Split(List.Alternate({0}&d,1,f-1,0),f-1),each List.Count(_)>0),
    h = Table.Combine(List.Transform(g,each let t= Table.SelectColumns(Source,List.FirstN(b,c)&_) in fn(Table.RenameColumns(t,{_{0},g{0}{0}})))),
    i = Table.TransformColumnTypes(h,{{"Column1", type date}, {"Значение", Int64.Type}})
in
    i
Изменено: Андрей Лящук - 13.06.2019 20:07:37
Страницы: 1
Наверх