Ciao Poalox,avevo uno script creato per le mie esigenze.
Ho solo aggiunto l'ultima colonna con il calcolo da te richiesto e l'ho ordinato in modo decrescente per indice di convenienza.
Vedi se risponde alle tue aspettative.
Lo script è abbastanza intuitivo se hai bisogno di spiegazioni chiedi pure.
Ciao
Mike58
P.S. per altri che vogliono prendere spunto ho inserito anche il tempo di elaborazione......
Option Explicit
Sub Main
nStart = Timer
Dim n
Dim Inizio,Fine
ReDim aTitoli(10)
Dim Tot
Dim numeri,h,es,idestr
Dim nStart,nEnd
Dim hh,Mn,Ss
aTitoli(1) = "Numero"
aTitoli(2) = " Ritardo "
aTitoli(3) = "RitardoMax"
aTitoli(4) = "Frequenza Totale"
aTitoli(5) = "Frequenza 18"
aTitoli(6) = "Frequenza 9"
aTitoli(7) = "Frequenza 6"
aTitoli(8) = "Frequenza 3"
aTitoli(9) = "Ultimi usciti"
aTitoli(10) = "Indice convenienza"
Scrivi " Tabella Presenze e Ritardi al 10 & lotto by Mike58 ",1,- 1,3
Scrivi ""
Inizio = 8077
Fine = EstrazioniArchivioDL
Tot = Fine - Inizio
Scrivi " dalla data inizio di " & DataEstrazione(Inizio) & " alla data finale di " & DataEstrazione(Fine) & " Estrazioni esaminate... " & Tot,1
Scrivi ""
idestr = Fine
numeri = ""
'''carica schiera con 20 numeri estratti
For h = 1 To 20
numeri = numeri & EstrattoDL(idestr,h) & "." ' scrive i nmeri estratti
'Next
Next
ColoreTesto 1
Scrivi GetInfoEstrazioneDL(idestr) & "...Estratti..." & numeri,1,- 1,3
Scrivi "____________________________________________________________________________________________________"
ColoreTesto 0
'Scrivi"--------------------------------------------------------------------------------------------------"
Call InitTabella(aTitoli,vbYellow)
ReDim aNum(1)
For n = 1 To 90
aNum(1) = n
ReDim aValori(10)
aValori(1) = n
aValori(2) = SerieRitardoDL(Inizio,Fine,aNum,1)
aValori(3) = SerieStoricoDL(Inizio,Fine,aNum,1)
aValori(4) = SerieFreqDL(Inizio,Fine,aNum,1)
aValori(5) = SerieFreqDL(Fine - 18,Fine,aNum,1)
aValori(6) = SerieFreqDL(Fine - 9,Fine,aNum,1)
aValori(7) = SerieFreqDL(Fine - 6,Fine,aNum,1)
aValori(8) = SerieFreqDL(Fine - 3,Fine,aNum,1)
aValori(9) = SerieFreqDL(Fine,Fine,aNum,1)
aValori(10) = aValori(4)/Tot*aValori(2)
Call AddRigaTabella(aValori)
Call SetColoreCella(4,vbMagenta)
Call SetColoreCella(1,vbRed)
Call SetColoreCella(10,vbGreen)
Next
Call CreaTabella(10)' ordina per colonna
nEnd = Timer
'End Sub
Call Scrivi("Tempo di elaborazione : " & FormattaSecondi((nEnd + 1) - nStart))
End Sub
Function FormattaSecondi(s)
'Questa Function trasforma il numero di secondi passato come parametro in una stringa
' passando i secondi si ottengono ore minuti e secondi in formato hh:mm:ss
' s ---> Numero di secondi da formattare
' ritorna una stringa il cui formato è hh:mm:ss (la function non funziona se in totale abbiamo piu di 99 ore )
Dim hh
Dim Mm
Dim Ss
Dim TimeStr
hh = s \ 3600
Mm =(s Mod 3600) \ 60
Ss = s -((hh * 3600) +(Mm * 60))
TimeStr = Format2(hh) & ":" & Format2(Mm) & ":" & Format2(Ss)
FormattaSecondi = TimeStr
End Function