Condividi:        

confrontare due dati ed estrapolare il risultato

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

confrontare due dati ed estrapolare il risultato

Postdi ahidai » 22/04/16 14:45

Un saluto a tutti, avrei bisogno di un aiuto. Ecco mi spiego:
Ho un foglio con questi dati (campionato di calcio) quindi 38 giornate come l'esempio sotto riportate:

ANDATA

Colonna C Colonna B Colonna E
JUVENTUS MILAN 2-0
INTER VERONA 1-0
NAPOLI FROSINONE 3-1
TORINO CARPI 3-1
PALERMO UDINESE 0-1

RITORNO

MILAN JUVENTUS 2-0
VERONA INTER 1-0
FROSINONE NAPOLI 3-1
CARPI TORINO 3-1
UDINESE PALERMO 0-1


Vorrei riportare su un'altro foglio questi dati:

INCONTRO RISULTATO CASA RISULTATO FUORI
Col. B Col. E Col. H - Col. I Col. J - Col. K
MILAN JUVENTUS 2 0 0 2
MILAN INTER
MILAN NAPOLI
MILAN TORINO
MILAN VERONA

Praticamente riportare con una macro o delle formule i risultati della società MILAN (Colonna B) con le squadre affrontate nella (Colonna E) sia i risultati ottenuti quando gioca in casa sia quando gioca fuori casa.

Spero di essere stato chiaro e con l'occasione auguro buon pomeriggio a tutti.
ahidai
Utente Senior
 
Post: 212
Iscritto il: 08/12/10 17:33

Sponsor
 

Re: confrontare due dati ed estrapolare il risultato

Postdi Anthony47 » 23/04/16 01:11

Quale e' l'obiettivo di questa operazione? Solo "fare ammuina" o ci sono finalita' piu' concrete?
In ogni caso un file con contenuto realistico aiutera' a cercare una soluzione...

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19183
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: confrontare due dati ed estrapolare il risultato

Postdi ahidai » 24/04/16 09:27

Grazie Anthony per la risposta, l'obiettivo è quello di creare una classifica avulsa in tempo "reale".

Comunque allego il file con la speranza che ci sia una soluzione.

http://www.filedropper.com/classificaavulsa

Saluti.
ahidai
Utente Senior
 
Post: 212
Iscritto il: 08/12/10 17:33

Re: confrontare due dati ed estrapolare il risultato

Postdi ahidai » 27/04/16 20:47

Mi sa che ci devo rinunciare..... sto provando le varie formule che conosco (cerca.vert, cerca.oriz, indice, confronta) niente ci riesco a trovare una soluzione :( :cry:
ahidai
Utente Senior
 
Post: 212
Iscritto il: 08/12/10 17:33

Re: confrontare due dati ed estrapolare il risultato

Postdi Anthony47 » 28/04/16 23:08

Se spieghi le regole per creare la classifica avulsa forse calcoliamo direttamente il risultato, l'abbiamo gia' fatto in altri contesti.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19183
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: confrontare due dati ed estrapolare il risultato

Postdi ahidai » 29/04/16 15:46

Anthony47 ha scritto:Se spieghi le regole per creare la classifica avulsa forse calcoliamo direttamente il risultato, l'abbiamo gia' fatto in altri contesti.

Ciao


Le varie classifiche avulse in effetti già le avevo fatte, in pratica mi serviva che venivano inseriti in modo automatico i risultati in casa e fuori delle squadre che sono inserite nello specchio "confronti diretti" del foglio Avulse.
Ho provato con diverse formule come detto nel messaggio precedente, ma purtroppo non ci sono riuscito.

La regola della classifica avulsa è:
in caso di parità di punti fra due o più squadre, si procede alla compilazione di una graduatoria (c.d. “classifica avulsa”) fra le squadre interessate, tenendo conto, nell’ordine:
a) dei punti conseguiti negli incontri diretti fra tutte le squadre della c.d. “classifica avulsa;
b) della differenza tra reti segnate e subite nei medesimi incontri;
c) della differenza tra reti segnate e subite nell’intero Campionato;
d) del maggior numero di reti segnate nell’intero Campionato;
e) del sorteggio.

Cmq grazie per la risposta e buona giornata.
ahidai
Utente Senior
 
Post: 212
Iscritto il: 08/12/10 17:33

Re: confrontare due dati ed estrapolare il risultato

Postdi Anthony47 » 01/05/16 20:12

Partendo dal file pubblicato ho sviluppato una Sub Avulsa, che va richiamata dopo l'aggiornamento della Classifica e dei risultati.
Il suo codice:
Codice: Seleziona tutto
Sub Avulsa()
Dim I As Long, LastC As Long, cTeam As String, cTPoints As Long, DR As String, sTeam As String
Dim GF As String, DRW As Double, RndW As Double, GFW As Double, J As Long, K As Long, Lb0 As Long, KK As Long
Dim Class As Worksheet, Calend As Worksheet, CArr, dgD As Long, PcT As Long, PsT As Long
'
'KK = True
'aaa = 1 * KK
Set Class = Sheets("CLASSIFICA")
Set Calend = Sheets("CALENDARIO")
DR = "K"
GF = "I"
DRW = 10000000
GFW = DRW * 1000
RndW = DRW * 1000
'
LastC = Class.Cells(Rows.Count, "C").End(xlUp).Row
lastb = Calend.Cells(Rows.Count, "B").End(xlUp).Row
CArr = Calend.Range("A1").Resize(lastb, 6).Value
Lb0 = LBound(CArr, 1)
Range("M1").Resize(lastb, 1).ClearContents

For I = 4 To LastC - 0
DoEvents
    cTeam = Cells(I, 3)
    Cells(I, "M").Value = Cells(I, "M").Value + Rnd() / RndW + Cells(I, GF) / GFW + Cells(I, DR) / DRW
    Cells(I, 4).Value = Round(Cells(I, 4).Value, 0) + Cells(I, "M").Value     '<><> Vedi testo
    cTPoints = Round(Cells(I, 4).Value, 0)
    If I < LastC Then
        For J = I + 1 To LastC
            If cTeam <> Cells(J, 3) Then
                If Round(Cells(J, 4).Value, 0) = cTPoints Then
                    sTeam = Cells(J, 3)
                    dgD = 0: PcT = 0: PsT = 0: KK = 0
                        For K = Lb0 To UBound(CArr, 1)
                        DoEvents
                            If CArr(K, Lb0 + 2) = cTeam And CArr(K, Lb0 + 3) = sTeam Then KK = 1
                            If CArr(K, Lb0 + 2) = sTeam And CArr(K, Lb0 + 3) = cTeam Then KK = 2
                            If KK > 0 Then
                            Debug.Print K, CArr(K, Lb0 + 2), CArr(K, Lb0 + 3), CArr(K, Lb0 + 4)
                                Res = Split(Trim(CArr(K, Lb0 + 4)), "-", , vbTextCompare)
                                If UBound(Res) = 1 Then
                                    If Res(0) = Res(1) Then
                                        PcT = PcT + 1: PsT = PsT + 1
                                    ElseIf Res(0) > Res(1) Then
                                        If KK = 1 Then PcT = PcT + 3 Else PsT = PsT + 3
                                        If KK = 1 Then dgD = dgD + CLng(Res(0)) Else dgD = dgD - CLng(Res(0))
                                    Else
                                        If KK = 2 Then PcT = PcT + 3 Else PsT = PsT + 3
                                        If KK = 2 Then dgD = dgD + CLng(Res(0)) - CLng(Res(1)) Else dgD = dgD - CLng(Res(0)) + CLng(Res(1))
                                    End If
                                End If
                            KK = 0
                            End If
                        Next K
                        Cells(I, "M").Value = Cells(I, "M").Value + PcT / 100 + dgD / 10000
                        Cells(I, 4).Value = Cells(I, 4).Value + PcT / 100 + dgD / 10000     '<><> Vedi testo
                        Cells(J, "M").Value = Cells(J, "M").Value + PsT / 100 - dgD / 10000
                        Cells(J, 4).Value = Cells(J, 4).Value + PsT / 100 - dgD / 10000     '<><> Vedi testo
                End If
            End If
        Next J
    End If
Next I
'MsgBox ("Completato...")
End Sub

Per automatizzare il tutto ho modificato quindi il codice associato al pulsante Aggiorna Classifica come segue:
Codice: Seleziona tutto
Sub Classifica()
'
' Macro1 Macro
'
Sheets("CLASSIFICA").Select
DoEvents
Sheets("CALENDARIO").Range("C3").QueryTable.BackgroundQuery = False
Call Importa
DoEvents
Sheets("CLASSIFICA").Range("C3").QueryTable.BackgroundQuery = False
ActiveWorkbook.Connections("Connessione1").Refresh
DoEvents
Call Avulsa
Msgbox("Completato...")
End Sub

Questa in sequanza: aggiorna i risultati, aggiorna la classifica, aggiunge i punti della classifica avulsa.
La colonna D (Punti) sara' modificata come segue:
Immagine
upload immagini
In questo modo, ordinando la tabella in ordine di Punti (colonna D) le squadre saranno posizionate secondo i punto complessivi, compreso quelli ottenuti dalla procedura "avulsa".

La parte Intera arrotondata sono i punti iniziali
-I primi 2 decimali sono i punti negli scontri diretti (*)
-I secondi 2 decimali sono la differenza reti negli scontri diretti (*)
-I successivi 3 decimali sono la quote differenza reti complessiva (**)
-I successivi 3 decimali sono la quota reti fatte complessive (**)
-Gli ultimi 3 decimali sono un valore random
Nota*: questo contributo, nella figura, e' presente solo per le squadre Grottaferrata e Casilina, che avendo pari punteggio di partenza devono usare i punti avulsi per la classifica finale.
Nota**: questo contributo si nota soprattutto nel caso della Lupa e Garbatella; le altre squadre, avendo una differenza reti negativa, il loro funzionamento e' meno evidente.
Per non vedere i decimali prodotti dal calcolo della classifica avulsa, la colonna D (Punti) sara' visualizzata senza decimali.

I soli "punti avulsi" sono calcolati anche in colonna M.
Se non si vuole che anche la colonna D contenga questi punti allora, nel codice della Sub Avulsa vanno eliminate le istruzioni marcate <><>

Il foglio Avulse, con tutto il suo corredo di macro, non so e' ancora da mantenere.

Il file aggiornato e' disponibile qui:
https://www.dropbox.com/s/7iq6wmf8t5het ... 5.xls?dl=0

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19183
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: confrontare due dati ed estrapolare il risultato

Postdi ahidai » 02/05/16 20:01

Grande Anthony, è proprio quello che volevo.
Grazie ancora e buona serata.
ahidai
Utente Senior
 
Post: 212
Iscritto il: 08/12/10 17:33


Torna a Applicazioni Office Windows


Topic correlati a "confrontare due dati ed estrapolare il risultato":


Chi c’è in linea

Visitano il forum: Nessuno e 57 ospiti