Problema contatore VBA



  • Problema contatore VBA
    di franci64 data: 12/05/2014 16:08:59

    Buongiorno, sono ad allegarVi un file con codice fornito da Lucas del forum dove però una volta inseriti tutti i miei dati mi dovrebbe riportare gli ultimi 25 risultati in casa e gli ultimi 25 risultati fuori casa di ogni squadra, però come potete vedere su alcune squadre i risultati sono 25 e su altre sono 26, come mai??? cosa devo modificare per fargli prendere solamente gli ultimi 25 a tutte le squadre???

    Ringrazio anticipatamente, saluti Enrico



  • di Lucas87 data: 12/05/2014 18:32:26

    Ciao
    Nei controlli IF sostituisci 26 con 25...colpa mia.
    Nella tabella con le partite togli quelle senza il risultato.
    Succedeva che venivano contate 26 partite invece di 25 e trovandone senza risultato non mi ero accorto dell'errore.



  • di franci64 data: 12/05/2014 22:12:19

    ok, mettendo 25 partite e togliendo le partite senza risultato i conti tornano;
    Però chiedevo due cose:

    1) se inserisco tutto il calendario delle partite della prossima stagione per esempio
    c'è un modo per non farle calcolare se non hanno un risultato?? cosi posso intanto
    inserire le partite e successivamente ogni week end inserisco solo il risultato...

    2) ho allegato un'altro file modificato perchè mi occorrerebbe, come ho inserito nel file,
    di trovare le "QUOTE MIE", mi spiego meglio.

    per ogni partita di ogni week end si devono effettuare i seguenti calcoli: dove c'è scritto 1
    =1/((PARTITE VINTE DELLA SQUADRA DI CASA + PARTITE PERSE DELLA SQUADRA FUORI CASA)/50) che è il numero di partite

    dove c'è scritto X
    =1/((PARTITE PAREGGIATE SQUADRA DI CASA + PARTITE PAREGGIATE SQUADRA FUORI CASA)/50) che è il numero di partite

    dove c'è scritto 2
    =1/((PARTITE VINTE DELLA SQUADRA FUORI CASA + PARTITE PERSE DELLA SQUADRA IN CASA)/50) che è il numero di partite

    Si riesce a fare questo in automatico week end dopo week end nelle colonne che ho creato io??

    Resto in attesa, ciao e grazie mille Lucas ;)



  • di Textomb data: 14/05/2014 09:30:33

    ciao
    nella tabella dei risultati ho visto che sommando i valori delle ultime 25 partite in casa e fuori casa, mi aspettavo di trovare sempre 25 + 25. Invece a volte il risultato è 24.
    Per es. Juventus ha conseguito nelle ultime 25 partite in casa: 23 V, 1 N, 0 P. Ma il totale fa 24.
    Ma è giusto così? E così anche altre squadre.
    Inoltre ho visto che nel calendario le formule sono tutte scritte in questo modo: =SE(D7>E7;"1";"0"). ;Ma così i valori che inserisce nelle celle sono testi. C'è un motivo per cui non puoi scrivere i numeri?
    Infine non ho capito, e forse per questo motivo non hai avuto risposte, come si devono calcolare le QUOTE MIE.
    Dovresti allegare l'esempio con almeno alcuni valori numerici già sviluppati e coerenti con i risultati in modo che si possa trovare il modo corretto per farlo in modo automatico.



  • di Lucas87 data: 14/05/2014 09:55:54

    Ciao
    Per poter inserire comunque le partite non ancora giocate, modifica la variabile n mettendo il codice sotto.

    Per il resto non ho capito...
    Le partite vinte/perse/pareggiate si riferiscono al campionato in corso?
    Es.
    10 maggio 2014 VERONA-UDINESE
    1/((PARTITE VINTE DAL VERONA FINO A QUELLA GIORNATA NEL CAMPIONATO 2013/14 + PARTITE PERSE DALL'UDINESE FINO A QUELLA GIORNATA NEL CAMPIONATO 2013/14)/50)
     
    n = wscal.Range("d" & Rows.Count).End(xlUp).Row



  • di Textomb data: 14/05/2014 12:03:02

    non penso che sia così l'interpretazione della formula che intende franci64.
    ma bensì
    Es.
    10 maggio 2014 VERONA-UDINESE
    1/((N. di PARTITE VINTE DAL VERONA FINO A QUELLA GIORNATA considerando i venticinque incontri in casa precedenti + N. di PARTITE PERSE DALL'UDINESE FINO A QUELLA GIORNATA considerando i venticinque incontri fuori casa precedenti)/50)



  • di franci64 data: 14/05/2014 14:30:55

    x Textomb: non c'è un motivo per cui non devo scrivere i numeri ma con la modifica che mi ha inviato Lucas funziona tutto alla perfezione prendendo in esame le ultime 25 partite in casa e fuori casa per ogni squadra.

    x Tutti: allego un'altro file "FILE DI PROVA" che adesso stò utilizzando per fare i calcoli manualmente dal quale spero potrete capire meglio quello che mi serve; prendiamo ad esempio la partita di domenica prossima FIORENTINA - TORINO

    FIORENTINA le ultime 25 partite che ha giocato in casa in campionato a partire dalla più attuale in ordine di data fino alla 25° più vecchie (e quindi si andrà a prendere anche alcune partite della scorsa stagione) ed avremo il seguente risultato VINTE 14 / PAREGGIATE 4 / PERSE 7

    TORINO le ultime 25 partite che ha giocato fuori casa in campionato a partire dalla più attuale in ordine di data fino alla 25° più vecchie (e quindi si andrà a prendere anche alcune partite della scorsa stagione) ed avremo il seguente risultato VINTE 6 / PAREGGIATE 7 / PERSE 12

    Facendo i calcoli sopra riportati che sono anche nel file che ho appena allegato,
    otterremo cosi come risultato il seguente:

    1 = 1,92
    X = 4,54
    2 = 3,84

    Resto in attesa di sapere se è tutto chiaro e come si può automatizzare il tutto.
    Grazie, Enrico



  • di franci64 data: 14/05/2014 15:03:37

    Ho allegato il file "PROVA OK" che è l'ultimo file con tutte le modifiche fatte anche nel codice VBA
    quindi non ci dovrebbero essere problemi al momento e da questo file vorrei aggiungere il calcole delle MIE QUOTE.

    Grazie, resto in attesa saluti Enrico



  • di Lucas87 data: 14/05/2014 15:22:25

    Forse mi sbaglio, ma alla fine il foglio "25 PARTITE SERIE A" non ti serve a nulla.
    Il tuo obiettivo è compilare le colonne QUOTE MIE vero?

    Anche perchè nella situazione attuale non c'è modo di ottenere i valori di QUOTE MIE per le partite precedenti all'ultima giornata.



  • di franci64 data: 14/05/2014 15:35:13

    Infatti il foglio 25 partite in serie A non mi serve, lo utilizzavo solamente fino ad adesso perché stavo facendo tutto manualmente.

    A questo punto l'unico file che mi serve è il file prova ok ed il calcolo che mi faceva quel file 25 partite in serie a, andrebbe riportato sotto le mie quote Nel file prova ok... È possibile?



  • di Lucas87 data: 14/05/2014 16:08:59

    Avresti dovuto dirlo fin dall'inizio
    Avremmo risparmiato tempo.

    A questo punto la mia idea è:
    Partire dal fondo della tabella
    Analizzare ogni partita (solo quelle già giocate)
    Contare le vittorie, i pareggi e le sconfitte nelle ultime 25 partite per le due squadre
    Fare i calcoli che servono e riportarli in QUOTE MIE

    Es. Per non sbagliare:
    Nel tuo file la prima partita (dal fondo) con risultato è VERONA-UDINESE.
    VERONA: squadra in casa. Prendo in esame le ultime 25 partite giocate dal verona in casa (V1/N1/P1)
    UDINESE: squadra in trasferta. Prendo in esame le ultime 25 partite giocate dall'udinese in trasferta (V2/N2/P2)

    IN QUOTE MIE:
    1: 1/((V1+P2)/50)
    X: 1/((N1+N2)/50)
    2: 1/((P1+V2)/50)

    Ora serve creare 2 macro:
    Una che userai per ottenere i valori delle partite fino ad adesso e l'altra per aggiornare le nuove partite.

    Il risultato sarebbe comunque quello che serve a te?



  • di franci64 data: 14/05/2014 16:18:07

    Mi scuso x non averlo detto prima ma credevo
    di fare meglio a fare un passo alla volta, mi sbagliavo...

    X quanto riguarda il risultato si deve essere quello che hai scritto te nell'esempio,
    L'unica cosa che x fare le prove non prendere le partite dove ci sono Verona, Livorno e Sassuolo perché essendo neopromosse non hanno disputato 25 partite in casa e 25 fuori ma meno, x quelle casomai inserirò io manualmente i risultati dello scorso anno quando erano in serie B.

    Per il resto ok, hai capito in pieno quello che mi serve...
    Grazie, resto in attesa



  • di Textomb data: 14/05/2014 16:19:35

    Adesso la spiegazione è più chiara.
    Diciamo che a questo punto non ti servirebbero neanche le 6 colonne a fianco del punteggio (dalla F alla K) su cui appoggi i valori riferiti alle partite vinte pareggiate e perse per ogni singolo incontro...
    Ti basterà a questo punto risolvere i risultati delle QUOTE MIE ed il gioco è fatto. Giusto?



  • di franci64 data: 14/05/2014 16:24:04

    Giusto, le colonne dalla F alla K sono facoltative possono anche non essere inserite, quello che mi serve sono il numero di vittorie pareggi e sconfitte di ogni squadra in casa e fuori casa (e questo già c'è) ed il calcolo delle Mie Quote...



  • di Lucas87 data: 14/05/2014 16:47:19

    Ricapitolando:
    Le colonne dalla F alla K le togliamo.
    Per capire quale contatore aumentare si fa riferimento al risultato.

    Pensavo a 2 macro:
    La prima verrà usata una sola volta. Farà il controllo sull'intero foglio in modo da trovare i valori anche per le partite fino a questo momento. Tieni presente che per le prime partite non si potrà avere un riscontro con i 25 incontri precedenti.

    La seconda invece andrà a controllare le ultime 10 partite, cioè l'ultimo weekend e verrà attivata da un pulsante che premerai dopo aver inserito i nuovi risultati



  • di franci64 data: 14/05/2014 17:16:12

    Ok, mi sembra che vada tutto bene...

    solo una domanda, Se inserisco righe con altri risultati più vecchi posso farlo o c'è qualche problema dopo???



  • di Lucas87 data: 15/05/2014 11:21:04

    Ciao.
    Come già detto devi rimuovere le colonne dalla F alla K.
    Crea 2 pulsanti e incolla il codice sotto.
    Premendo il primo verranno considerate tutte le partite che hanno un risultato, quindi tutto il foglio. Questo lo puoi usare la prima volta ed eventualmente quando modifichi o aggiungi vecchie partite (che non siano le ultime 10)
    Premendo il secondo, invece, verranno esaminate solo le ultime 10 partite con risultato, quindi l'ultima giornata. Questo lo userai ogni volta che aggiungerai i nuovi risultati dell'ultima giornata.

    Fai delle prove e i calcoli per verificare se funziona come dovrebbe


     
    Private Sub CommandButton1_Click() 'per calcolare tutto
    Application.ScreenUpdating = False
    k1 = Range("d" & Rows.Count).End(xlUp).Row
    For i = k1 To 7 Step -1
        If Cells(i, 2) <> "" Then
            contcas = 0
            conttras = 0
            vcas = 0
            ncas = 0
            pcas = 0
            vtras = 0
            ntras = 0
            ptras = 0
            For j = k1 To 7 Step -1
                If Cells(i, 2) = Cells(j, 2) And contcas < 25 Then
                    contcas = contcas + 1
                    Select Case (Cells(j, 4) - Cells(j, 5))
                        Case Is > 0
                            vcas = vcas + 1
                        Case Is < 0
                            pcas = pcas + 1
                        Case Else
                            ncas = ncas + 1
                    End Select
                End If
                If Cells(i, 3) = Cells(j, 3) And conttras < 25 Then
                    conttras = conttras + 1
                    Select Case (Cells(j, 4) - Cells(j, 5))
                        Case Is < 0
                            vtras = vtras + 1
                        Case Is > 0
                            ptras = ptras + 1
                        Case Else
                            ntras = ntras + 1
                    End Select
                End If
            Next
            Cells(i, 6) = 1 / ((vcas + ptras) / 50)
            Cells(i, 7) = 1 / ((ncas + ntras) / 50)
            Cells(i, 8) = 1 / ((pcas + vtras) / 50)
        End If
    Next
    Application.ScreenUpdating = True
    End Sub
    
    Private Sub CommandButton2_Click() 'per calcolare ultimo weekend/10 partite
    Application.ScreenUpdating = False
    k1 = Range("d" & Rows.Count).End(xlUp).Row
    For i = k1 To k1 - 9 Step -1
        If Cells(i, 2) <> "" Then
            contcas = 0
            conttras = 0
            vcas = 0
            ncas = 0
            pcas = 0
            vtras = 0
            ntras = 0
            ptras = 0
            For j = k1 To 7 Step -1
                If contcas >= 25 And conttras >= 25 Then
                    Exit For
                End If
                If Cells(i, 2) = Cells(j, 2) And contcas < 25 Then
                    contcas = contcas + 1
                    Select Case (Cells(j, 4) - Cells(j, 5))
                        Case Is > 0
                            vcas = vcas + 1
                        Case Is < 0
                            pcas = pcas + 1
                        Case Else
                            ncas = ncas + 1
                    End Select
                End If
                If Cells(i, 3) = Cells(j, 3) And conttras < 25 Then
                    conttras = conttras + 1
                    Select Case (Cells(j, 4) - Cells(j, 5))
                        Case Is < 0
                            vtras = vtras + 1
                        Case Is > 0
                            ptras = ptras + 1
                        Case Else
                            ntras = ntras + 1
                    End Select
                End If
            Next
            Cells(i, 6) = 1 / ((vcas + ptras) / 50)
            Cells(i, 7) = 1 / ((ncas + ntras) / 50)
            Cells(i, 8) = 1 / ((pcas + vtras) / 50)
        End If
    Next
    Application.ScreenUpdating = True
    End Sub
    
    



  • di Textomb data: 15/05/2014 13:26:26

    ciao
    ho fatto girare il codice postato. Ma non mi pare che faccia quello che ha chiesto franci64.
    Infatti come spiegava in un post precedente, ciò che si cerca (almeno quello che ho inteso io...) sono le QUOTE MIE riferite agli incontri che si devono ancora svolgere.
    Infatti lo stesso franci64 portava l'esempio di Fiorentina - Torino del prossimo turno i cui valori devono risultare:
    1 = 1,92
    X = 4,54
    2 = 3,84
    Ho capito male?



  • di Textomb data: 15/05/2014 13:30:36

    Quindi, se non ho capito male, vanno bene i conteggi riferiti al numero di incontri vinti, pareggiati e persi per ogni singola squadra in casa e fuori casa. Ma poi si dovranno trovare solo le QUOTE MIE degli incontri riferiti al turno successivo. Quello che non è ancora stato disputato. D'altra parte, se ho capito il senso di questi calcoli, non avrebbe senso cercare questi valori per gli incontri già disputati... O no?



  • di Lucas87 data: 15/05/2014 13:37:28

    Ho modificato il codice.
    Ora prende una partita, analizza le 25 partite precedenti (v,p,n) delle 2 squadre e fa i calcoli.
    Se veramente i calcoli servono solo per le partite ancora da giocare, quindi le ultime 10, allora è sufficiente il secondo codice.
     
    Private Sub CommandButton1_Click() 'per calcolare tutto
    Application.ScreenUpdating = False
    k1 = Range("d" & Rows.Count).End(xlUp).Row
    k2 = Range("d" & Rows.Count).End(xlUp).Row
    For i = k1 To 7 Step -1
        If Cells(i, 2) <> "" Then
            contcas = 0
            conttras = 0
            vcas = 0
            ncas = 0
            pcas = 0
            vtras = 0
            ntras = 0
            ptras = 0
            For j = k2 To 7 Step -1
                If Cells(i, 2) = Cells(j, 2) And contcas < 25 Then
                    contcas = contcas + 1
                    Select Case (Cells(j, 4) - Cells(j, 5))
                        Case Is > 0
                            vcas = vcas + 1
                        Case Is < 0
                            pcas = pcas + 1
                        Case Else
                            ncas = ncas + 1
                    End Select
                End If
                If Cells(i, 3) = Cells(j, 3) And conttras < 25 Then
                    conttras = conttras + 1
                    Select Case (Cells(j, 4) - Cells(j, 5))
                        Case Is < 0
                            vtras = vtras + 1
                        Case Is > 0
                            ptras = ptras + 1
                        Case Else
                            ntras = ntras + 1
                    End Select
                End If
            Next
            Cells(i, 6) = 1 / ((vcas + ptras) / 50)
            Cells(i, 7) = 1 / ((ncas + ntras) / 50)
            Cells(i, 8) = 1 / ((pcas + vtras) / 50)
        End If
    Next
    Application.ScreenUpdating = True
    End Sub
    
    Private Sub CommandButton2_Click() 'per calcolare ultimo weekend/10 partite
    Application.ScreenUpdating = False
    k1 = Range("b" & Rows.Count).End(xlUp).Row
    k2 = Range("d" & Rows.Count).End(xlUp).Row
    For i = k1 To k1 - 9 Step -1
        If Cells(i, 2) <> "" Then
            contcas = 0
            conttras = 0
            vcas = 0
            ncas = 0
            pcas = 0
            vtras = 0
            ntras = 0
            ptras = 0
            For j = k2 To 7 Step -1
                If contcas >= 25 And conttras >= 25 Then
                    Exit For
                End If
                If Cells(i, 2) = Cells(j, 2) And contcas < 25 Then
                    contcas = contcas + 1
                    Select Case (Cells(j, 4) - Cells(j, 5))
                        Case Is > 0
                            vcas = vcas + 1
                        Case Is < 0
                            pcas = pcas + 1
                        Case Else
                            ncas = ncas + 1
                    End Select
                End If
                If Cells(i, 3) = Cells(j, 3) And conttras < 25 Then
                    conttras = conttras + 1
                    Select Case (Cells(j, 4) - Cells(j, 5))
                        Case Is < 0
                            vtras = vtras + 1
                        Case Is > 0
                            ptras = ptras + 1
                        Case Else
                            ntras = ntras + 1
                    End Select
                End If
            Next
            Cells(i, 6) = 1 / ((vcas + ptras) / 50)
            Cells(i, 7) = 1 / ((ncas + ntras) / 50)
            Cells(i, 8) = 1 / ((pcas + vtras) / 50)
        End If
    Next
    Application.ScreenUpdating = True
    End Sub
    
    



  • di franci64 data: 15/05/2014 15:30:14

    Ciao, si in realtà le MIE QUOTE serve solo per le ultime 10 partite da giocare però se è possibile farlo per tutte almeno ho uno storico di tutte le quote, quindi preferirei entrambe se possibile.

    Ho provato ad inserire le formule ma dato che sono agli inizi con le Macro non riesco a creare il bottone ed associare la Macro, mi dà qualche errore perchè non sono capace purtroppo, quindi vi chiedo gentilmente se potete farmelo Voi ed allegarmi il file pronto, Vi metto in allegato il file dal quale partire per modificare il codice "FILE DA MODIFICARE".

    Grazie mille, aspetto Vostre news



  • di Lucas87 data: 15/05/2014 15:49:46

    Ciao
    Sto usando Excel 2003 e mi da problemi con il tuo file a causa dell'estensione .xlsm

    A questo link (togli gli spazi all'inizio) trovi la spiegazione su come fare. A te interessa il pulsante di comando (controllo ActiveX)

    h t t p://office.microsoft.com/it-it/excel-help/aggiungere-un-pulsante-e-assegnare-una-macro-al-pulsante-in-un-foglio-di-lavoro-HP010342137.aspx



  • di franci64 data: 15/05/2014 17:18:35

    Eccomi, grazie per il link, mi ci è voluto un pò ma poi ho capito ed ho creato pulsanti e Macro, sono a comunicarti l'esito;

    - Pulsante ultime 10 partite OK, funziona perfettamente ed i risultati sono corretti.

    - Pulsante precedenti partite funziona correttamente però i risultati non sono corretti, non sò per quale motivo
    ti faccio un esempio per capire meglio:
    es. 10 MAGGIO 2014 ROMA - JUVENTUS il calcolo con il pulsante da esito
    1 = 2,38
    X = 6,25
    2 = 2,38

    il calcolo corretto fatto manualmente da me in precedenza da come esito
    1 = 2,27
    X = 5,55
    2 = 2,63

    Poi volevo chiederti, il secondo foglio che si chiama 25 partite serie A a questo punto si potrebbe anche eliminare
    oppure è possibile modificare anche quel codice facendo sempre apparire le ultime 25 partite in casa e fuori casa
    di ogni squadra??? perchè se fosse possibile modificarlo per visualizzare l'esito degli ultimi 25 incontri in casa e fuori casa
    lo preferirei.

    per quanto riguarda la posizione del pulsante che aggiorna le ultime 10 partite è possibile portarlo sempre in linea con
    le ultime 10 partite oppure è fisso dove lo metto io???

    Resto in attesa, grazie mille per il momento....

    p.s. allego il file "PROVA 2 MOD" cosi potete verificare se ho fatto tutto correttamente



  • di franci64 data: 15/05/2014 17:38:13

    Stavo valutando un'altra possibilità del file e volevo chiederVi cosa c'è da fare se
    devo inserire una colonna all'inizio prima della colonna A per inserire il numero della giornata di campionato
    tipo una colonna alla sinistra di 18 MAGGIO 2014 dove su ogni partita di quella giornata ci sarà il numero 38
    che vado a mettere manualmente che stà ad indicare la 36° giornata di campionato, come devo modificare il VBA se possibile??
    perchè altrimenti quando clicco sul tasto della Macro dà un errore....

    Grazie, saluti Enrico



  • di Textomb data: 15/05/2014 18:05:21

    Ho fatto una prova anch'io con un codice un pò diverso da quello di Lucas ed in effetti risulta anche a me per la partita ROMA - JUVENTUS del 10 Maggio i valori
    1 = 2,27
    X = 5,55
    2 = 2,63
    Non riesco a spiegarmelo. Ci sarà forse qualche imprecisione nel calcolo fatto da Lucas?
    Poi ho visto che anche togliendo (provvisoriamente) i risultati delle partite precedenti il calcolo che ha elaborato Lucas sviluppa sempre i valori riferiti all'ultima giornata di campionato...



  • di franci64 data: 15/05/2014 18:13:31

    puoi inviarmi il tuo codice Textomb cosi verifico se và bene e se anche gli altri risultati sono corretti??

    Per le altre richieste che avevo fatto sapete dirmi qualcosa??

    - Aggiunta colonna (vedi post precedente)
    - Secondo foglio 25 partite serie A (vedi post precedente)
    - Posizione del pulsante Aggiorna Ultime Partite (vedi post precedente)




  • di Textomb data: 15/05/2014 18:41:42

    ti allego il mio file "PROVA 2 Textomb" sviluppato sulla scorta dell'ultimo che hai allegato.
    Come richiesto ho aggiunto una colonna a sinistra della data così potrai inserire la giornata di campionato.
    Verifica gli altri risultati e dicci se funziona bene.
    L'elaborazione delle QUOTE MIE viene sviluppata solo per il gruppo di partite riferite alla giornata successiva non ancora disputata. Quindi se vuoi calcolare le QUOTE MIE riferite agli incontri già disputati puoi (provvisoriamente) cancellare i risultati e lanciare la macro (ctrl-q).
    Il foglio 25 PARTITE SERE A viene di volta in volta aggiornato.



  • di Textomb data: 15/05/2014 18:49:02

    Per completezza allego anche il codice commentato.

     
    Option Explicit
    
    Sub QuoteMie_Textomb()
    ' Il Procedimento adottato:
    ' Individuo il numero delle squadre presenti nel foglio utilizzando una collection
    ' Così facendo mi dimensiono le due matrici necessarie a contenerle.
    ' Costruisco una matrice dove raggruppo i risultati ottenuti delle squadre di casa
    ' Ed un'altra in cui raggruppo i risultati delle squadre fuori casa
    ' Quindi, calcolo le QUOTE MIE riferite al gruppo delle squadre che dovranno disputare il match successivo
    ' Alla fine sparo il contenuto delle matrici nel foglio 25 Partite sere A aggiornando i risultati.
    
    Dim collNS As New Collection, nS As Integer, RisDC(), RisFC(), nrDC As Integer, nrFC As Integer 'Le matrici dei risultati
    Dim Lr As Long, i As Long, SquadraDC As String, SquadraFC As String
    Dim sh As Worksheet, nR As Byte, sQ As String, Ris
    Dim SDCasa As String, SFCasa As String, nVdc As Byte, nNdc As Byte, nPdc As Byte, nVfc As Byte, nNfc As Byte, nPfc As Byte
    
    Set sh = Worksheets(Foglio2.Name)
    Lr = sh.Cells(Rows.Count, 5).End(xlUp).Row
    
        On Error Resume Next
            For i = 7 To Lr
                sQ = Trim(sh.Range("c" & i).Value)
                If sQ <> "" Then collNS.Add sQ, Key:=sQ
            Next
        On Error GoTo 0
        
    'Dimensiono le matrici dei risultati e gli passo i nomi delle squadre
        ReDim Preserve RisDC(1 To collNS.Count, 1 To 5)
        ReDim Preserve RisFC(1 To collNS.Count, 1 To 5)
        For nS = 1 To collNS.Count
            RisDC(nS, 2) = collNS(nS)
            RisFC(nS, 2) = collNS(nS)
        Next
    ' Le 5 colonne delle matrici rappresentano rispettivamente
    '1:Numero degli ultimi incontri presi in esame (contatore)
    '2:Nome della Squadra
    '3:N. Incontri Vinti
    '4:N. Incontri Pareggiati
    '5:N. Incontri Persi
    
    'Popolo la matrice dei risultati ottenuti dentro casa RisDC()
        
        For i = Lr To 7 Step -1
        SquadraDC = Trim(sh.Range("c" & i)) 'Squadra dentro casa
        SquadraFC = Trim(sh.Range("d" & i)) 'Squadra fuori casa
        
            
                    If sh.Range("e" & i) > sh.Range("f" & i) Then
                        Ris = Array(1, 0, 0)
                    ElseIf sh.Range("e" & i) = sh.Range("f" & i) Then
                        Ris = Array(0, 1, 0)
                    ElseIf sh.Range("e" & i) < sh.Range("f" & i) Then
                        Ris = Array(0, 0, 1)
                    End If
            
            nrDC = 0
            nrFC = 0
            If SquadraDC <> "" And SquadraFC <> "" Then
                Do
                  nR = nR + 1
                    If RisDC(nR, 2) = SquadraDC Then nrDC = nR
                    If RisFC(nR, 2) = SquadraFC Then nrFC = nR
                Loop Until nrDC <> 0 And nrFC <> 0
                nR = 0
                            If RisDC(nrDC, 1) < 25 Then
                                RisDC(nrDC, 1) = RisDC(nrDC, 1) + 1
                                RisDC(nrDC, 3) = RisDC(nrDC, 3) + Ris(0)
                                RisDC(nrDC, 4) = RisDC(nrDC, 4) + Ris(1)
                                RisDC(nrDC, 5) = RisDC(nrDC, 5) + Ris(2)
                            End If
                            
                            If RisFC(nrFC, 1) < 25 Then
                                RisFC(nrFC, 1) = RisFC(nrFC, 1) + 1
                                RisFC(nrFC, 3) = RisFC(nrFC, 3) + Ris(2)
                                RisFC(nrFC, 4) = RisFC(nrFC, 4) + Ris(1)
                                RisFC(nrFC, 5) = RisFC(nrFC, 5) + Ris(0)
                            End If
            End If
            'Debug.Print SquadraDC & "-" & SquadraFC & ": " & sh.Range("d" & i) & " - " & sh.Range("e" & i)
        Next
    
    ' Calcolo le QUOTE MIE
    Lr = sh.Cells(Rows.Count, 5).End(xlUp).Row + 1 'Ultimo gruppo dei risultati registrati
        
        For i = Lr To (Lr + 9) 'Gruppo delle squadre che dovranno giocare nel prossimo turno
        SDCasa = Trim(sh.Range("c" & i)) 'Squadra di casa
        SFCasa = Trim(sh.Range("d" & i)) 'Squadra fuori casa
        
        If SDCasa = "" Or SFCasa = "" Then MsgBox "Impossibile procedere con il calcolo", vbCritical: Exit Sub
        
        nrDC = 0
        nrFC = 0
            Do
            nR = nR + 1
                If RisDC(nR, 2) = SDCasa Then nrDC = nR
                If RisFC(nR, 2) = SFCasa Then nrFC = nR
            Loop Until nrDC <> 0 And nrFC <> 0
            nR = 0
                    nVdc = RisDC(nrDC, 3) 'N. Partite Vinte in Casa
                    nNdc = RisDC(nrDC, 4) 'N. Partite Pareggiate in Casa
                    nPdc = RisDC(nrDC, 5) 'N. Partite Perse in Casaa
                    nVfc = RisFC(nrFC, 3) 'N. Partite Vinte Fuori Casa
                    nNfc = RisFC(nrFC, 4) 'N. Partite Pareggiate Fuori Casa
                    nPfc = RisFC(nrFC, 5) 'N. Partite Perse Fuori Casa
            
            'Adesso i Risultati delle Quote mie
            sh.Range("G" & i).Value = 1 / ((nVdc + nPfc) / 50)
            sh.Range("H" & i).Value = 1 / ((nNdc + nNfc) / 50)
            sh.Range("I" & i).Value = 1 / ((nPdc + nVfc) / 50)
            
        Next
        
    'Riporto per completezza anche i risultati ottenuti delle ultime 25 Partite per ogni squadra
    With Foglio1
        .Range("A4:E" & UBound(RisDC) + 3).Value = RisDC
        .Range("A4").Sort , key1:=.Range("B4"), Order1:=xlAscending, Header:=xlNo
        
        .Range("G4:K" & UBound(RisFC) + 3).Value = RisFC
        .Range("G4").Sort , key1:=Foglio1.Range("H4"), Order1:=xlAscending, Header:=xlNo
    End With
    
        MsgBox "Calcolo Completato!", vbInformation
    
    Set sh = Nothing
    
    
    End Sub
    



  • di franci64 data: 15/05/2014 19:12:39

    Innanzi tutto grazie mille, ti elenco quanto riscontrato:

    POSITIVO:
    - Colonna GIORNATA OK PERFETTO
    - FOGLIO 25 PARTITE SERIE A OK PERFETTO ED IL TOTALE DEL NUMERO DI PARTITE TROVATE MI SERVIVA QUINDI OTTIMO ;)
    - Comando CTRL + Q ottimo per aggiornare le quote cosi non devo salire e scendere per cliccare un pulsante.

    NEGATIVO:
    - Se devo inserire sopra SERIE A 2013/2014 alcune partite tipo le partite delle NEOPROMOSSE Verona - Sassuolo - Livorno della stagione scorsa con il file di Lucas me lo faceva fare e mi calcolava cosi anche di queste squadre 25 partite in casa e 25 fuori casa senza prendere in considerazione le altre squadre di Serie B che giocavano contro queste tre;
    mentre se le inserisco su questo file non me le aggiorna ed in più sul foglio 25 PARTITE SERIE A mi inserisce tutte le squadre in più che hanno giocato contro Verona - Sassuolo e Livorno e sballa tutto, non sò se è possibile modificarlo....

    - Se fosse possibile inserire anche le altre quote delle partite già disputate altrimenti và bene cosi.

    - Il foglio "CALENDARIO SERIE A (Copia) non serve giusto???

    Resto in attesa...



  • di Textomb data: 15/05/2014 23:45:58

    Però non hai detto se i calcoli sono corretti. Beh, immagino di si altrimenti lo avresti evidenziato tra le cose Negative. Questo è già tanto. Sembra un problemino semplice ma non lo è stato. Almeno per me.
    Diciamo che a farlo si fa. Ma farlo per bene ci si mette del tempo.

    Andiamo ai punti Negativi:
    cit. Se devo inserire sopra SERIE A 2013/2014 alcune partite tipo le partite delle NEOPROMOSSE Verona - Sassuolo - Livorno della stagione scorsa con il file di Lucas me lo faceva fare e mi calcolava cosi anche di queste squadre 25 partite in casa e 25 fuori casa senza prendere in considerazione le altre squadre di Serie B che giocavano contro queste tre; mentre se le inserisco su questo file non me le aggiorna ed in più sul foglio 25 PARTITE SERIE A mi inserisce tutte le squadre in più che hanno giocato contro Verona - Sassuolo e Livorno e sballa tutto...
    Ma allora perchè non usi il file di Lucas...?

    cit. - Se fosse possibile inserire anche le altre quote delle partite già disputate altrimenti và bene cosi.
    Beh, in effetti si può fare ma se per te è lo stesso io andrei al risparmio. Che ne pensi?

    cit. - Il foglio "CALENDARIO SERIE A (Copia) non serve giusto???
    Indovinato.



  • di franci64 data: 16/05/2014 09:15:01

    Buondi, allora i calcoli del file inviato da Textomb sono corretti.

    - Per quanto riguarda la frase "Ma allora perchè non usi il file di Lucas...?"
    ti dico che se uso quello di Lucas ho il vantaggio di inserire altre partite senza problemi
    ma non ho i vantaggi del file di Textomb quindi preferirei usare quello di Textomb con
    una modifica per inserire altre partite se possibile

    - Per quanto riguarda inserire le quote delle partite precedenti mi può andare anche bene
    che non vengano visualizzate, però per quanto riguarda le quote dalle partite attuali in poi
    vengono sempre visualizzati giusto???

    Resto in attesa di news



  • di Textomb data: 16/05/2014 09:48:12

    ho riallegato il mio file "Prova 2 Textomb"
    provalo un pò...



  • di franci64 data: 16/05/2014 17:08:41

    GRAZIE MILLE Textomb, ho appena prova il file e mi sembra che và benissimo!!!!

    Ora continuerò a testarlo per i prossimi giorni cosi vedo se ci sono problemi e ti faccio sapere, intanto volevo chiederti alcune info;

    - Con lo stesso foglio posso utilizzarlo anche per altri campionati tipo Inglese facendo le seguenti modifiche??
    - cambio le squadre sul foglio 25 partite serie A giusto??
    - cambio i risultati sul foglio Calendario serie A giusto??
    - se rinomino i fogli devo rinominarli anche nelle Macro giusto??

    - Accanto alle MIE QUOTE 1X2 di possono anche calcolare le MIE QUOTE OVER/UNDER??? Mi spiego:
    in questo caso andrebbero prese le ultime 5 partite in casa della squadra di casa
    e le ultime 5 partite fuori casa della squadra fuori casa e fatto il seguente calcolo
    OVER 2,5 (Cioè partite finite con 3 o più gol) calcolo
    =1/((over 2,5 SQUADRA DI CASA ultime 5 partite + over 2,5 SQUADRA FUORI CASA ultime 5 partite)/10)

    UNDER 2,5 (Cioè partite finite con 2 o meno gol) calcolo
    =1/((under 2,5 SQUADRA DI CASA ultime 5 partite + under 2,5 SQUADRA FUORI CASA ultime 5 partite)/10)

    Resto in attesa di news e per il momento vi ringrazio INFINITAMENTE a tutti!!!!!



  • di Textomb data: 16/05/2014 19:50:05

    Sono contento che stia funzionando. Come dicevo sembrava banale... ma ormai che c’ero mi sono cimentato.
    Andiamo ai quesiti.

    - Con lo stesso foglio posso utilizzarlo anche per altri campionati tipo Inglese facendo le seguenti modifiche??
    Si ma sappi che il programmino è stato concepito per un campionato con 20 squadre e quindi le MIE QUOTE saranno di volta in volta calcolate per un gruppo di 10 incontri al massimo.

    - cambio le squadre sul foglio 25 partite serie A giusto??
    Assolutamente NO. Il foglio 25 partite serie A si costruisce automaticamente in base alle squadre su cui vengono calcolate le QUOTE MIE. In altre parole, il programmino è stato elaborato per calcolare in modo standard le QUOTE MIE di un gruppo di 10 incontri (che poi sono quelli della nostra SERIE A e quindi 20 squadre). Il foglio 25 Partite serie A si costruisce elaborando i risultati delle ultime 25 partite di queste 20 Squadre. Questa esigenza è stata dettata dal fatto che di queste 20 squadre alcune provengono dalla Serie B e quindi l'ho fatto per evitare di far comparire nel foglio 25 partite anche le squadre di Serie B con le quali le neo promosse hanno giocato... Se tu, solo per comprendere meglio, provassi ad inserire due risultati dell'ultima giornata per esempio UDINESE - SAMPDORIA e GENOVA - ROMA vedrai che il calcolo delle QUOTE MIE verrà elaborato solo per i restanti 8 incontri senza risultato. Di conseguenza, il foglio 25 partite sarà elaborato SOLO per le 16 squadre coinvolte nel calcolo. Analogamente se, per esempio, provassi a cancellare la tabella del foglio 25 partite dalla riga 4 in poi, ESCLUSO solo le intestazioni, vedrai che lanciando la routine (ctrl-q) quest’ultima si ricostruisce immediatamente.

    - cambio i risultati sul foglio Calendario serie A giusto??
    Ovviamente SI. Cambiando anche i nomi delle squadre. Considera che i 25 risultati vengono presi dal più recente al meno recente. Cioè la lista dei risultati viene percorsa dal fondo alla cima fermandosi alla riga 7 ma SENZA alcun controllo sulla Data scritta nella colonna B. Sarà tua cura registrare i risultati progressivamente.

    - se rinomino i fogli devo rinominarli anche nelle Macro giusto??
    Assolutamente NO. I fogli possono essere rinominati come vuoi senza compromettere la funzionalità del programmino. Almeno così dovrebbe essere...

    In ultimo, per quanto riguarda le QUOTE OVER/UNDER, potrai certamente sviluppare tutti i calcoli che vorrai e registrarli accanto. Magari lanciando un'altra routine parallela a questa delle QUOTE MIE.
    In bocca al lupo.


  • Richiesta importante
    di franci64 data: 07/06/2014 09:52:32

    Buongiorno, Vi allego il file con delle modifiche effettuate da me,
    in relazione a questo file inviato volevo sapere due informazioni:

    - Mi dicono che su MAC non gira bene questo file, è possibile ottimizzarlo per il MAC oppure
    in che modo si può fare che funzioni sia per Windows che per MAC???

    - E' possibile fare una Macro come segue da inserire nello stesso foglio
    sotto le celle MIE QUOTE Over 2,5 e Under 2,5:
    (p.s. OVER 2,5 Partite con 3 o più gol. UNDER 2,5 Partite con 2 o meno gol)

    prendere le ultime 5 partite in casa della squadra di casa
    prendere le ultime 5 partite fuori casa della squadra fuori casa

    su OVER 2,5 si andrà a fare il seguente calcolo =1/((Over 2,5 Sq.casa+Over 2,5 Sq.f.casa)/10)
    su UNDER 2,5 si andrà a fare il seguente calcolo =1/((Under 2,5 Sq.casa+Under 2,5 Sq.f.casa)/10)

    per esempio se prendiamo la 38° giornata cioè l'ultima la partita FIORENTINA-TORINO il calcolo sarà il seguente:

    FIORENTINA:
    ULTIME 5 PARTITE OVER 2,5 = 3
    ULTIME 5 PARTITE UNDER 2,5 = 2

    TORINO:
    ULTIME 5 PARTITE OVER 2,5 = 2
    ULTIME 5 PARTITE UNDER 2,5 = 3

    andando a fare il calcolo otterremmo questo risultato:
    su OVER 2,5 si andrà a fare il seguente calcolo =1/((3+2)/10) = 2,00
    su UNDER 2,5 si andrà a fare il seguente calcolo =1/((2+3)/10) = 2,00

    Resto in attesa di un Vostro riscontro, grazie saluti Enrico