Excel 2010 PowerPivot: Jak wyświetlać elementy bez danych?

12

W standardowych tabelach przestawnych programu Excel istnieje opcja dla pól, które pozwalają wymusić wyświetlanie wszystkich elementów, nawet jeśli nie ma wyników dla bieżącego wyboru. Oto opcja:

Okno dialogowe Ustawienia pola tabeli przestawnej

Jednak przy użyciu dodatku PowerPivot dla programu Excel 2010 ta opcja jest wyszarzona. Czy istnieje obejście problemu, dzięki któremu mogę wymusić wyświetlanie wszystkich wyników?

Przykładowy scenariusz - liczba bananów sprzedanych w ciągu miesiąca. Jeśli nie sprzedam żadnych bananów w sierpniu, tabela powerpivot w ogóle nie pokazuje kolumny z sierpnia, po prostu przeskakuje od lipca do września. Muszę się pojawić z pustą liczbą bananów lub zerem.

Jakieś pomysły? Może wymagane jest wyrażenie DAX?

EDYCJA : aby odpowiedzieć na pytanie harrymca, utworzyłem tę tabelę przestawną, wybierając opcję Tabela przestawna z tego menu w oknie PowerPivot.

Menu wstawiania tabeli przestawnej PowerPivot

Andi Mohr
źródło
W zestawie danych PowerPivot nie można dodawać elementów bez danych, dlatego naturalne jest, że „Pokaż elementy bez danych” jest wyszarzony. Czy używasz Spłaszczonej tabeli przestawnej, jak opisano tutaj ?
harrymc 30.09.13
Dzięki za odpowiedź harrymc, nie używam Spłaszczonej tabeli przestawnej, użyłem standardowej tabeli przestawnej (patrz obrazek powyżej).
Andi Mohr
Jeśli chodzi o twój pierwszy punkt, nie jestem pewien, czy dobrze cię zrozumiałem. Mówisz, że nie możesz dodawać produktów bez danych, jednak mój zestaw danych obejmuje sierpniową sprzedaż jabłek. Zwykle oznacza to włączenie „Pokaż elementy bez danych” pokazuje kolumnę z sierpnia. Czy mówisz, że tabele przestawne pobrane z danych PowerPivot zachowują się inaczej niż jakiekolwiek inne źródło danych?
Andi Mohr

Odpowiedzi:

5

W rzeczywistości jest to lepsze rozwiązanie. Podziękowania dla Alberto Ferrari za ten.

Musisz zbudować tabelę Miesięcy (tj. Listę nazw miesięcy, styczeń / luty / marzec itd. - połączona tabela będzie działać dobrze) i utworzyć relację między nową tabelą Miesiące a tabelą faktów.

Następnie napisz takty:

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

EDYCJA : Gdy dodasz kolumnę nowych miesięcy do tabeli przestawnej, może się okazać, że domyślny sort jest frustrująco alfabetyczny; Kwiecień, sierpień, grudzień, luty ... Oto świetny samouczek pokazujący, jak sobie z tym poradzić.

Andi Mohr
źródło
0

Obejściem może być możliwe użycie wyrażenia analizy danych (DAX) w celu zastąpienia spacji zerami.

Język DAX może wymusić zero zamiast pustego miejsca, gdy w tabeli faktów nie ma żadnych danych, ale chcesz, aby wiersz pojawił się w tabeli przestawnej.

W przypadku prostego arkusza z działami, działami i tabelą faktów o nazwie Liczby oraz z pojedynczą kolumną „D” zawierającą liczbę do zsumowania, napisz kod DAX w ten sposób:

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

Aby uzyskać więcej informacji, zobacz:
Jak używać języka DAX w wyrażeniach analizy danych dodatku PowerPivot programu Excel
(język DAX) w programie PowerPivot

Podejście to zostało pierwotnie zasugerowane w wątku Pokaż przedmioty bez danych o rzędach .

harrymc
źródło
Dzięki - wystarczy spojrzeć na to podejście, aby sprawdzić, czy uda mi się go uruchomić. Pierwszą rzeczą, którą zauważyłem, jest mała literówka w formule - zamiast średnika masz średnik. (Podobnie jak oryginalny post AlbertoFerrari w linku.)
Andi Mohr
Niestety wydaje się, że to nie wystarczy. Mam dostosować formułę w następujący sposób: Units_2:=IF (COUNTROWS('FruitSales') > 0,IF(ISBLANK (SUM (FruitSales[Units])), 0, SUM (FruitSales[Units]))). Tabela przestawna pokazuje tylko jednostki sprzedane w lipcu i wrześniu.
Andi Mohr
Jeśli nie można znaleźć innego rozwiązania, należy spłaszczyć tabelę przestawną w lokalnym arkuszu kalkulacyjnym. Artykule mam linkowane zanim może pomóc.
harrymc
0

Metodą brutalnej siły byłoby stworzenie miary dla każdego miesiąca. Tak długo, jak jedna z kolumn miesiąca zawiera pewne dane, pojawią się wszystkie kolumny miesiąca. Tworzenie wszystkich tych indywidualnych środków jest jednak bardzo uciążliwe - nie idealne.

=CALCULATE(
   SUM([Units])
   ,Filter('FruitSales',[Month Name]="August")
   )
Andi Mohr
źródło
0

to działa dla mnie:

= if (suma (kalendarz [Data])> 0; if (isblank (suma (Sales_SalesOrderDetail [LineTotal])); 0; suma (Sales_SalesOrderDetail [LineTotal])))

Jens
źródło
Skąd się wziął calendar[Date]? Nie ma tego w moim przykładowym scenariuszu, więc jak to dodałeś i jak ta tabela jest połączona w PowerPivot?
Andi Mohr