Somma su pivot non coerente L’argomento è risolto

Non è propriamente un programma di BI, ma nelle sue versioni più recenti anche Excel può fare grandi cose!

Moderatore: Utilizzo_prof_Excel

Rispondi

DarioDalfe
Messaggi: 11 | Topic creati
Iscritto il: mer 22 lug 2020, 19:31
Ringraziato: 1 volta

Somma su pivot non coerente

Messaggio da DarioDalfe »

Buon pomeriggio a tutti,

torno da voi perché, purtroppo, non riesco a risolvere un problema con alcune misure e la loro rappresentazione all'interno di una tabella pivot. I valori esposti nelle singole righe sono corretti ma i totali non coincidono. Ho usato il più possibile sumx senza risultato.

Immagine


Sotto le varie misure
Ricavi Budget

Codice: Seleziona tutto

=ROUND(
CALCULATE(
SUMX(
Input_BDGActual;
Input_BDGActual[Importo]);
Input_BDGActual[Tipologia]="Ricavi");
0)
Costi Budget

Codice: Seleziona tutto

ROUND(
CALCULATE(
SUMX(
Input_BDGActual;
Input_BDGActual[Importo]);
Input_BDGActual[Tipologia]<>"Ricavi");
0)
Costi Consuntivi

Codice: Seleziona tutto

=ROUND(
SUMX(
Calc_Costi;
Calc_Costi[Importo]);
0)

Avanzamento Commessa --> % calcolata prendendo come base i costi di budget attesi

Codice: Seleziona tutto

IF(
[ComApertaChiusa]=0;
1;
	IF(
	[RicaviBdgRev]=1;
	0;
		IF(
		[CostiBdgRev]=0;
		0;
			DIVIDE(
			[CostiCons];
			[CostiBdgRev]
			)
		)
	)
)
Produzione

Codice: Seleziona tutto

VAR Classe = SUMX(
		Input_Commesse;
		Input_Commesse[Classe1key]
		)
VAR Preventivi = SUMX(
		Input_Commesse;
		Input_Commesse[Preventivi]
		)
VAR StatoComm = SUMX(
		Input_Commesse;
		Input_Commesse[StatoKey]
		)

RETURN

IF([FatturatoSaldo]>0 && [CostiBdgRev]=0 && [RicaviBdgRev]=0;
[Fatturato];
	IF(Classe=0;
	0;
		IF(Preventivi=1;
		0;
			IF([CostiBdgRev]=0 && [RicaviBdgRev]=0;
			0;
				IF(StatoComm =0 && [FatturatoSaldo]>0;
				[Fatturato];
					IF(StatoComm=0 && [RicaviBdgRev]>1;
					[RicaviBdgRev];
						IF(Classe=1 &&Preventivi=1;
						0;
							IF([RicaviBdgRev]=1;
							[PropostaProdConsuntivo];
								IF([RicaviBdgRev]*[Avanzamento%Commessa]>[RicaviBdgRev];
								[RicaviBdgRev];
								[RicaviBdgRev]*[Avanzamento%Commessa]
								)
							)
						)
					)
				)
			)	
		)
	)
)


I dati esposti nelle singole righe sono corretti e li ho confrontati con altre tabelle che compilo manualmente. Gli scostamenti li trovo sulla colonna totale produzione e %avanzamento che non tengono conto dei valori ma eseguono il calcolo % sul totale colonna ricavi bdg e costi consuntivi.

Grazie a chi saprà indicarmi la strada.

Dario

Immagine


Avatar utente

Enrico Galli
Messaggi: 890 | Topic creati
Iscritto il: dom 28 giu 2020, 19:03
Luogo: San Giovanni in Persiceto (BO)
Ringraziato: 325 volte
Contatta:

Somma su pivot non coerente

Messaggio da Enrico Galli »

Ciao. Tralasciando una sintassi sicuramente migliorabile in molti punti (ti ricordo inoltre che il forum possiede un tag per il rendering del codice con sintassi evidenziata, stavolta te l'ho aggiunto io), mi viene da dire questo: visto che il tuo calcolo di Produzione non ha una logica unica, ma variabile a seconda di quello che risulta dalle precedenti misure, devi fare in modo che il calcolo venga fatto riga per riga (e poi sommato) anche per il subtotale. Come? Creando una tabella temporanea con tutti i valori visibili del tuo campo riga (che non sapendo come si chiama identificherò con [Codice prodotto]), e "attaccandole" i valori di produzione calcolati.
Quindi, mantenendo la misura [Produzione] come l'hai scritta tu, la nuova misura "Produzione corretta" potrebbe diventare qualcosa tipo:

Codice: Seleziona tutto

=
SUMX(
	ADDCOLUMNS(
		VALUES(Input_Commesse[Codice Prodotto]);
		"@prod"; [Produzione]
	);
	[@prod]
)
Naturalmente sarebbe tutto moooooolto più semplice se ci fosse un file allegato, anziché degli screenshot di scarsa utilità
Enrico Galli
Link utili: I nostri tutorial | Come inserire: Immagini - Codice - Risolto
Se il forum ti è stato utile, considera di supportarlo con una libera donazione

Autore del topic
DarioDalfe
Messaggi: 11 | Topic creati
Iscritto il: mer 22 lug 2020, 19:31
Ringraziato: 1 volta

Somma su pivot non coerente

Messaggio da DarioDalfe »

Enrico, che dire. Grazie mille. Ho risolto subito.
Ti chiedo un altro paio di cose visto che me le hai segnalate:
- dove trovo il tag di cui parli? mi dispiace se hai dovuto perdere tempo;
- in che modo miglioreresti la sintassi?
- il file che utilizzo è molto "pesante" e non mi permette il caricamento, quali altre alternative ho per snellire le future richieste di assistenza?

grazie ancora comunque. con i vostri suggerimenti sto avanzando velocemente!
Avatar utente

Enrico Galli
Messaggi: 890 | Topic creati
Iscritto il: dom 28 giu 2020, 19:03
Luogo: San Giovanni in Persiceto (BO)
Ringraziato: 325 volte
Contatta:

Somma su pivot non coerente

Messaggio da Enrico Galli »

Grazie per il feedback :)
Guarda gli annunci dello staff, in particolare:
- viewtopic.php?f=4&t=43
- viewtopic.php?f=4&t=13

Per la tua sintassi: sembra tu sia convinto che usare SUMX sia meglio in qualsiasi situazione, ma in certi casi tutto quello che fai è allungare il codice.
Esempio:

Codice: Seleziona tutto

=
ROUND(
	CALCULATE(
		SUMX(
			Input_BDGActual;
			Input_BDGActual[Importo]
		);
		Input_BDGActual[Tipologia]="Ricavi"
	);0
)
Può essere scritto così (puoi fare anche una sola misura, ma io preferisco farne due):

Codice: Seleziona tutto

Totale Importo=
SUM ( Input_BDGActual[Importo] )

Ricavi Budget =
ROUND(
	CALCULATE (
		[Totale Importo];
		Input_BDGActual[Tipologia]="Ricavi"
	);0
)
E altri casi simili. Gli IF nidificati sono sostituibili con uno SWITCH (e meglio leggibili), esempio:

Codice: Seleziona tutto

Avanzamento commessa =
SWITCH (
	TRUE ();
	[ComApertaChiusa]=0; 1;
	[RicaviBdgRev]=1; 0;
	[CostiBdgRev]=0; 0;
	DIVIDE(
		[CostiCons];
		[CostiBdgRev]
	)
)
Spero di averti dato qualche indicazione utile :wave:
Enrico Galli
Link utili: I nostri tutorial | Come inserire: Immagini - Codice - Risolto
Se il forum ti è stato utile, considera di supportarlo con una libera donazione
Rispondi