Страницы: 1
RSS
Формирование отчета(Сводной таблицы?) по нескольким критериям из не совсем однородных таблицы, Сложный отчет из нескольких таблиц
 
Доброго времени!
Пересмотрел кучу тем, уроков и разнообразной дополнительной информации, но самостоятельно решить эту задачу мне к сожалению не удается( Очень надеюсь на помощь общественности!
В книге есть листы на которых есть динамические таблицы, по моему так правильно они называются, имеющие одинаковую структуру и один лист на кортом присутствует аналогичная таблица, но с одним дополнительным столбцом.
В результате выборки я бы хотел получать сводные данные по этим таблицам.
Это достаточно сложно описать словами, так что я приложу в примере результат который я сейчас просто собираю руками.
Комментарии в примере на листе "Требуемый отчет".
Очень надеюсь, что этого хватит и будет понятно.

Если все же будет требоваться какие то более детальные объяснения, то конечно распишу все до последней запятой.

Заранее спасибо!
 
Здравствуйте. Раз у Вас уже есть макрос, предполагаю что лучше будет написать еще. Нужен макрос который будет собирать все таблицы с листов в одну таблицу (есть готовые решения, нужно поискать). В общем листе добавится столбец с названием листа, а дальше на базе полученной таблицы строится сводная таблица и формируется по Вашей необходимости. Можно конечно собирать данные макросом, но нет гарантии, что не потребуется другое расположение данных. Тогда придется писать другой макрос, а в сводных можно перемещать столбцы по необходимости.
Только не понятно, от куда взяты данные в примере, в столбцах "Цена" везде =100. Наверно это и есть 20% и 80%. Если это так,тогда для правильного формирования сводной, нужно в J2 прописать формулы L2-L2*0,2, или что то в этом роде, для столбца К, * на 0,8.
Изменено: gling - 27.06.2017 19:30:47
 
Идея с макросами в голову приходила, но не частично, а полностью решать задачу кодом, но как совсем уж крайняя мера. Кстати если не ошибаюсь в екселе есть встроенная функция консолидации. Да, есть, на планете даже урок есть. Надо попробовать.
Может я конечно идеализирую ексель и сводные таблицы, да и прочие инструменты, но мне казалось, что все можно и так, без промежуточных конструкций сделать, просто я не могу сообразить как)
 
По горячим следам, скажем так на скорую руку - встроенная консолидация не работает с таблицами, а только с указными диапазонами ($A$1:$B$2), что не дает возможность сделать ее динамичной и в любом случае это будет хэндмэйд от которого я хотел бы уйти....потыкаю еще, к концу дня голова квадратная, может что то не так понял...
 
А зачем цитировать моё сообщение, и так понятно что ко мне обратились. Ведь пока нет других предложений. Модераторам, цитата в полном объеме, не понравится.
Цитата
если не ошибаюсь в екселе есть встроенная функция консолидации
Да есть, попробуйте, но для Вашего примера, эта возможность Excel не в полне удобна.
Цитата
мне казалось, что все можно и так, без промежуточных конструкций сделать
Можно сделать пересчет, в сводной таблице, но для этого всё равно, нужна общая база, на основе которой можно построить нужную сводную таблицу.
 
Цитата
gling написал: А зачем цитировать моё сообщение, и так понятно что ко мне обратились
Ну извиняюсь, бывает, надеюсь ни для кого летальным исходом это не закончится)

Цитата
gling написал:
Только не понятно, от куда взяты данные в примере, в столбцах "Цена" везде =100. Наверно это и есть 20% и 80%. Если это так,тогда для правильного формирования сводной, нужно в J2 прописать формулы L2-L2*0,2, или что то в этом роде, для столбца К, * на 0,8.
Цена везде 100, как пример. В этой ячейке цена итоговая по каждому адресу, то есть да, эти 20% и 80% в сумме и есть =100, из этой книге еще 9 книг подтягивает данные и на основании этих 20/80 производит вычисления. Я немного другим способом вычисляю эти данные в рамках этих таблиц. Там есть:
Задолженность по построенным объектам
Задолженность по поданным документам
Задолженность по не поданным документам
И вот в них как раз вычисляю общие суммы с учетом коэффициента. Когда делал правда, таблицы были не динамические, так что сейчас бы наверное выглядело покрасивее.

По по поводу родной екселевской консолидации, все таки не то, что нужно. Приспособить можно, но уж очень костыльно выглядит все это(

Может у кого нить есть еще идеи?
 
 
Доброе время суток.
Можете собирать таблицы запросом Power Query в один источник для сводной с фильтрацией по пустым строкам и отбором нужных столбцов и использовать его как источник данных для сводной. Уже не раз и на этом форуме (в том числе в приёмах) и на других.
 
Андрей VG, как то упустил Power Query, как таковой и когда искал темы по форуму отметал соответственно тоже! Начну копать!
 
Начал копать Power Query, даже думаю, что приближаюсь к решению своей задачи, но вот столкнулся с непонятным для себя моментом....изменяю тип данных, к примеру из автоопределенного числового в валютный(валютный с региональными значениями), а при загрузке и формировании умной таблицы в результате получается все равно общий формат. Это касается валюты или процентов, а вот с датами все нормально...
Я бы мог потом это все исправить в таблице, но при обновлении все подтягивается заново, так как было в редакторе PQ изначально...
Может я еще в чем то не разобрался или это глюк такой?

PS Беру свои слова обратно, если в таблице применять для столбца нужный тип данных, а потом просто добавлять данные в исходную таблицу, то все хорошо.

Тогда возникает следующий вопрос на основании моего примера: есть случаи когда в столбцах 20% и 80% заполнены обе ячейки у адреса, что значит, что за адрес уже заплачено. В редакторе PQ удаление пустых значений происходит очень удобно, а как удалить строчку по 2 критериям так сказать, 20 и 80 заполнены?

PSS Ну отбросив вопрос про 20/80 свою задачу в черновом виде я вроде как решил добавляя последующими столбцами в создаваемую таблицу дату+30 и проверку по типу сумма*0,2 если есть 20 + сумма*0,8 если есть 80. Но это же не тру.

PSSS Попробую сформулировать актуальные вопросы, хотел бы получить либо ответ, либо ссылку где почитать про такие ситуации:
1)Столбик Дата счф должен быть на выходе Дата счф+30
2)Удаление лишних строк по критерию " столбцы 20 и 80 не пустые"
3)Столбик Цена образно говоря должен считаться по формуле Цена_изначальная*0,2 если есть 20 + Цена_изначальная*0,8 если есть 80, что бы на выходе выдавать остаток по задолженности.
4)Правильное отображение выбранного типа данных в получаемой умной таблице.
Надеюсь можно эти задачи как то решить в рамках PQ, PQ интересен, хотел бы подразобраться с общей помощью)
Изменено: VitaliyP - 29.06.2017 18:16:31
 
Цитата
VitaliyP написал:
1)Столбик Дата счф должен быть на выходе Дата счф+30
Создайте столбец с примерно такой формулой:
Код
=[Дата счф]+#duration(30,0,0,0)
F1 творит чудеса
 
Цитата
VitaliyP написал:
2)Удаление лишних строк по критерию " столбцы 20 и 80 не пустые"
Сделайте фильтр по одному из столбцов, например, по "20%".
В строке формул получите что-то типа
Код
= Table.SelectRows(Source, each ([#"20%"] = null))
допишите ее так:
Код
= Table.SelectRows(Source, each ([#"20%"] = null or [#"80%"] = null))
F1 творит чудеса
 
Цитата
VitaliyP написал:
Столбик Цена образно говоря должен считаться по формуле
"Добавить столбец" --> "Условный столбец", или "Пользовательский столбец".
Условия задаются при помощи оператора if ... then ... else ...
все три части обязательны, все ключевые слова пишутся с маленькой буквы. Можно использовать связки and, or и скобки.
F1 творит чудеса
 
Цитата
VitaliyP написал:
Правильное отображение выбранного типа данных в получаемой умной таблице.
не все типы данных PQ переносятся в Excel. Проще всего отформатировать как надо умную таблицу и в параметрах выводимой умной таблицы (правая мышь - Свойства внешних данных) настроить параметры сохранения формата.
F1 творит чудеса
 
1)То что нужно!
Код
=[Дата счф]+#duration(30,0,0,0)

2)Вот так у меня получилось, синтаксис чуть другой, а результат верный.
Код
= Table.SelectRows(#"Удаленные столбцы1", each ([#"20%"] = null) or ([#"80%"] = null))

3)Ну методом тыка и с помощью совета друга-кодера пришел к
Код
=if ([#"20%"] = 20) then ([#"Цена"]*0.2) else if ([#"80%"] = 80) then ([#"Цена"]*0.8) else ([#"Цена"]*1)

4)В точку!

Максим Зеленский, спасибо за советы и наводки!
Изменено: VitaliyP - 12.07.2017 19:15:00
Страницы: 1
Читают тему
Наверх