Option Explicit
Dim aEstrRit()
Dim aColori()
Dim nLenRiga
Dim nIdPrimaEstr
Sub Main
Dim Inizio,Fine
Dim r,k,e,i
Dim RitDelRit,FreqDelRit
Dim sRiga
Dim nCol
Dim aR(1)
Dim aN(1)
Inizio = EstrazioneIni
Fine = EstrazioneFin
ReDim aEstrRit(EstrazioniArchivio,12,5)
Call InitAlimentaTabella
ReDim FreqDelRit(12,250)
Call Messaggio("Calcolo tabella ritardi")
nIdPrimaEstr = Inizio - 200
nIdPrimaEstr = CInt(InputBox("Inserire la prima estrazione dalla quale conteggiare i ritardi (per default è 200 estrazioni indietro rispetto all'inizio range in analisi)","Prima estrazione",nIdPrimaEstr))
If nIdPrimaEstr & lt; = 0 Then nIdPrimaEstr = 1
For k = nIdPrimaEstr To Inizio - 1
For r = 1 To 12
If r & lt; & gt; 11 Then
aR(1) = r
For e = 1 To 5
aN(1) = Estratto(k,r,e)
aEstrRit(k,r,e) = RitardoCombinazione(aR,aN,1,k - 1)
If aEstrRit(k,r,e) & gt; 250 Then aEstrRit(k,r,e) = 250
FreqDelRit(r,aEstrRit(k,r,e)) = FreqDelRit(r,aEstrRit(k,r,e)) + 1
Next
End If
Next
Call AvanzamentoElab(nIdPrimaEstr,Inizio - 1,k)
If ScriptInterrotto Then Exit Sub
Next
Call Messaggio("Analisi range in corso...")
For k = Inizio To Fine
ReDim aRigaNumeri(57)
ReDim aRigaRitardi(57)
ReDim aRigaRitardiDei(57)
ReDim aRigaFrequenzaDei(57)
aRigaNumeri(1) = DataEstrazione(k)
aRigaNumeri(2) = k
aRigaRitardi(1) = "Rit"
aRigaRitardiDei(1) = "RitDeiRit"
aRigaFrequenzaDei(1) = "FrqRit"
nCol = 2
For r = 1 To 12
If r & lt; & gt; 11 Then
aR(1) = r
For e = 1 To 5
nCol = nCol + 1
aN(1) = Estratto(k,r,e)
aEstrRit(k,r,e) = RitardoCombinazione(aR,aN,1,k - 1)
RitDelRit = GetRitardoDelRitardo(aEstrRit(k,r,e),k - 1,r)
If aEstrRit(k,r,e) & gt; 250 Then aEstrRit(k,r,e) = 250
FreqDelRit(r,aEstrRit(k,r,e)) = FreqDelRit(r,aEstrRit(k,r,e)) + 1
aRigaNumeri(nCol) = aN(1)
aRigaRitardi(nCol) = aEstrRit(k,r,e)
aRigaRitardiDei(nCol) = RitDelRit
aRigaFrequenzaDei(nCol) = FreqDelRit(r,aEstrRit(k,r,e))
Next
End If
Next
Call Scriviriga(aRigaNumeri,DataEstrazione(k),k)
Call Scriviriga(aRigaRitardi,"Ritardi","")
Call Scriviriga(aRigaRitardiDei,"RitDeiRit","")
Call Scriviriga(aRigaFrequenzaDei,"FreqDeiRit","")
sRiga = String(nLenRiga,"-")
Call Scrivi(sRiga)
Call AvanzamentoElab(Inizio,Fine,k)
If ScriptInterrotto Then Exit For
Next
End Sub
Sub InitAlimentaTabella()
Dim sRiga
Dim r
nLenRiga = 11 + 5 +(29*11) +(11*3) + 1
sRiga = String(nLenRiga,"-")
Call Scrivi(sRiga)
sRiga = "|" & FormatSpace("Data",10) & "|"
sRiga = sRiga & FormatSpace("Id",4) & "|"
For r = 1 To 12
If r & lt; & gt; 11 Then
sRiga = sRiga & " " & FormatSpace(NomeRuota(r),28) & "|*|"
End If
Next
Call Scrivi(sRiga)
sRiga = String(nLenRiga,"-")
Call Scrivi(sRiga)
End Sub
Sub Scriviriga(aRiga,sData,Id)
Dim sRiga
Dim r,e,nCol
sRiga = "|" & FormatSpace(sData,10) & "|"
sRiga = sRiga & FormatSpace(Id,4,True) & "|"
nCol = 2
For r = 1 To 12
If r & lt; & gt; 11 Then
For e = 1 To 5
nCol = nCol + 1
sRiga = sRiga & FormatSpace(aRiga(nCol),5,True) & "|"
Next
sRiga = sRiga & "*|"
End If
Next
Call Scrivi(sRiga)
End Sub
Function GetRitardoDelRitardo(RitDaEsaminare,IdEstr,ruota)
Dim k,e,b
Dim RitDelRit
RitDelRit = 0
b = False
For k = IdEstr To nIdPrimaEstr Step - 1
For e = 1 To 5
If aEstrRit(k,ruota,e) = RitDaEsaminare Then
b = True
Exit For
End If
Next
If b Then Exit For
RitDelRit = RitDelRit + 1
Next
GetRitardoDelRitardo = RitDelRit
End Function