Доброго времени суток, Планетяне! Вопрос про вычисления в сводной. 4 года плодотворной работы в Excel сводные таблицы в их "первозданном" виде служили мне верой и правдой. Знаю то, что есть какие-то меры, формулы DAX и Power Pivot и то, что когда-нибудь придётся включить эти замечательные инструменты в свою библиотеку. Возможно этот момент настал))) В общем, продолжают поступать задачи от начальника по созданию мегаинформативной динамической таблицы, а я "поплыл" как только за привычные рамки пивота вылез)))
Проще показать, чем тут расписывать, что нужно (см. файл). Коротко: несколько неоднотипных итогов в сводной и неоднотипные промежуточные итоги с "если". Буду рад любой помощи
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
UP: Господа, вы хоть подскажите - может что-то не так описал или банально неинтересно? А то просмотры есть, а отзывов нет(( Может вообще в данном случае проще обработчик макросный написать на основе данных в сводной???
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Jack Famous написал: может что-то не так описал или банально неинтересно?
Просто банально времени нет. Единственное что скажу, многострочные общие итоги создать не получится. А так примеры ассиметричных мер и способы их форматирования через наборы уже на форуме. Вот у соседей свежий пример.
Андрей VG, спасибо большое за отклик! Да итоги - это самое меньшее (их всегда можно макросом быстро добавить). Глянул ссылку - в целом похоже, но у меня тип промежуточных итогов разнится от уровня группировки — это самое "безобразное", что есть, но директор хочет именно так (как это часто у многих бывает). Самостоятельно не разберусь (в ближайшее время точно). Да и кто знает - что и как мне нужно будет учитывать завтра в пределах одной несчастной сводной)))
Думаю, что пока остановлюсь на варианте массивного обработчика сводной (одной или нескольких) с приведением к нужному виду и последующим форматированием. Если у кого-нибудь будет желание разобраться с моим примером средствами сводной, то буду признателен
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
В примере сообщения #1 результат предложенной формулы =ЕСЛИ(план>факт; план-факт; факт-план) для строки "мясо" совпадает с приведенными на листе [что нужно] значениями только для декабря: Ожидается:| Мясо | -2145563.18 | -111410.62 | +16428373.18 ПоФормуле:| Мясо | +2145563.18| +111410.62| +16428373.18 Там везде план > факт, поэтому формула выдает положительные значения. Соответственно и итоги будут отличаться. В решении StepanWolkoff в строке "Общий итог №3" считается разность желтых ячеек, но в задании вроде бы требуется сумма.
Приложил вариант формирования отчета макросом без PowerPivot с использованием штатных группировок строк, может это и устроит. Макрос обновляет сводную таблицу, копирует ее на лист отчета, группирует строки, добавляет итоги и вписывает заказанные формулы. Посмотрите, что там Ваши формулы насчитали, в коде в константе FM задается исходная формула, ее можно откорректировать. Для формирования отчета на листе4 нужно нажать кнопку [Run].
ZVI написал: В решении StepanWolkoff в строке "Общий итог №3" считается разность желтых ячеек, но в задании вроде бы требуется сумма.
Я осознано поставил туда данную формулу, чтобы дополнительно показать, что у автора описание расходится с желанием и к чему это может привести. А так пример больше для того, чтобы показать путь решения желаемого результат с помощью PowerPivot и DAX.
Доброго времени суток! Господа, огромное спасибо за ответы! StepanWolkoff, ZVI, по замечаниям вы совершенно правы - мой косяк и недосмотр. Буду разбираться в предложенных вариантах и отписываться сюда… PooHkrd, если правильно понял, что вам нужно, то вот…
Из Power Pivot
Код
СуммаПлан:=SUMx(FILTER('база';'база'[план/факт]="план"); 'база'[СУММА по операции])
СуммаФакт:=SUMx(FILTER('база';'база'[план/факт]="факт"); 'база'[СУММА по операции])
СуммаИтого:=SUM('база'[СУММА по операции])
Общий итог№1:=var Plan=SUMx(FILTER('база';'база'[план/факт]="план"); 'база'[СУММА по операции])
var Fact=SUMx(FILTER('база';'база'[план/факт]="факт"); 'база'[СУММА по операции])
return
IF(HASONEVALUE('база'[Крит 2]);SUM('база'[СУММА по операции]);IF(HASONEVALUE('база'[план/факт]);SUM('база'[СУММА по операции]);IF(HASONEVALUE('база'[Крит 1]);IF(Plan>Fact;Plan-Fact;Fact-Plan);SUM('база'[СУММА по операции]))))
Общий итог№2:=IF(HASONEVALUE('база'[Крит 2]);BLANK();IF(HASONEVALUE('база'[план/факт]);BLANK();IF(HASONEVALUE('база'[Крит 1]);BLANK();CALCULATE(SUM('база'[СУММА по операции]);FILTER(ALL('база');'база'[Дата]<=MAX('база'[Дата]))))))
Общий итог№3:=var Plan=SUMx(FILTER('база';'база'[план/факт]="план"); 'база'[СУММА по операции])
var Fact=SUMx(FILTER('база';'база'[план/факт]="факт"); 'база'[СУММА по операции])
return
IF(HASONEVALUE('база'[Крит 2]);BLANK();IF(HASONEVALUE('база'[план/факт]);BLANK();IF(HASONEVALUE('база'[Крит 1]);BLANK();IF(Plan>Fact;Plan-Fact;Fact-Plan))))
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Общий итог№1:=
var Plan=SUMx(FILTER('база';'база'[план/факт]="план"); 'база'[СУММА по операции])
var Fact=SUMx(FILTER('база';'база'[план/факт]="факт"); 'база'[СУММА по операции])
return
IF(
HASONEVALUE('база'[Крит 2]);
SUM('база'[СУММА по операции]);
IF(
HASONEVALUE('база'[план/факт]);
SUM('база'[СУММА по операции]);
IF(
HASONEVALUE('база'[Крит 1]);
IF(Plan>Fact;Plan-Fact;Fact-Plan);
SUM('база'[СУММА по операции])
)
)
)
Jack Famous, обратите внимание на Общий Итог№3 в моей модели. За Октябрь и Ноябрь у меня получились такие же суммы как у вас на листе "что нужно", хотя я использовал не суммирование разниц, а условное выражение, которое вы озвучили в условиях, потому что как раз, если действовать по описанной логике, то у вас в "Общий итог№3" верная сумма разницы, а вот по "мясу" нет.
StepanWolkoff, как я уже написал, я ошибся в визуализации (формула верная). Я пытаюсь разобраться в вашем решении, потому что то, что вы продемонстрировали - очень круто и в динамике, но я не хочу просто вставить свои данные, я хочу понять, как вы к этому пришли. И явно мне нужно плотно приступить к изучению Power Pivot - это реально мощная штука. Не понимаю только, почему у мелкомягких 3 разных языка: функции листа, DAX и M… С ума сойти)))
ZVI, также очень крутой вариант. Подход "с другой стороны" - мне очень пригодиться, т.к. мои обработчики на порядок примитивнее и медленнее — буду изучать ваш код и применять на практике! А вариант с "понятной" константой, доступной для редактирования, которая потом Replace'ом преобразуется в формулу, вообще вижу впервые))))
Спасибо большое! Разбираюсь… По вопросам буду писать в тему.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Jack Famous написал: я хочу понять, как вы к этому пришли
каждодневное чтение, в основном англоязычных - блогов, книг по DAX и инструментам, где он применяется (PowerPivot, PowerBI, SSAS). Целый год работы по созданию и улучшению бизнес-аналитики для одного крупного ретейлера. И вот такие вот постоянные разминки для ума по типу вашего задания. Помогают не только найти новые и интересные решения, но и не забыть старые - как любой язык, не только программирвоания, если не используешь - начинаешь забывать.
StepanWolkoff, терпение и труд - всё перетрут. Действительно работающий совет добавил ссылку на эту тему в очередь на изучение PP, а пока вернусь к обработчику, т.к. на работе уже нужно решение, а обработчик я хоть самостоятельно контролить и модифицировать могу. Ещё раз большое вам спасибо! Не думал, что даже ТАКОЕ можно делать в PP
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
С.М., заполнялось рандомом просто для примера. Сводная включает несколько строк исходной базы по каждому из итогов Можно отсортировать с Даты по Крит 2 и посмотреть (см. скрин)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Jack Famous написал: Не понимаю только, почему у мелкомягких 3 разных языка: функции листа, DAX и M… С ума сойти)))
Так исторически сложилось. Росло же это все из 3 разных инструментов, объединение, которых дает просто сумасшедшую синергию, и, на мой взгляд, вдохнуло вторую жизнь в Excel. По крайней мере, когда я уже думал, что без изучения SQL моя задача нерешаема известными мне средствами подвернулось вот это вот все. И тут такое началось!
PooHkrd, спасибо за объяснение))) PP и PQ в некоторых моментах пересекаются и хотелось бы иметь общий язык хотя бы для них))) ну - работаем с тем, что есть
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
PQ, оно больше для забора инфы и "причесывания", а вот PP уже для связывания всего причесанного в одну структуру и анализа. Плюс PQ лично для меня больше выступает как замена автоматизации на VBA, я в нем ни бельмеса и разбираться особо некогда было, а PQ зашел прямо в тему, жалею только, что раньше за эту штуку не схватился, смог бы гораздо больше всего интересного накрутить.
PooHkrd, OFF: согласен))) сейчас на PQ бум начался, уроки появились крутые (у того же глубокоуважаемого НП) и грех не изучать. Я использую PQ для динамического связывания, объединения запросов (связь "один-ко-многим") и "подтягивания" таблиц-справочников из стационарных файлов во все другие
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄