Condividi:        

[Excel] Fantacalcio

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[Excel] Fantacalcio

Postdi wittelsbach » 25/01/06 11:18

Ho un problema:

nella classifica del fantacalcio, vorrei colorare le caselle dei primi 4 posti. Ma ogni volta che faccio "dati - ordina" per aggiornare la classifica, anche le caselle colorate si spostano. Come faccio per "ordinare" le squadre facendo però rimanere bloccate ai primi 4 posti le caselle colorate.
In pratica le caselle colorate dovrebbero fungere da alloggi temporanei ai nomi delle squadre che ogni giornata possono alternarsi ai primi 4 posti.

Sempre nella classifica del fantacalcio mi piacerebbe creare una colonna nella quale poter inserire le posizioni guadagnate alla fine di ogni giornata da ogni squadra. Cioè, se una squadra era terza in classifica e la giornata successiva seconda, volevo che nella colonna creata apparisse un "+1". E' possibile con qualche funzione effettuare questo tipo di calcolo?

Grazie.l
wittelsbach
Utente Senior
 
Post: 249
Iscritto il: 17/09/05 08:55

Sponsor
 

Postdi Frengo78 » 25/01/06 11:31

cominciamo dalle cose semplici. Se inserisci una colonna posizione settimana precedente calcolare il guadagno di posizioni in classifica e' semplicemente una differenza.

(ho editato il tuo messaggio e cambiato il titolo riportando la richiesta fatta nell'altro topic che ti ho chiuso per semplicita nel seguire il tuo caso)
Knowledge is a weapon
Frengo78
Utente Senior
 
Post: 8985
Iscritto il: 16/07/02 08:41
Località: Torino

Postdi wittelsbach » 25/01/06 11:42

esatto, ma era solo per farti capire bene. Diciamo invece che voglia far comparire una casella di colore verde se ci sono state posizioni guadagnate e una rossa se le posizione sono state perse. Nelle funzioni if io non ho trovato nulla, è possibile fare qualcosa del genere secondo te?
wittelsbach
Utente Senior
 
Post: 249
Iscritto il: 17/09/05 08:55

Postdi Frengo78 » 25/01/06 17:32

Non ho idea di come condizionare la formattazione di una cella. Se ti bastava qualcosa di testuale una formula di questo genere

=SE(B2>0;"IN SALITA";"IN DISCESA")

era sufficiente.
Knowledge is a weapon
Frengo78
Utente Senior
 
Post: 8985
Iscritto il: 16/07/02 08:41
Località: Torino

Postdi Garde » 25/01/06 17:41

Se ho capito bene la tua ultima richiesta, dvi usare la "formattazione condizionale" del menu formato.
Puoi impostare, ad esempio, che se la cella che riporta che riporta le posizioni guadagnate o perse e maggiore di 0 la cella diventa verede mentre al contrario diventa rossa.
Garde
Utente Senior
 
Post: 220
Iscritto il: 21/01/04 10:35

Postdi Frengo78 » 25/01/06 17:47

giusto!
Knowledge is a weapon
Frengo78
Utente Senior
 
Post: 8985
Iscritto il: 16/07/02 08:41
Località: Torino

Postdi wittelsbach » 25/01/06 19:53

Si, avevo già provato con la formattazione condizionale ma non riuscivo a farla funzionare bene. Comunque oggi o domani riprovo.
Grazie mille a tutti e due.
wittelsbach
Utente Senior
 
Post: 249
Iscritto il: 17/09/05 08:55

Postdi Garde » 26/01/06 11:12

Sicuramente il sistema è questo.
Se hai gia provato ma non funziona forse l'hai impostata male.
Se ha bisogno scrivi. La facciamo passo passo.
Ciao
Garde
Utente Senior
 
Post: 220
Iscritto il: 21/01/04 10:35

Postdi wittelsbach » 26/01/06 16:40

E’ impossibile fare quello che voglio. Ora ti spiego: prendiamo solo una classifica di 4 squadre. clicca per vedere l'esempio
http://mio.discoremoto.virgilio.it/dwyw/prova.xls
Io vorrei che dopo il calcolo delle giornate che vanno a comporre il totale (già fatto), automaticamente se ad esempio la Juve nella giornata successiva dovesse guadagnare due posizioni, comparisse nel rettangolino il colore verdognolo con il due; ovviamente se l’Inter perdesse una posizione dovrebbe comparire il rettangolino viola con -1.
Oppure se il numero delle posizioni perse dovesse essere impossibile sarebbe interessante poter scrivere all’interno del rettangolo il numero di giornate da quando si ripete una certa costante. Esempio: la Juve perde posizioni da 3 giornate consecutive, quindi nel rettangolino appare un -3 (anche se poi magari ha perso molte più posizioni rispetto alle giornate).
wittelsbach
Utente Senior
 
Post: 249
Iscritto il: 17/09/05 08:55

Postdi archimede » 26/01/06 17:12

Quella di mettere un esempio pratico on-line è un'ottima idea.

Ora non ti resta che spiegare, nel modo più semplice possibile, cosa vuoi fare, perché io non l'ho ancora capito. :-?

Alessandro
archimede
Moderatore
 
Post: 2851
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi Garde » 26/01/06 17:18

Meno male. Pensavo di essere solo io a non aver capito :mmmh:
Comunque, l'esempio l'ho scaricato e secondo me bisogna mettere mano al VBA.
Garde
Utente Senior
 
Post: 220
Iscritto il: 21/01/04 10:35

Postdi wittelsbach » 26/01/06 18:35

Vedo che il problema comincia a sforare nella programmazione. Era quello che temevo, ma visto che forse mi sono spiegato male, provo a ripetere cosa vorrei fare.
Ho la classifica che si aggiorna tramite un semplice dati - ordina, il quale somma i punteggi di giornata a quello totale, scandendo così la classifica generale.
Ora il punto è questo: io vorrei che, dopo aver fatto questo aggiornamento, excel mi calcolasse le posizioni perse e/o guadagnate da ciascuna squadra, così da mettere in una colonna apposita una cella colorata con dentro il numero di posizioni guadagnate e/o perse.
Esempio: Juve è prima; alla seconda giornata è seconda, quindi nella cella (rossa magari come segno negativo) accanto alla Juve dovrebbe apparire un "-1". E fin qui andrebbe bene, solo che dalla seconda giornata in poi, il calcolo che gli faccio fare non è più sufficiente perchè riparte a calcolare dalla posizione della prima giornata (quindi la prima posizione). Così se per caso la Juventus dovesse tornare di nuovo in testa alla classifica, excel non calcolerebbe un "+1", bensì un nulla di fatto.
Sintetizzando mi serve una formula che mi indichi per ogni squadra la loro posizione non rispetto alle celle del foglio bensì rispetto a tutte le altre squadre; solo così funzionerebbe. Ma non so come fare.
wittelsbach
Utente Senior
 
Post: 249
Iscritto il: 17/09/05 08:55

Postdi wittelsbach » 27/01/06 17:53

Scusate, so che il problema sopra è già parecchio incasinato ma sapreste dirmi un'altra cosa apparentemente più semplice? Come faccio (sempre nella stessa classifica) a tenere colorate le celle delle prime 4 posizioni, senza che quando aggiorno la classifica, quest'ultime cambiano posizione in base alle squadre che ospitavano quando le ho colorate la prima volta?
wittelsbach
Utente Senior
 
Post: 249
Iscritto il: 17/09/05 08:55

Postdi archimede » 28/01/06 09:14

wittelsbach ha scritto:Ho la classifica che si aggiorna tramite un semplice dati - ordina, il quale somma i punteggi di giornata a quello totale, scandendo così la classifica generale.
Non mi pare che Dati --> Ordina faccia anche delle somme...
wittelsbach ha scritto:Ora il punto è questo: io vorrei che, dopo aver fatto questo aggiornamento, excel mi calcolasse le posizioni perse e/o guadagnate da ciascuna squadra, così da mettere in una colonna apposita una cella colorata con dentro il numero di posizioni guadagnate e/o perse.
Una volta che hai fatto l'ordinamento Excel non può "ricordare" i dati esistenti nelle celle PRIMA dell'operazione: per fare quello che vuoi credo che tu debba avere un foglio per ogni giornata.

HTH.

Alessandro
archimede
Moderatore
 
Post: 2851
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi cassioli » 28/01/06 10:19

wittelsbach ha scritto:Scusate, so che il problema sopra è già parecchio incasinato ma sapreste dirmi un'altra cosa apparentemente più semplice? Come faccio (sempre nella stessa classifica) a tenere colorate le celle delle prime 4 posizioni, senza che quando aggiorno la classifica, quest'ultime cambiano posizione in base alle squadre che ospitavano quando le ho colorate la prima volta?

Con la FORMATTAZIONE CONDIZIONALE: colorare le celle solo quando il valore del punteggio corrispondente è maggiore o uguale a quello della quarta riga (dovrebbe funzionare...)
cassioli
Utente Senior
 
Post: 1014
Iscritto il: 05/03/04 11:02

Postdi cassioli » 28/01/06 10:21

anzi no, non funziona perche' la condizione è sulla STESSA cella... :cry:
cassioli
Utente Senior
 
Post: 1014
Iscritto il: 05/03/04 11:02

Postdi wittelsbach » 28/01/06 10:27

Rispondendo ad Archimede devo dire che hai ragione, ma mi ero spiegato male; la somma è ovvio è fatta dalla funzione, ordina mi elenca in decrescendo i punteggi totali.
Ma quindi non esiste davvero alcun modo? Devo per forza usare Visual Basic?
wittelsbach
Utente Senior
 
Post: 249
Iscritto il: 17/09/05 08:55

Postdi cassioli » 28/01/06 11:08

wittelsbach ha scritto:Rispondendo ad Archimede devo dire che hai ragione, ma mi ero spiegato male; la somma è ovvio è fatta dalla funzione, ordina mi elenca in decrescendo i punteggi totali.
Ma quindi non esiste davvero alcun modo? Devo per forza usare Visual Basic?

Forse si puo' fare pseudo-automaticamente, con una macro:
- scrivi la classifica attuale in una tabella vuota: in colonna A i nomi, in colonna B i punteggi
- menu->registra macro
- seleziona nomi e punteggi
- copia in colonne D-E
- ordina in base a colonna E in senso decrescente
- colora prime 4 caselle della nuova classifica
- fine registrazione

D'ora in poi dovrebbe essere sufficiente avviare la macro per avere la classifica in ordine. Poi immagino basti aggiungere una formuletta a destra di ogni punteggio NUOVO che lo confronta col vecchio e mostra "+1" o "-1" o quello che ti pare...
cassioli
Utente Senior
 
Post: 1014
Iscritto il: 05/03/04 11:02

Postdi cassioli » 28/01/06 11:14

Questa è la macro che mi è venuta fuori con OpenOffice...
Codice: Seleziona tutto

sub classifica
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$2:$B$8"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$F$2"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())

rem ----------------------------------------------------------------------
dim args5(6) as new com.sun.star.beans.PropertyValue
args5(0).Name = "ByRows"
args5(0).Value = true
args5(1).Name = "HasHeader"
args5(1).Value = false
args5(2).Name = "CaseSensitive"
args5(2).Value = false
args5(3).Name = "IncludeAttribs"
args5(3).Value = true
args5(4).Name = "UserDefIndex"
args5(4).Value = 0
args5(5).Name = "Col1"
args5(5).Value = 7
args5(6).Name = "Ascending1"
args5(6).Value = false

dispatcher.executeDispatch(document, ".uno:DataSort", "", 0, args5())

rem ----------------------------------------------------------------------
dim args6(0) as new com.sun.star.beans.PropertyValue
args6(0).Name = "ToPoint"
args6(0).Value = "$F$2"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args6())

rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "ToPoint"
args7(0).Value = "$F$2:$G$5"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args7())

rem ----------------------------------------------------------------------
dim args8(0) as new com.sun.star.beans.PropertyValue
args8(0).Name = "BackgroundColor"
args8(0).Value = 16776960

dispatcher.executeDispatch(document, ".uno:BackgroundColor", "", 0, args8())

rem ----------------------------------------------------------------------
dim args9(0) as new com.sun.star.beans.PropertyValue
args9(0).Name = "ToPoint"
args9(0).Value = "$F$6:$G$18"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args9())

rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:BackgroundColor", "", 0, Array())


end sub

Non scordarti di:
- DEcolorare tutte le righe tranne le prime 4
- selezionare alla fine una casella qualunque, senno' quelle appena colorate restano evidenziate
cassioli
Utente Senior
 
Post: 1014
Iscritto il: 05/03/04 11:02

Postdi archimede » 28/01/06 11:17

wittelsbach ha scritto:Ma quindi non esiste davvero alcun modo? Devo per forza usare Visual Basic?
Se non conservi da qualche parte il punteggio della giornata precedente non credo sia possibile nemmeno con VB.

Alessandro
archimede
Moderatore
 
Post: 2851
Iscritto il: 07/11/02 12:41
Località: Genova

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "[Excel] Fantacalcio":


Chi c’è in linea

Visitano il forum: Nessuno e 87 ospiti