2017-01-12 5 views
0

Ich spinne wirklich meine Räder auf diesem. Ich versuche, einer geladenen einzelnen Spalte zwei berechnete Spalten in einer Power Pivot-Tabelle (in Excel 2013) hinzuzufügen.PowerPivot Berechnete Spalte Circular Dependency

Setup (nur erste Zeile angezeigt):

Prd | Beg              | End 
1 | =CALCULATE(SUM([End]),Table[Prd]=EARLIER([Prd])-1)  | =[Beg]+[Prd] 

ich will es wie folgt berechnen:

Prd | Beg | End 
1 | 1 | 2 
2 | 2 | 4 
3 | 4 | 7 

Aber egal, was ich tue, ich einen kreisförmigen Referenzfehler, weil die [ Ende] Berechnung zeigt auf die [Beg] Berechnung und umgekehrt. Ich versuche, eine rollierende Berechnung durchzuführen, bei der der [Beg] Betrag immer gleich dem [Ende] Betrag vom vorherigen [Prd] ist.

Ich habe verschiedene Berechnungen mit SUMX und ALLEXCEPT ausprobiert, aber ich verstehe das nicht richtig. Ich habe sogar versucht, den Row Identifier auf der Registerkarte Table Behaviour basierend auf this zu bestimmen, aber das funktioniert auch nicht.

Schätzen Sie alle Vorschläge!

+0

Können Sie die Struktur der Tabelle angeben. –

+0

Das ist die Struktur. Es beginnt mit einer 1 Spalte Tabelle. Spalte Beg und Ende sind berechnete Spalten, die auf die Anfangsspalte ("Prd") verweisen. Die Idee besteht darin, eine rollierende Wertperiode über die Periode hinweg zu erstellen. – LoganTheSnowEater

Antwort

0

Ich würde vorschlagen, dass Sie Ihre Formel für [Beg] Spalte auf die vorherigen Werte von [Prd] Säule zu stützen. Deshalb

Beg=SUMX(
     FILTER( 
       ALL(Table[Prd]), 
       Table[Prd] < EARLIER(Table[Prd]) 
       ), 
     Table[Prd] 
     ) + 1 

Erklärung:
Es fasst alle bisherigen Werte für [Prd] Spalte und fügt 1 (wenn Sie einen Blick auf die generierten Werte annehmen, werden Sie das Muster sehen).


Aber die Formel für [Ende] auch festgelegt werden sollte, so dass Sie nicht in die gleiche Ausnahme ausgeführt werden. So haben Sie die folgende (dies Werte von den aktuellen Zeile Summe für [Beg] und [Prd]):

End=SUMX(
     FILTER(
       ALL(Table[Beg], Table[Prd]), 
       Table[Prd]=EARLIER(Table[Prd])),Table[Beg] 
     ) + Table[Prd] 

Erklärung:
In Ihrem Fall zu vermeiden zu verwenden BERECHNEN Sie und verwenden Sie stattdessen nur SUMX und EARLIER für [Ende] wird Ihnen helfen, Kreisabhängigkeit loszuwerden.