Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Formula complessa (almeno per me) smette di funzionare

Ultimo Aggiornamento: 22/04/2015 11:06
Post: 16
Registrato il: 18/11/2014
Città: MILANO
Età: 35
Utente Junior
office 10
OFFLINE
16/04/2015 13:31

Ragazzi ho bisogno di un grosso aiuto.

in excel sono una frana, ma non parto da zero, grazie all'aiuto tempo fa di un vostro collega:


partiamo da questo problema: (reale)


La Classifica Generale sarà stilata in base ai piazzamenti dei giocatori nei vari tornei, indipendentemente dalla fazione giocata. Nei singoli tornei saranno invece presenti le
classifiche distinte di Bene e Male.

Il sistema di punteggio per ogni singolo torneo (con due classifiche separate per Bene e Male ai fini della premiazione in Torneo di 1°-2°-3° delle due fazioni), sarà il seguente:
1° - 25 punti
2° - 20 punti
3° - 17 punti
4° - 15 punti
5° - 13 punti
E così via finché non si arriva ad assegnare 1 punto o sono esauriti i giocatori.
NB: tutti i giocatori partecipanti prendono sempre e comunque un punto.
Il punteggio della Classifica Generale Lega dell'Anello 2015 viene così determinato:
1) Somma dei tre migliori punteggi nei tornei.
2) I successivi ‘tornei scartati’ contribuiranno sommando 1/3 del punteggio approssimato per
eccesso se la prima cifra decimale è pari o superiore a 5 o per difetto se inferiore a 5.
3) Se durante l'anno si giocano sia la fazione del Bene che del Male ogni due tornei
giocati uno con il Bene l'altro con il Male si guadagna 1 punto bonus.

In caso di ulteriore parità verrà data precedenza a chi ha giocato più tornei nel corso della stagione (ricordo che la Lega dell’Anello è principalmente un modo per ritrovarsi e giocare, non è un modo per sapere chi è “il più bravo”).

Esempio: un giocatore partecipa a 5 tornei aggiudicandosi i seguenti punteggi:

1° Torneo - Bene 25
2° Torneo - Male 20
3° Torneo - Male 17
4° Torneo - Bene 20
5° Torneo - Bene 7

In classifica di Lega dell'Anello 2015 avrà 75 punti così determinati:
1) I tre migliori tornei (Bene 25, Male 20 e Bene 20) sono sommati = 65 punti
2) I piazzamenti restanti contribuiscono per 1/3:
Male 17-> 6pti; Bene 7 -> 2pti = 6 pti + 2 pti = 8 punti
3) Ha giocato il Bene e il Male durante l'anno. Ogni due tornei giocati con le due fazioni acquisto 1 punto e in questo caso sono 2 coppie di tornei = 2 punti

65 pti + 8 pti + 2 pti = 75 pti


_________________________________________________________________



a distanza di mesi, ci si ritrova con un errore...

prendiamo l'esempio del primo classificato: tale matteo carnelli:

la somma dei suoi punteggi sarebbe, secondo regole imposte dal problema: 25+25+25+ il risultato dei suoi altri punteggi, ciascuno diviso 3 quindi 20/3+ 20/3+ 15/3

il totale è quindi 75 + 7 + 7 +5.... aggiungendo anche i punti bonus della fila G (nel suo caso 3), il totale sarebbe 97, invece è 100 e non mi spiego perchè

non perdete tempo a spiegarmi cosa e dove correggere... apprezzerei se scaricando il file, sapreste metterci le mani e correggere.

ovviamente il problema persiste per tutti i classificati.

help!
Post: 1.686
Registrato il: 21/03/2008
Città: LOCATE VARESINO
Età: 76
Utente Veteran
2007 / 13
OFFLINE
16/04/2015 16:50

ciao sanvise

controlla la formula in fondo, e rimasto uno sporco
un piu' di troppo

ARROTONDA.DIFETTO(GRANDE(H2:R2;6)/3;1)) +G2;0)+G2

togliere
ARROTONDA.DIFETTO(GRANDE(H2:R2;6)/3;1));0)+G2

=SE.ERRORE(GRANDE(H2:R2;1);0)+SE.ERRORE(GRANDE(H2:R2;2);0)+SE.ERRORE(GRANDE(H2:R2;3);0)+SE.ERRORE(SE(RESTO(GRANDE(H2:R2;4);3)<>1;ARROTONDA.ECCESSO(GRANDE(H2:R2;4)/3;1);ARROTONDA.DIFETTO(GRANDE(H2:R2;4)/3;1));0)+SE.ERRORE(SE(RESTO(GRANDE(H2:R2;5);3)<>1;ARROTONDA.ECCESSO(GRANDE(H2:R2;5)/3;1);ARROTONDA.DIFETTO(GRANDE(H2:R2;5)/3;1));0)+SE.ERRORE(SE(RESTO(GRANDE(H2:R2;6);3)<>1;ARROTONDA.ECCESSO(GRANDE(H2:R2;6)/3;1);ARROTONDA.DIFETTO(GRANDE(H2:R2;6)/3;1));0)+G2

[SM=x423053] [SM=x423053]
Ciao da locate
excel 2007 / 13
Post: 16
Registrato il: 18/11/2014
Città: MILANO
Età: 35
Utente Junior
office 10
OFFLINE
17/04/2015 12:59

grz boss
Post: 17
Registrato il: 18/11/2014
Città: MILANO
Età: 35
Utente Junior
office 10
OFFLINE
21/04/2015 10:09

invece locate... la formula si ferma al torneo, di lodi... se volessi allungarla per altre 3-4 colonne? in previsione degli altri tornei?

Post: 1.690
Registrato il: 21/03/2008
Città: LOCATE VARESINO
Età: 76
Utente Veteran
2007 / 13
OFFLINE
21/04/2015 12:08

ciao

quarda che la formula controlla fino alla colonna R:R quindi i 4 tornei dopo Lodi vengono gia' valutati nel suo calcolo
Prova ad inserire velori e vedrai che il conto cambia,
tutti punteggi di 25 arrivando ad un massimo di 99 + bonus
quindi il primo in questo caso con bonus 3 ti da 102

Ciao da locate
excel 2007 / 13
Post: 18
Registrato il: 18/11/2014
Città: MILANO
Età: 35
Utente Junior
office 10
OFFLINE
21/04/2015 13:16

ciao locate, ho capito quello che dici... in effetti hai ragione

io però non ho detto da nessuna parte che il limite punteggio è 100
anzi, il limite punteggio non c'è.

riallego il file corretto, ma come tolgo sto limite max a 100 punti?
Post: 1.691
Registrato il: 21/03/2008
Città: LOCATE VARESINO
Età: 76
Utente Veteran
2007 / 13
OFFLINE
21/04/2015 15:29

ciao

sono rimasto che il punteggio veniva calcolato su sei valori, i primi tre a punteggio pieno , gli altri tre decurtati di 2/3, quindi il calcolo lo fa su questi sei scartando a priori i peggiori dopo il sesto punteggio migliore,
ora mi devi spiegare se bisogna prendere in considerazione anche gli altri punteggi senza nessun scarto??? lasciando invariata la formula del 3 pieni e il resto 1/3,
se e questo che intendi sarebbe utile affidarsi a VBA per questo lavoro,altrimenti verrebbe una funzione lunghissima composta da molti se()
PS questa e' realizzabile tranquillamente in 5 minuti
fai sapere

Ciao da locate
excel 2007 / 13
Post: 19
Registrato il: 18/11/2014
Città: MILANO
Età: 35
Utente Junior
office 10
OFFLINE
21/04/2015 15:36

allora, il punteggio del giocatore è ottenuto sommando i 3 punteggi più alti + gli altri punteggi, ciascuno diviso per 3 arrotondato per eccesso.

a questo si somma il punteggio bonus

quindi la formula almeno fino ad ora è perfetta, non c'è però il limite dei 6 tornei insomma

non ci deve essere limite al punteggio finale, non è che puoi arrivare massimo a 100 [SM=g27828]
Post: 20
Registrato il: 18/11/2014
Città: MILANO
Età: 35
Utente Junior
office 10
OFFLINE
21/04/2015 15:38

scusa il doppio post

la formula non si calcola sul massimo di 6 punteggi, bensì su tutti quanti
Post: 1.692
Registrato il: 21/03/2008
Città: LOCATE VARESINO
Età: 76
Utente Veteran
2007 / 13
OFFLINE
21/04/2015 15:51

ciao

quindi i primi 3 punti migliori a punteggio pieno, il resto 1/3
questo su undici tornei ora possibili nel tuo programma
funzione da mettere in B2 e dopo trascinare

=SE.ERRORE(GRANDE(H2:R2;1);0)+SE.ERRORE(GRANDE(H2:R2;2);0)+SE.ERRORE(GRANDE(H2:R2;3);0)+SE.ERRORE(SE(RESTO(GRANDE(H2:R2;4);3)<>1;ARROTONDA.ECCESSO(GRANDE(H2:R2;4)/3;1);ARROTONDA.DIFETTO(GRANDE(H2:R2;4)/3;1));0)+SE.ERRORE(SE(RESTO(GRANDE(H2:R2;5);3)<>1;ARROTONDA.ECCESSO(GRANDE(H2:R2;5)/3;1);ARROTONDA.DIFETTO(GRANDE(H2:R2;5)/3;1));0)+SE.ERRORE(SE(RESTO(GRANDE(H2:R2;6);3)<>1;ARROTONDA.ECCESSO(GRANDE(H2:R2;6)/3;1);ARROTONDA.DIFETTO(GRANDE(H2:R2;6)/3;1));0)+SE.ERRORE(SE(RESTO(GRANDE(H2:R2;7);3)<>1;ARROTONDA.ECCESSO(GRANDE(H2:R2;7)/3;1);ARROTONDA.DIFETTO(GRANDE(H2:R2;7)/3;1));0)+SE.ERRORE(SE(RESTO(GRANDE(H2:R2;8);3)<>1;ARROTONDA.ECCESSO(GRANDE(H2:R2;8)/3;1);ARROTONDA.DIFETTO(GRANDE(H2:R2;8)/3;1));0)+SE.ERRORE(SE(RESTO(GRANDE(H2:R2;9);3)<>1;ARROTONDA.ECCESSO(GRANDE(H2:R2;9)/3;1);ARROTONDA.DIFETTO(GRANDE(H2:R2;9)/3;1));0)+SE.ERRORE(SE(RESTO(GRANDE(H2:R2;10);3)<>1;ARROTONDA.ECCESSO(GRANDE(H2:R2;10)/3;1);ARROTONDA.DIFETTO(GRANDE(H2:R2;10)/3;1));0) +SE.ERRORE(SE(RESTO(GRANDE(H2:R2;11);3)<>1;ARROTONDA.ECCESSO(GRANDE(H2:R2;11)/3;1);ARROTONDA.DIFETTO(GRANDE(H2:R2;11)/3;1));0)+G2

adesso abbiamo se il primo fa sempre 25 punti un totale di 139 + bonus
tenendo conto di 1/3 dal 4 punteggio all'11

Ciao da locate
excel 2007 / 13
Post: 21
Registrato il: 18/11/2014
Città: MILANO
Età: 35
Utente Junior
office 10
OFFLINE
21/04/2015 15:59

non va...
Post: 1.693
Registrato il: 21/03/2008
Città: LOCATE VARESINO
Età: 76
Utente Veteran
2007 / 13
OFFLINE
21/04/2015 16:36

ciao

allegato file con inserita la formula, funzionante




Ciao da locate
excel 2007 / 13
Post: 22
Registrato il: 18/11/2014
Città: MILANO
Età: 35
Utente Junior
office 10
OFFLINE
21/04/2015 16:41

grazie come sempre

vai a capire dove sbagliavo a fare copia-incolla
Post: 2.973
Registrato il: 04/07/2012
Città: BARCELLONA POZZO DI GOTTO
Età: 61
Utente Veteran
2010
OFFLINE
21/04/2015 19:00

Ciao
pur non capendo bene il sistema di arrotondamento usato dal quarto punteggio in poi, l'ottima formula di Locate potrebbe sintetizzarsi con:
=MATR.SOMMA.PRODOTTO(SE.ERRORE(GRANDE(H2:R2;{1.2.3});0))+MATR.SOMMA.PRODOTTO(SE.ERRORE(SE(RESTO(GRANDE(H2:R2;{4.5.6.7.8.9.10.11});3)<>1;ARROTONDA.ECCESSO(GRANDE(H2:R2;{4.5.6.7.8.9.10.11})/3;1);ARROTONDA.DIFETTO(GRANDE(H2:R2;{4.5.6.7.8.9.10.11})/3;1));0))+G2
da confermare come matriciale


per me potrebbe anche andare un arrotondamento normale, diventando:
=MATR.SOMMA.PRODOTTO(SE.ERRORE(GRANDE(H2:R2;{1.2.3});0))+MATR.SOMMA.PRODOTTO(SE.ERRORE(ARROTONDA(GRANDE(H2:R2;{4.5.6.7.8.9.10.11})/3;0);0))+G2
questa si può confermare normalmente
[Modificato da ninai 21/04/2015 19:03]



--------------------------------------------------
"So che spiegare il proprio problema, in modo comprensibile, richiede un certo impegno ed è un lavoro "palloso", ma qualcuno lo deve pur fare ....., indovina chi?" (Cit. "Scossa")
--------------------------------------------------
excel 2010 ,
Win 8
Post: 1.695
Registrato il: 21/03/2008
Città: LOCATE VARESINO
Età: 76
Utente Veteran
2007 / 13
OFFLINE
22/04/2015 10:38

ciao Ninai

avevo pensato anch'io ad usare Matr.Somma.Prodotto() ma non mi veniva la parte del { } quindi sono passato a delle semplici operazioni
mentre aveo gia' realizzato la funzione in VBA con solo arrotonda() pero' non mi ricordo piu' perche' non ho utilizzato questa nelle funzioni di excel

comunque inserendo la tua funzioni cosi come' nella mia versione di excel 2007 mi da ancora errore nelle formule segnalandomi subito errore in questa posizione {1.2.3} penso invece che la 2010 non abbia questo problema

quindi la mia funzione in VBA che avevo scritto e non postata e' questa


Option Explicit
Public Function PuntiTotali(Tornei As Range, Bonus As Range) As Long
'' Utilizzo PuntiTotali(Tuo range H-R;Bonus Range G)
Dim i As Long, Punti As Long
On Error Resume Next ''riferimento errore diviso 0
Punti = 0
For i = 1 To Tornei.Count ''6
If i <= 3 Then
Punti = Punti + Application.Large(Tornei, i)
Else
Punti = Punti + Application.Round(Application.Large(Tornei, i) / 3, 1)
End If
Next i
PuntiTotali = Punti + Bonus
End Function



Provero' a capire perche' sul mio 2007 lq tua funzione mi da errore



Ciao da locate
excel 2007 / 13
Post: 2.974
Registrato il: 04/07/2012
Città: BARCELLONA POZZO DI GOTTO
Età: 61
Utente Veteran
2010
OFFLINE
22/04/2015 11:06

Re:
locatevaresino, 22/04/2015 10:38:


Provero' a capire perche' sul mio 2007 lq tua funzione mi da errore



nelle costanti di matrice devi cambiare il "." con "\" oppure con ";" (non ricordo).
Per capire quali sono i separatori del 2007, prova a scrivere in una cella =rif.riga(A1:a4), seleziona questa formula nella barra della formula e premi F9 e vedi come separa, nel 2010 è {1.2.3.4}, nel 2007 sarà diverso ({1\2\3\4} oppure {1;2;3;4})




--------------------------------------------------
"So che spiegare il proprio problema, in modo comprensibile, richiede un certo impegno ed è un lavoro "palloso", ma qualcuno lo deve pur fare ....., indovina chi?" (Cit. "Scossa")
--------------------------------------------------
excel 2010 ,
Win 8
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 03:35. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com