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


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ć.


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 .


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")
   )

0

to działa dla mnie:

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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.