Excel 2010 PowerPivot: как показать элементы без данных?

72797
Andi Mohr

В стандартных сводных таблицах Excel есть опция для полей, которые позволяют принудительно отображать все элементы, даже если для текущего выбора нет результатов. Вот вариант:

Pivot Table Field Settings Dialog box

Однако при использовании надстройки PowerPivot для Excel 2010 этот параметр неактивен. Есть ли обходной путь, чтобы я мог заставить все результаты появляться?

Пример сценария - количество проданных бананов по месяцам. Если я не продаю бананы в августе, то в таблице powerpivot столбец для августа вообще не отображается, он просто пропускает с июля по сентябрь. Мне нужно, чтобы появился август с пустым количеством бананов или с нулем.

Есть идеи? Может быть, требуется DAX-выражение?

РЕДАКТИРОВАТЬ : чтобы ответить на вопрос Harrymc, я создал эту сводную таблицу, выбрав сводную таблицу из этого меню в окне PowerPivot.

PowerPivot PivotTable insert menu

12
В наборе данных PowerPivot нельзя добавлять элементы без данных, поэтому естественно, что «Показать элементы без данных» отображается серым цветом. Используете ли вы сводную сводную таблицу, как [описано здесь] (http://office.microsoft.com/en-001/excel-help/use-a-pivottable-report-to-make-external-table-data-available- in-excel-services-HA010207979.aspx)? harrymc 10 лет назад 0
Спасибо за ответ harrymc, я не использую сводную сводную таблицу, я использовал стандартную сводную таблицу (см. Изображение выше). Andi Mohr 10 лет назад 0
С вашей точки зрения, я не уверен, что правильно вас понял. Вы говорите, что не можете добавлять товары без данных, однако мой набор данных включает августовские продажи яблок. Обычно это означает, что включение «Показать элементы без данных» показывает столбец августа. Вы хотите сказать, что сводные таблицы, извлекаемые из данных PowerPivot, ведут себя иначе, чем любой другой источник данных? Andi Mohr 10 лет назад 0

4 ответа на вопрос

5
Andi Mohr

Actually this is a better solution. Thanks to Alberto Ferrari for this one.

You need to build a Months table (ie a list of month names, Jan/Feb/Mar etc - a linked table will work just fine), and create a relationship between your new Months table and your fact table.

Then write a measure like this one:

NeverBlankUnits:=IF( ISBLANK( SUM(FruitSales[Units]) ), 0, SUM(FruitSales[Units]) ) 

EDIT: When you add your new months column into your pivot table, you may find the default sort is frustratingly alphabetical; Apr, Aug, Dec, Feb... Here's a great tutorial showing you how to get round this.

0
harrymc

Обходной путь может быть возможным использовать выражение анализа данных (DAX) для замены пробелов нулями.

DAX может принудительно устанавливать ноль вместо пробела, если в таблице фактов нет данных, но вы хотите, чтобы строка отображалась в сводной таблице.

Для простой таблицы с Depts, Divisions и таблицей фактов Numbers и с одним столбцом «D», содержащим сумму для суммирования, напишите код DAX следующим образом:

=IF ( COUNTROWS (Divisions) > 0;  IF (ISBLANK (SUM (Numbers[D])), 0, SUM (Numbers[D])) ) 

Дополнительные сведения см. В разделе «
Как использовать DAX в выражениях анализа данных надстройки PowerPivot для Excel
(DAX) в PowerPivot».

Этот подход был первоначально предложен в теме « Показать элементы без данных в строках» .

Спасибо - просто смотрю на этот подход, чтобы увидеть, смогу ли я заставить его работать. Первое, что я заметил, - это небольшая опечатка в формуле: вместо запятой вы ставите точку с запятой. (Как и в оригинальном сообщении AlbertoFerrari по ссылке.) Andi Mohr 10 лет назад 0
К сожалению, это не похоже на работу. Я изменил формулу следующим образом: `Units_2: = IF (COUNTROWS ('FruitSales')> 0, IF (ISBLANK (SUM (FruitSales [Units]))), 0, SUM (FruitSales [Units])))`. Сводная таблица просто показывает единицы, проданные в июле и сентябре. Andi Mohr 10 лет назад 0
Если не найдено никакого другого решения, остается только перенести сводную таблицу в локальную электронную таблицу. [Статья] (http://office.microsoft.com/en-001/excel-help/use-a-pivottable-report-to-make-external-table-data-available-in-excel-services-HA010207979 .aspx) Я связался с, прежде чем может помочь. harrymc 10 лет назад 0
0
Andi Mohr

A brute force method would be to create a measure for each month. As long as one of the month columns has some data, all month columns will appear. Creating all these individual measures is very tedious though - not ideal.

=CALCULATE( SUM([Units]) ,Filter('FruitSales',[Month Name]="August") ) 
0
Jens

это работает для меня:

= Если (сумма (каландр [Дата])> 0; если (ISBLANK (сумма (Sales_SalesOrderDetail [LineTotal])); 0; сумма (Sales_SalesOrderDetail [LineTotal])))

Откуда появился `calendar [Date]`? Это не в моем примере сценария, так как вы добавили это и как эта таблица связана в PowerPivot? Andi Mohr 9 лет назад 0

Похожие вопросы