Novità

Domando sullo Script Futuro2

Baciccia4251

Super Member >PLATINUM<
Sto cercando di creare una macro che faccia le stesse cose dello script.
Purtroppo non riesco a spiegare chiaramente all'AI alcune cose.
Ad esempio mi ha chiesto:

Potresti aiutarmi a capire:
Esattamente cosa fa la funzione SerieFreqTurbo? Che tipo di conteggio esegue?
Nel caso specifico che hai mostrato (spia 10 su Bari), come arriva a contare 36 presenze per la coppia 20,67?
Vedo che nello script i numeri della prima riga sono 20,67 mentre nella macro sono 20,47 - questo suggerisce che c'è una differenza anche nella selezione delle coppie da analizzare. Come vengono scelte le coppie nello script?

Con queste informazioni potrò correggere la macro per replicare esattamente lo stesso comportamento dello script.

Ho difficoltà a rispondere. Qualche scripter potrebbe darmi qualche suggerimento?
Grazie
Baciccia
 
Con le Frequenze i risultati dei conteggi sono sempre molto instabili.

Per esempio alla domanda: Dimmi quale il numero più Frequente?

Se i numeri sono 3 a pari caratteristiche.

La risposta sarà ... 1 dei 3.

Coincidente al risultato fornito da un algoritmo di calcolo,

egualmente giusto, egualmente sbagliato, casualmente uguale.

Da questo semplice esempio si comprende che il risultato

potrebbe essere uguale, sempre, oppure mai, oppure ogni tanto.

Se pubblichi, la macro si può capire il perché delle differenze.

Altrimenti, non si può dare risposta meno generica di quella che ti ho appena fornito.

:) Buon lavoro.
 
Con le Frequenze i risultati dei conteggi sono sempre molto instabili.

Per esempio alla domanda: Dimmi quale il numero più Frequente?

Se i numeri sono 3 a pari caratteristiche.

La risposta sarà ... 1 dei 3.

Coincidente al risultato fornito da un algoritmo di calcolo,

egualmente giusto, egualmente sbagliato, casualmente uguale.

Da questo semplice esempio si comprende che il risultato

potrebbe essere uguale, sempre, oppure mai, oppure ogni tanto.

Se pubblichi, la macro si può capire il perché delle differenze.

Altrimenti, non si può dare risposta meno generica di quella che ti ho appena fornito.

:) Buon lavoro.
Questa è la macro, con mille problemi ancora da risolvere

Option Explicit

Private Type ultimoEsito
Data As Date
Codice As String
Concorso As String
End Type

Public Sub Futuro2Macro()
On Error GoTo ErrorHandler

' Inizializzazione
Dim ws As Worksheet
Dim wsDest As Worksheet
Set ws = ThisWorkbook.Worksheets("Archivio")
Set wsDest = ThisWorkbook.Worksheets("Missione")
wsDest.Cells.Clear

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False

' Input parametri
Dim ruotaSpia As Integer
ruotaSpia = InputBox("Ruota della spia (1-11)" & vbCrLf & _
"1=Bari, 2=Cagliari, 3=Firenze, 4=Genova, 5=Milano" & vbCrLf & _
"6=Napoli, 7=Palermo, 8=Roma, 9=Torino, 10=Venezia, 11=Nazionale", , 1)

If ruotaSpia < 1 Or ruotaSpia > 11 Then
MsgBox "Ruota non valida!"
GoTo CleanExit
End If

Dim ruotaGioco As Integer
ruotaGioco = InputBox("Ruota di gioco (1-11)" & vbCrLf & _
"1=Bari, 2=Cagliari, 3=Firenze, 4=Genova, 5=Milano" & vbCrLf & _
"6=Napoli, 7=Palermo, 8=Roma, 9=Torino, 10=Venezia, 11=Nazionale", , ruotaSpia)

If ruotaGioco < 1 Or ruotaGioco > 11 Then
MsgBox "Ruota non valida!"
GoTo CleanExit
End If

Dim numeroSpia As Integer
numeroSpia = InputBox("Numero Spia (1-90)", , 82)

If numeroSpia < 1 Or numeroSpia > 90 Then
MsgBox "Numero non valido!"
GoTo CleanExit
End If

Dim colpiGioco As Integer
colpiGioco = InputBox("Numero colpi di gioco", , 18)

If colpiGioco < 1 Then
MsgBox "Numero colpi non valido!"
GoTo CleanExit
End If

Dim sorte As Integer
sorte = CInt(InputBox("Quale sorte vuoi considerare (1-3)" & vbCrLf & _
"1=Ambata, 2=Ambo, 3=Terno", "Sorte", 1))

If sorte < 1 Or sorte > 3 Then
MsgBox "Sorte non valida!"
GoTo CleanExit
End If

' Input numero estrazioni da analizzare
Dim numEstrazioni As Long
numEstrazioni = CLng(InputBox("Numero di estrazioni da analizzare" & vbCrLf & _
"(Suggerito: 456 estrazioni = 3 anni)", , 456))

If numEstrazioni < 1 Then
MsgBox "Numero estrazioni non valido!"
GoTo CleanExit
End If

' Ottieni colonne per entrambe le ruote
Dim colSpia_Inizio As Integer, colSpia_Fine As Integer
Dim colGioco_Inizio As Integer, colGioco_Fine As Integer

' Colonne ruota spia
GetColonneRuota ruotaSpia, colSpia_Inizio, colSpia_Fine

' Colonne ruota gioco
GetColonneRuota ruotaGioco, colGioco_Inizio, colGioco_Fine

' Cerca ultima riga
Dim ultimaRiga As Long
ultimaRiga = ws.Cells(ws.Rows.count, "C").End(xlUp).row

' Imposta riga iniziale in base al numero di estrazioni richiesto
Dim inizioAnalisi As Long

' Se è richiesta la Nazionale, verifica che non si vada prima del 2005
If ruotaSpia = 11 Or ruotaGioco = 11 Then
Dim rigaNazionale As Long
rigaNazionale = Application.WorksheetFunction.Match(DateValue("1/1/2005"), _
ws.Range("C9:C" & ultimaRiga), 1) + 8

inizioAnalisi = Application.WorksheetFunction.Max(rigaNazionale, ultimaRiga - numEstrazioni + 1)
Else
inizioAnalisi = ultimaRiga - numEstrazioni + 1
If inizioAnalisi < 9 Then inizioAnalisi = 9
End If

' Array per statistiche
Dim statCoppie(1 To 90, 1 To 90) As Long
Dim ritardoCoppie(1 To 90) As Long
Dim presenzePosizioni(1 To 90, 1 To 5) As Long

' Inizializzazione array
Dim i As Integer, j As Integer, k As Integer
For i = 1 To 90
ritardoCoppie(i) = 0
For j = 1 To 90
statCoppie(i, j) = 0
Next j
For k = 1 To 5
presenzePosizioni(i, k) = 0
Next k
Next i

' Contatori
Dim numCasiTrovati As Long
numCasiTrovati = 0

' Ricerca
Dim riga As Long
For riga = inizioAnalisi To ultimaRiga
' Progress update ogni 100 righe
If riga Mod 100 = 0 Then
Application.StatusBar = "Analisi riga " & riga & " di " & ultimaRiga & " - Casi trovati: " & numCasiTrovati
DoEvents
End If

' Verifica presenza numero spia
If VerificaNumero(ws, riga, numeroSpia, colSpia_Inizio, colSpia_Fine) Then
numCasiTrovati = numCasiTrovati + 1

' Array per tenere traccia dei numeri trovati in tutti i colpi
Dim numeriTrovatiTotali() As Integer
ReDim numeriTrovatiTotali(1 To 90)
Dim numTotali As Integer
numTotali = 0

' Analizza i colpi successivi per trovare coppie
Dim colpo As Long
For colpo = 1 To colpiGioco
If riga + colpo <= ultimaRiga Then
' Leggi numeri della ruota di gioco per questo colpo
Dim numeriColpo() As Integer
Dim numTrovati As Integer
numTrovati = GetNumeriEstrazione(ws, riga + colpo, colGioco_Inizio, colGioco_Fine, numeriColpo)

' Aggiungi i numeri trovati all'array totale e aggiorna presenze posizioni
Dim n As Integer
For n = 1 To numTrovati
Dim num As Integer
num = numeriColpo(n)
numeriTrovatiTotali(num) = 1
presenzePosizioni(num, n) = presenzePosizioni(num, n) + 1
Next n
End If
Next colpo

' Aggiorna statistiche per tutte le possibili coppie dei numeri trovati
For i = 1 To 90
If numeriTrovatiTotali(i) = 1 Then
For j = i + 1 To 90
If numeriTrovatiTotali(j) = 1 Then
statCoppie(i, j) = statCoppie(i, j) + 1
End If
Next j
End If
Next i

' Calcola ritardi per questo caso
For i = 1 To 89
For j = i + 1 To 90
Dim ritardoCorrente As Long
ritardoCorrente = CalcolaRitardoCoppia(ws, ultimaRiga, i, j, colGioco_Inizio, colGioco_Fine)
' Aggiorna il ritardo massimo per entrambi i numeri della coppia
If ritardoCorrente > ritardoCoppie(i) Then ritardoCoppie(i) = ritardoCorrente
If ritardoCorrente > ritardoCoppie(j) Then ritardoCoppie(j) = ritardoCorrente
Next j
Next i
End If
Next riga

' Calcola il ritardo della spia
Dim ritardoSpia As Long
ritardoSpia = CalcolaRitardoNumero(ws, ultimaRiga, numeroSpia, colSpia_Inizio, colSpia_Fine, ultimaRiga)

' Prepara array per i risultati
Dim numeriFrequenti(1 To 15, 1 To 7) As Variant
Call TrovaNumeriFrequenti(statCoppie, ritardoCoppie, presenzePosizioni, numCasiTrovati, _
numeriFrequenti, ws, ultimaRiga, colGioco_Inizio, colGioco_Fine)

' Salva risultati
Call SalvaReport(wsDest, numeriFrequenti, numeroSpia, numCasiTrovati, _
ruotaSpia, ruotaGioco, colpiGioco, ritardoSpia, sorte, _
inizioAnalisi, ultimaRiga, ws, presenzePosizioni)

' Messaggio completamento
MsgBox "Analisi completata!" & vbCrLf & _
"Trovati " & numCasiTrovati & " casi della spia " & numeroSpia & vbCrLf & _
"Ritardo attuale: " & ritardoSpia & vbCrLf & _
"I risultati sono stati salvati nel foglio 'Missione'.", vbInformation

CleanExit:
' Pulizia
Application.StatusBar = False
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Exit Sub

ErrorHandler:
MsgBox "Errore: " & Err.Description & vbCrLf & _
"Linea: " & Erl, vbCritical
Resume CleanExit
End Sub


Private Function Format2(ByVal numero As Long) As String
Format2 = right$("00" & CStr(numero), 2)
End Function

Private Function OttieniNomeRuota(ByVal indice As Integer) As String
Select Case indice
Case 1: OttieniNomeRuota = "Bari"
Case 2: OttieniNomeRuota = "Cagliari"
Case 3: OttieniNomeRuota = "Firenze"
Case 4: OttieniNomeRuota = "Genova"
Case 5: OttieniNomeRuota = "Milano"
Case 6: OttieniNomeRuota = "Napoli"
Case 7: OttieniNomeRuota = "Palermo"
Case 8: OttieniNomeRuota = "Roma"
Case 9: OttieniNomeRuota = "Torino"
Case 10: OttieniNomeRuota = "Venezia"
Case 11: OttieniNomeRuota = "Nazionale"
Case Else: OttieniNomeRuota = "Ruota non valida"
End Select
End Function

Private Function OttieniNomeSorte(ByVal sorte As Integer) As String
Select Case sorte
Case 1: OttieniNomeSorte = "Ambata"
Case 2: OttieniNomeSorte = "Ambo"
Case 3: OttieniNomeSorte = "Terno"
Case Else: OttieniNomeSorte = "Non specificata"
End Select
End Function

Private Sub GetColonneRuota(ByVal ruota As Integer, ByRef colInizio As Integer, ByRef colFine As Integer)
Select Case ruota
Case 1: colInizio = 4: colFine = 8 ' Bari
Case 2: colInizio = 9: colFine = 13 ' Cagliari
Case 3: colInizio = 14: colFine = 18 ' Firenze
Case 4: colInizio = 19: colFine = 23 ' Genova
Case 5: colInizio = 24: colFine = 28 ' Milano
Case 6: colInizio = 29: colFine = 33 ' Napoli
Case 7: colInizio = 34: colFine = 38 ' Palermo
Case 8: colInizio = 39: colFine = 43 ' Roma
Case 9: colInizio = 44: colFine = 48 ' Torino
Case 10: colInizio = 49: colFine = 53 ' Venezia
Case 11: colInizio = 54: colFine = 58 ' Nazionale
End Select
End Sub

Private Function GetNumeriEstrazione(ByRef ws As Worksheet, ByVal riga As Long, _
ByVal colInizio As Integer, ByVal colFine As Integer, _
ByRef numeriTrovati() As Integer) As Integer
Dim numeri(1 To 5) As Integer
Dim count As Integer
count = 0

' Inizializzazione esplicita
Dim i As Integer
For i = 1 To 5
numeri(i) = 0
Next i

Dim col As Integer
For col = colInizio To colFine
Dim valoreCell As Variant
valoreCell = ws.Cells(riga, col).Value

If IsNumeric(valoreCell) Then
count = count + 1
If count <= 5 Then
numeri(count) = CInt(valoreCell)
End If
End If
Next col

If count > 0 Then
ReDim numeriTrovati(1 To count)
For i = 1 To count
numeriTrovati(i) = numeri(i)
Next i
Else
ReDim numeriTrovati(1 To 1)
numeriTrovati(1) = 0
End If

GetNumeriEstrazione = count
End Function

Private Function VerificaNumero(ByRef ws As Worksheet, ByVal riga As Long, _
ByVal numero As Integer, ByVal colInizio As Integer, _
ByVal colFine As Integer) As Boolean
Dim col As Integer
For col = colInizio To colFine
Dim valoreCell As Variant
valoreCell = ws.Cells(riga, col).Value

If IsNumeric(valoreCell) Then
If CInt(valoreCell) = numero Then
VerificaNumero = True
Exit Function
End If
End If
Next col

VerificaNumero = False
End Function

Private Function CalcolaRitardoNumero(ByRef ws As Worksheet, ByVal rigaInizio As Long, _
ByVal numero As Integer, ByVal colInizio As Integer, _
ByVal colFine As Integer, ByVal ultimaRiga As Long) As Long
Dim ritardo As Long
ritardo = 0

Dim riga As Long
For riga = rigaInizio + 1 To ultimaRiga
ritardo = ritardo + 1
If VerificaNumero(ws, riga, numero, colInizio, colFine) Then Exit For
Next riga

CalcolaRitardoNumero = ritardo
End Function

Private Function CalcolaRitardoCoppia(ByRef ws As Worksheet, ByVal ultimaRiga As Long, _
ByVal num1 As Integer, ByVal num2 As Integer, _
ByVal colInizio As Integer, ByVal colFine As Integer) As Long
Dim ritardo As Long
ritardo = 0

' Cerca all'indietro partendo dall'ultima riga
Dim riga As Long
For riga = ultimaRiga To 1 Step -1
' Se trova almeno uno dei due numeri, esce dal ciclo
If VerificaNumero(ws, riga, num1, colInizio, colFine) Or _
VerificaNumero(ws, riga, num2, colInizio, colFine) Then
Exit For
End If
ritardo = ritardo + 1
Next riga

CalcolaRitardoCoppia = ritardo
End Function

Private Function GetEstrattiCoppia(ByRef ws As Worksheet, ByVal riga As Long, _
ByVal num1 As Integer, ByVal num2 As Integer, _
ByVal colInizio As Integer, ByVal colFine As Integer) As String
' Verifica la presenza dei numeri nella riga specificata
Dim trovato1 As Boolean, trovato2 As Boolean
trovato1 = False
trovato2 = False

Dim col As Integer
For col = colInizio To colFine
Dim valoreCell As Variant
valoreCell = ws.Cells(riga, col).Value

If IsNumeric(valoreCell) Then
If CInt(valoreCell) = num1 Then trovato1 = True
If CInt(valoreCell) = num2 Then trovato2 = True
End If
Next col

' Formatta il risultato in base ai numeri trovati
If trovato1 And trovato2 Then
GetEstrattiCoppia = "CA." & Format2(num1) & "." & Format2(num2)
ElseIf trovato1 Then
GetEstrattiCoppia = "CA..." & Format2(num1) & ".."
ElseIf trovato2 Then
GetEstrattiCoppia = "CA..." & Format2(num2) & ".."
Else
GetEstrattiCoppia = "CA....."
End If
End Function

Private Function FormatPresenzePosizioni(ByVal num1 As Integer, ByVal num2 As Integer, _
ByRef presenzePosizioni() As Long) As String
' Formatta presenze per il primo numero
Dim str1 As String
str1 = Format2(presenzePosizioni(num1, 1)) & "[" & _
Format2(presenzePosizioni(num1, 1)) & "." & _
Format2(presenzePosizioni(num1, 2)) & "." & _
Format2(presenzePosizioni(num1, 3)) & "." & _
Format2(presenzePosizioni(num1, 4)) & "." & _
Format2(presenzePosizioni(num1, 5)) & "]"

' Formatta presenze per il secondo numero
Dim str2 As String
str2 = Format2(presenzePosizioni(num2, 1)) & "[" & _
Format2(presenzePosizioni(num2, 1)) & "." & _
Format2(presenzePosizioni(num2, 2)) & "." & _
Format2(presenzePosizioni(num2, 3)) & "." & _
Format2(presenzePosizioni(num2, 4)) & "." & _
Format2(presenzePosizioni(num2, 5)) & "]"

' Combina le due stringhe
FormatPresenzePosizioni = str1 & " - " & str2
End Function

Private Function TrovaUltimoEsito(ByRef ws As Worksheet, ByVal ultimaRiga As Long, _
ByVal num1 As Integer, ByVal num2 As Integer, _
ByVal colInizio As Integer, ByVal colFine As Integer) As ultimoEsito
Dim riga As Long
Dim trovato1 As Boolean, trovato2 As Boolean
Dim risultato As ultimoEsito

' Cerca dall'ultima riga verso l'alto
For riga = ultimaRiga To 1 Step -1
trovato1 = False
trovato2 = False

' Verifica presenza numeri
Dim col As Integer
For col = colInizio To colFine
Dim valoreCell As Variant
valoreCell = ws.Cells(riga, col).Value

If IsNumeric(valoreCell) Then
If CInt(valoreCell) = num1 Then trovato1 = True
If CInt(valoreCell) = num2 Then trovato2 = True
End If
Next col

' Se trovato almeno un numero, salva la data
If trovato1 Or trovato2 Then
risultato.Data = ws.Cells(riga, "C").Value
risultato.Codice = Format(ws.Cells(riga, "A").Value, "00000")
risultato.Concorso = Format(ws.Cells(riga, "B").Value, "000")
Exit For
End If
Next riga

TrovaUltimoEsito = risultato
End Function

Private Sub TrovaNumeriFrequenti(ByRef statCoppie() As Long, _
ByRef ritardoCoppie() As Long, _
ByRef presenzePosizioni() As Long, _
ByVal numCasiTrovati As Long, _
ByRef numeriFrequenti() As Variant, _
ByRef ws As Worksheet, _
ByVal ultimaRiga As Long, _
ByVal colInizio As Integer, _
ByVal colFine As Integer)

Dim coppieArray(1 To 4005, 1 To 7) As Variant ' Array per tutte le possibili coppie
Dim coppiaCont As Long
coppiaCont = 0

' Inizializzazione coppieArray
Dim i As Integer, j As Integer
For i = 1 To 4005
For j = 1 To 7
coppieArray(i, j) = 0
Next j
Next i

' Inizializzazione numeriFrequenti
For i = 1 To 15
For j = 1 To 7
numeriFrequenti(i, j) = 0
Next j
Next i

' Genera tutte le possibili coppie e calcola le loro statistiche
For i = 1 To 89
For j = i + 1 To 90
coppiaCont = coppiaCont + 1

' Calcola la frequenza effettiva della coppia
Dim freq As Long
freq = statCoppie(i, j)
If freq > 0 Then
coppieArray(coppiaCont, 1) = i ' Primo numero della coppia
coppieArray(coppiaCont, 2) = j ' Secondo numero della coppia
coppieArray(coppiaCont, 3) = freq ' Frequenza della coppia

' Calcola il ritardo serie corrente
Dim ritardoSerie As Long
ritardoSerie = CalcolaRitardoCoppia(ws, ultimaRiga, i, j, colInizio, colFine)
coppieArray(coppiaCont, 4) = ritardoSerie

' Il ritardo max è il massimo dei ritardi serie incontrati
Dim ritardoMax As Long
ritardoMax = Application.WorksheetFunction.Max(ritardoCoppie(i), ritardoCoppie(j))
coppieArray(coppiaCont, 5) = ritardoMax

coppieArray(coppiaCont, 6) = IIf(numCasiTrovati > 0, (freq / numCasiTrovati) * 100, 0)
coppieArray(coppiaCont, 7) = "in corso"
End If
Next j
Next i

' Ordina per frequenza (bubble sort)
Dim k As Integer, temp As Variant
Dim scambio As Boolean
Do
scambio = False
For i = 1 To coppiaCont - 1
If coppieArray(i, 3) < coppieArray(i + 1, 3) Then
' Scambia le righe
For k = 1 To 7
temp = coppieArray(i, k)
coppieArray(i, k) = coppieArray(i + 1, k)
coppieArray(i + 1, k) = temp
Next k
scambio = True
End If
Next i
Loop While scambio

' Copia i primi 15 risultati (solo se hanno frequenza > 0)
Dim risultatiCopiati As Integer
risultatiCopiati = 0
i = 1

Do While risultatiCopiati < 15 And i <= coppiaCont
If coppieArray(i, 3) > 0 Then
risultatiCopiati = risultatiCopiati + 1
For j = 1 To 7
numeriFrequenti(risultatiCopiati, j) = coppieArray(i, j)
Next j
End If
i = i + 1
Loop
End Sub

Private Sub SalvaReport(ByRef wsDest As Worksheet, ByRef numeriFrequenti() As Variant, _
ByVal numeroSpia As Integer, ByVal numCasiTrovati As Long, _
ByVal ruotaSpia As Integer, ByVal ruotaGioco As Integer, _
ByVal colpiGioco As Integer, ByVal ritardoSpia As Long, _
ByVal sorte As Integer, ByVal inizioAnalisi As Long, _
ByVal ultimaRiga As Long, ByRef wsArchivio As Worksheet, _
ByRef presenzePosizioni() As Long)

Dim i As Integer
Dim riga As Long

' Intestazione
With wsDest.Range("A1")
.Value = "*** FUTURO 2 *** Mission Impossible *** Project By Batter © *** Script List By Mike58 ***"
.Font.Bold = True
.Font.Size = 14
.HorizontalAlignment = xlCenter
End With
wsDest.Range("A1:K1").Merge

' Info spia e status
With wsDest.Cells(3, 1)
.Value = "Spia " & numeroSpia & " su " & OttieniNomeRuota(ruotaSpia) & " - Ritarda da: " & ritardoSpia
.Font.Bold = True
End With

With wsDest.Cells(4, 1)
.Value = IIf(ritardoSpia < colpiGioco, "SPIA ATTIVA", "SPIA NON ATTIVA")
.Font.Bold = True
.Font.ColorIndex = 3 ' Verde
End With

' Info analisi
With wsDest.Cells(5, 1)
.Value = "Coppie più frequenti entro " & colpiGioco & " colpi sulla ruota di " & _
OttieniNomeRuota(ruotaGioco) & " per sorte di " & OttieniNomeSorte(sorte)
.Font.Bold = True
End With

With wsDest.Cells(6, 1)
.Value = "Casi trovati: " & numCasiTrovati & _
" dal " & Format(wsArchivio.Cells(inizioAnalisi, "C").Value, "dd/mm/yyyy") & _
" al " & Format(wsArchivio.Cells(ultimaRiga, "C").Value, "dd/mm/yyyy")
.Font.Bold = True
End With

' Intestazioni tabella
Dim titoli(1 To 11) As String
titoli(1) = "Casi"
titoli(2) = "Numeri"
titoli(3) = "Presenze"
titoli(4) = "esito %"
titoli(5) = "ret_estratti fin-colpi"
titoli(6) = "colpo"
titoli(7) = "Data esito ultimo"
titoli(8) = "Ritardo serie"
titoli(9) = "Presenza serie"
titoli(10) = "Rit. Max"
titoli(11) = "Pres ambate singole e in Posizioni"

Dim rngHeader As Range
Set rngHeader = wsDest.Range("A8:K8")
rngHeader.Value = titoli
With rngHeader
.Font.Bold = True
.Interior.Color = RGB(200, 200, 200)
.Borders.LineStyle = xlContinuous
.HorizontalAlignment = xlCenter
End With

' Ottieni colonne per la ruota di gioco
Dim colGioco_Inizio As Integer, colGioco_Fine As Integer
GetColonneRuota ruotaGioco, colGioco_Inizio, colGioco_Fine

' Dati
riga = 9
For i = 1 To 15
If numeriFrequenti(i, 3) > 0 Then ' Se ha frequenza > 0
With wsDest
.Cells(riga, 1).Value = i
.Cells(riga, 2).Value = Format2(numeriFrequenti(i, 1)) & "." & Format2(numeriFrequenti(i, 2))
.Cells(riga, 3).Value = numeriFrequenti(i, 3)
.Cells(riga, 4).Value = Format(numeriFrequenti(i, 6), "0.00") & "%"
.Cells(riga, 5).Value = GetEstrattiCoppia(wsArchivio, ultimaRiga, _
numeriFrequenti(i, 1), _
numeriFrequenti(i, 2), _
colGioco_Inizio, colGioco_Fine)
.Cells(riga, 6).Value = CalcolaRitardoCoppia(wsArchivio, ultimaRiga, _
numeriFrequenti(i, 1), _
numeriFrequenti(i, 2), _
colGioco_Inizio, colGioco_Fine)

' Trova e formatta la data dell'ultimo esito
Dim ultimoEsito As ultimoEsito
ultimoEsito = TrovaUltimoEsito(wsArchivio, ultimaRiga, _
numeriFrequenti(i, 1), _
numeriFrequenti(i, 2), _
colGioco_Inizio, colGioco_Fine)

If ultimoEsito.Data <> 0 Then
.Cells(riga, 7).Value = "[" & ultimoEsito.Codice & "][" & ultimoEsito.Concorso & "]" & _
Format(ultimoEsito.Data, " dd.mm.yyyy")
.Cells(riga, 7).NumberFormat = "@" ' Formato testo per mantenere lo zero iniziale
Else
.Cells(riga, 7).Value = "in corso"
End If

.Cells(riga, 8).Value = Format2(numeriFrequenti(i, 4)) ' Ritardo serie
.Cells(riga, 9).Value = numeriFrequenti(i, 3) ' Presenza serie
.Cells(riga, 10).Value = Format2(numeriFrequenti(i, 5)) ' Ritardo Max

' Aggiunge le presenze singole e in posizioni
.Cells(riga, 11).Value = FormatPresenzePosizioni(numeriFrequenti(i, 1), _
numeriFrequenti(i, 2), _
presenzePosizioni)

' Formattazione riga
With .Range("A" & riga & ":K" & riga)
.Borders.LineStyle = xlContinuous
If i Mod 2 = 0 Then .Interior.Color = RGB(240, 240, 240)
.HorizontalAlignment = xlCenter
End With

' Allineamenti specifici
.Cells(riga, 5).HorizontalAlignment = xlLeft
.Cells(riga, 11).HorizontalAlignment = xlLeft
End With
riga = riga + 1
End If
Next i

' Footer
With wsDest.Cells(riga + 2, 1)
.Value = "********* Tabella List by Mike58 **********"
.Font.Bold = True
.HorizontalAlignment = xlCenter
End With

With wsDest.Cells(riga + 3, 1)
.Value = "Report generato il " & Format(Now, "dd/mm/yyyy hh:mm:ss")
.Font.Italic = True
End With

' Formattazione finale
wsDest.Columns("A:K").AutoFit

' Seleziona prima cella
wsDest.Range("A1").Select
End Sub


Questo è il suo output:

1730549486018.png

E questo, con gli stessi parametri, è quello dello Script Futuro2:

1730549542516.png

Come puoi vedere le differenze sono sostanziali. Le AI hanno molti limiti, che aumentano quando a porle le domande sono persone confuse come me. Poi prendono tutto alla lettera, quindi occorre fare molta attenzione alle parole usate per comunicare con loro.
Possono essere utili per compiti semplici per chi, come me, non ricorda ssolutamente nulla di Excel. Spesso dopo aperto, mi devo ridocumentare per capire, per un po', come fare cosa. Se fosse solo per me lo lascerei così, giusto o sbagliato che sia, ma visto che altri vorrebbero usarlo, non mi dispiacerebbe dar loro qualcosa di funzionante. Quindi grazie per l'interessamento.

Comunque se vuoi vedere il foglio si chiama Missione: https://mega.nz/file/yM4wEbAY#alqfqVelLgxuq5j7zAYxpd6neBTIhajb6j9FIX8uY68
Saluti
Baciccia
 
Come puoi vedere le differenze sono sostanziali. Le AI hanno molti limiti, che aumentano quando a porle le domande sono persone confuse come me. Poi prendono tutto alla lettera, quindi occorre fare molta attenzione alle parole usate per comunicare con loro.
Possono essere utili per compiti semplici per chi, come me, non ricorda assolutamente nulla di Excel. Spesso dopo aperto, mi devo ridocumentare per capire, per un po', come fare cosa. Se fosse solo per me lo lascerei così, giusto o sbagliato che sia, ma visto che altri vorrebbero usarlo, non mi dispiacerebbe dar loro qualcosa di funzionante.
Buona sera a tutte/i.

Effettivamente si tratta di cose molto diverse.

Una piccola premessa aperto ed abilitato il foglio excel aveva risultati un pochino diversi.

Immessi i valori e fatto ricalcolare ... questi valori si sono allineati.

Ho scritto questo codice che è "bloccato" per allinearsi all'esempio proposto.

NON E' OTTIMIZZATO e NON VA eseguito/modificato per altri scopi diversi da questo.

Quanto produce è sostanzialmente allineato a quanto proposto.

Non ho inserito i ritardi ne tantomeno le percentuali, anche perché,

in un contesto simile sono difficili da interpretare prima ancora di essere utili.

Codice:
Option Explicit
Sub Main
   Dim Ini,Fin,Es,Nu(2),Ru(3),I,A,B,M,F,Mu(2)
   Ini = DataEstrToIdEstr(24,05,2024) : Fin = DataEstrToIdEstr(31,10,2024)
   Nu(1) = 20
   Ru(1) = BA_
   Ru(2) = NA_
   Ru(3) = PA_
   Scrivi "Numero analizzato: " & Nu(1)
   Scrivi "Ruote analizzate: ",0,0
   For I = 1 To 3
      Scrivi SiglaRuota(Ru(I)) & Space(1),0,0
   Next
   Scrivi
   Scrivi "Periodo analizzato: " & DataEstrazione(Ini) & " - " & DataEstrazione(Fin)
   Scrivi
   Scrivi "Presenze del Numero  " & Nu(1),True
   Scrivi
   'Estratto
   For I = 1 To 3
      Scrivi SiglaRuota(Ru(I)) & " Pres " & EstrattoFrequenza(Ru(I),Nu(1),Ini,Fin)
   Next
   'Ambo
   Scrivi : Scrivi "Ambi più Presenti",1 : Scrivi
   For I = 1 To 3
      ReDim Bi(89,90) : M = 0
      For A = 1 To 90
         Nu(1) = 20 : Nu(2) = A
         F = AmboFrequenza(Ru(I),Nu(1),Nu(2),Ini,Fin)
         If Nu(2) < Nu(1) Then Bi(Nu(2),Nu(1)) = F Else Bi(Nu(1),Nu(2)) = F
         If M < F Then M = F
      Next
      OrdinaMatrice Bi,1
      For A = 1 To 89
         For B = A + 1 To 90
            If Bi(A,B) = M Then
               Scrivi SiglaRuota(Ru(I)) & " ",0,0
               Scrivi Format2(Nu(1)) & "." & Format2(B) & " Pres " & Bi(A,B)
            End If
         Next
      Next
      Scrivi
   Next
   'Top Ambi
   ReDim Bi(89,90)
   For B = 1 To 90
      Nu(1) = 20 : Nu(2) = B
      F = SerieFreq(Ini,Fin,Nu,Ru,2)
      If Nu(2) < Nu(1) Then Bi(Nu(2),Nu(1)) = F Else Bi(Nu(1),Nu(2)) = F
      If M < F Then M = F
   Next
   OrdinaMatrice Bi,1
   M = 0
   'Ambi Ruote UNITE
   For I = 1 To 3
      Scrivi SiglaRuota(Ru(I)) & " ",1,0
   Next
   Scrivi " UNITE",1
   Scrivi
   For A = 1 To 89 : Mu(1) = A
      For B = A + 1 To 90 : Mu(2) = B
         F = SerieFreq(Ini,Fin,Mu,Ru,2)
         Bi(A,B) = F
         If F > M Then M = F
      Next
   Next
   For I = M To M - 2 Step - 1
      For A = 1 To 89
         For B = A + 1 To 90
            If A = 20 Or B = 20 Then
               If Bi(A,B) = I Then
                  Scrivi Format2(A) & "." & Format2(B) & " Pres " & Bi(A,B)
               End If
            End If
         Next
      Next
   Next
End Sub

:)
 
Questa è la macro, con mille problemi ancora da risolvere

Option Explicit

Private Type ultimoEsito
Data As Date
Codice As String
Concorso As String
End Type

Public Sub Futuro2Macro()
On Error GoTo ErrorHandler

' Inizializzazione
Dim ws As Worksheet
Dim wsDest As Worksheet
Set ws = ThisWorkbook.Worksheets("Archivio")
Set wsDest = ThisWorkbook.Worksheets("Missione")
wsDest.Cells.Clear

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False

' Input parametri
Dim ruotaSpia As Integer
ruotaSpia = InputBox("Ruota della spia (1-11)" & vbCrLf & _
"1=Bari, 2=Cagliari, 3=Firenze, 4=Genova, 5=Milano" & vbCrLf & _
"6=Napoli, 7=Palermo, 8=Roma, 9=Torino, 10=Venezia, 11=Nazionale", , 1)

If ruotaSpia < 1 Or ruotaSpia > 11 Then
MsgBox "Ruota non valida!"
GoTo CleanExit
End If

Dim ruotaGioco As Integer
ruotaGioco = InputBox("Ruota di gioco (1-11)" & vbCrLf & _
"1=Bari, 2=Cagliari, 3=Firenze, 4=Genova, 5=Milano" & vbCrLf & _
"6=Napoli, 7=Palermo, 8=Roma, 9=Torino, 10=Venezia, 11=Nazionale", , ruotaSpia)

If ruotaGioco < 1 Or ruotaGioco > 11 Then
MsgBox "Ruota non valida!"
GoTo CleanExit
End If

Dim numeroSpia As Integer
numeroSpia = InputBox("Numero Spia (1-90)", , 82)

If numeroSpia < 1 Or numeroSpia > 90 Then
MsgBox "Numero non valido!"
GoTo CleanExit
End If

Dim colpiGioco As Integer
colpiGioco = InputBox("Numero colpi di gioco", , 18)

If colpiGioco < 1 Then
MsgBox "Numero colpi non valido!"
GoTo CleanExit
End If

Dim sorte As Integer
sorte = CInt(InputBox("Quale sorte vuoi considerare (1-3)" & vbCrLf & _
"1=Ambata, 2=Ambo, 3=Terno", "Sorte", 1))

If sorte < 1 Or sorte > 3 Then
MsgBox "Sorte non valida!"
GoTo CleanExit
End If

' Input numero estrazioni da analizzare
Dim numEstrazioni As Long
numEstrazioni = CLng(InputBox("Numero di estrazioni da analizzare" & vbCrLf & _
"(Suggerito: 456 estrazioni = 3 anni)", , 456))

If numEstrazioni < 1 Then
MsgBox "Numero estrazioni non valido!"
GoTo CleanExit
End If

' Ottieni colonne per entrambe le ruote
Dim colSpia_Inizio As Integer, colSpia_Fine As Integer
Dim colGioco_Inizio As Integer, colGioco_Fine As Integer

' Colonne ruota spia
GetColonneRuota ruotaSpia, colSpia_Inizio, colSpia_Fine

' Colonne ruota gioco
GetColonneRuota ruotaGioco, colGioco_Inizio, colGioco_Fine

' Cerca ultima riga
Dim ultimaRiga As Long
ultimaRiga = ws.Cells(ws.Rows.count, "C").End(xlUp).row

' Imposta riga iniziale in base al numero di estrazioni richiesto
Dim inizioAnalisi As Long

' Se è richiesta la Nazionale, verifica che non si vada prima del 2005
If ruotaSpia = 11 Or ruotaGioco = 11 Then
Dim rigaNazionale As Long
rigaNazionale = Application.WorksheetFunction.Match(DateValue("1/1/2005"), _
ws.Range("C9:C" & ultimaRiga), 1) + 8

inizioAnalisi = Application.WorksheetFunction.Max(rigaNazionale, ultimaRiga - numEstrazioni + 1)
Else
inizioAnalisi = ultimaRiga - numEstrazioni + 1
If inizioAnalisi < 9 Then inizioAnalisi = 9
End If

' Array per statistiche
Dim statCoppie(1 To 90, 1 To 90) As Long
Dim ritardoCoppie(1 To 90) As Long
Dim presenzePosizioni(1 To 90, 1 To 5) As Long

' Inizializzazione array
Dim i As Integer, j As Integer, k As Integer
For i = 1 To 90
ritardoCoppie(i) = 0
For j = 1 To 90
statCoppie(i, j) = 0
Next j
For k = 1 To 5
presenzePosizioni(i, k) = 0
Next k
Next i

' Contatori
Dim numCasiTrovati As Long
numCasiTrovati = 0

' Ricerca
Dim riga As Long
For riga = inizioAnalisi To ultimaRiga
' Progress update ogni 100 righe
If riga Mod 100 = 0 Then
Application.StatusBar = "Analisi riga " & riga & " di " & ultimaRiga & " - Casi trovati: " & numCasiTrovati
DoEvents
End If

' Verifica presenza numero spia
If VerificaNumero(ws, riga, numeroSpia, colSpia_Inizio, colSpia_Fine) Then
numCasiTrovati = numCasiTrovati + 1

' Array per tenere traccia dei numeri trovati in tutti i colpi
Dim numeriTrovatiTotali() As Integer
ReDim numeriTrovatiTotali(1 To 90)
Dim numTotali As Integer
numTotali = 0

' Analizza i colpi successivi per trovare coppie
Dim colpo As Long
For colpo = 1 To colpiGioco
If riga + colpo <= ultimaRiga Then
' Leggi numeri della ruota di gioco per questo colpo
Dim numeriColpo() As Integer
Dim numTrovati As Integer
numTrovati = GetNumeriEstrazione(ws, riga + colpo, colGioco_Inizio, colGioco_Fine, numeriColpo)

' Aggiungi i numeri trovati all'array totale e aggiorna presenze posizioni
Dim n As Integer
For n = 1 To numTrovati
Dim num As Integer
num = numeriColpo(n)
numeriTrovatiTotali(num) = 1
presenzePosizioni(num, n) = presenzePosizioni(num, n) + 1
Next n
End If
Next colpo

' Aggiorna statistiche per tutte le possibili coppie dei numeri trovati
For i = 1 To 90
If numeriTrovatiTotali(i) = 1 Then
For j = i + 1 To 90
If numeriTrovatiTotali(j) = 1 Then
statCoppie(i, j) = statCoppie(i, j) + 1
End If
Next j
End If
Next i

' Calcola ritardi per questo caso
For i = 1 To 89
For j = i + 1 To 90
Dim ritardoCorrente As Long
ritardoCorrente = CalcolaRitardoCoppia(ws, ultimaRiga, i, j, colGioco_Inizio, colGioco_Fine)
' Aggiorna il ritardo massimo per entrambi i numeri della coppia
If ritardoCorrente > ritardoCoppie(i) Then ritardoCoppie(i) = ritardoCorrente
If ritardoCorrente > ritardoCoppie(j) Then ritardoCoppie(j) = ritardoCorrente
Next j
Next i
End If
Next riga

' Calcola il ritardo della spia
Dim ritardoSpia As Long
ritardoSpia = CalcolaRitardoNumero(ws, ultimaRiga, numeroSpia, colSpia_Inizio, colSpia_Fine, ultimaRiga)

' Prepara array per i risultati
Dim numeriFrequenti(1 To 15, 1 To 7) As Variant
Call TrovaNumeriFrequenti(statCoppie, ritardoCoppie, presenzePosizioni, numCasiTrovati, _
numeriFrequenti, ws, ultimaRiga, colGioco_Inizio, colGioco_Fine)

' Salva risultati
Call SalvaReport(wsDest, numeriFrequenti, numeroSpia, numCasiTrovati, _
ruotaSpia, ruotaGioco, colpiGioco, ritardoSpia, sorte, _
inizioAnalisi, ultimaRiga, ws, presenzePosizioni)

' Messaggio completamento
MsgBox "Analisi completata!" & vbCrLf & _
"Trovati " & numCasiTrovati & " casi della spia " & numeroSpia & vbCrLf & _
"Ritardo attuale: " & ritardoSpia & vbCrLf & _
"I risultati sono stati salvati nel foglio 'Missione'.", vbInformation

CleanExit:
' Pulizia
Application.StatusBar = False
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Exit Sub

ErrorHandler:
MsgBox "Errore: " & Err.Description & vbCrLf & _
"Linea: " & Erl, vbCritical
Resume CleanExit
End Sub


Private Function Format2(ByVal numero As Long) As String
Format2 = right$("00" & CStr(numero), 2)
End Function

Private Function OttieniNomeRuota(ByVal indice As Integer) As String
Select Case indice
Case 1: OttieniNomeRuota = "Bari"
Case 2: OttieniNomeRuota = "Cagliari"
Case 3: OttieniNomeRuota = "Firenze"
Case 4: OttieniNomeRuota = "Genova"
Case 5: OttieniNomeRuota = "Milano"
Case 6: OttieniNomeRuota = "Napoli"
Case 7: OttieniNomeRuota = "Palermo"
Case 8: OttieniNomeRuota = "Roma"
Case 9: OttieniNomeRuota = "Torino"
Case 10: OttieniNomeRuota = "Venezia"
Case 11: OttieniNomeRuota = "Nazionale"
Case Else: OttieniNomeRuota = "Ruota non valida"
End Select
End Function

Private Function OttieniNomeSorte(ByVal sorte As Integer) As String
Select Case sorte
Case 1: OttieniNomeSorte = "Ambata"
Case 2: OttieniNomeSorte = "Ambo"
Case 3: OttieniNomeSorte = "Terno"
Case Else: OttieniNomeSorte = "Non specificata"
End Select
End Function

Private Sub GetColonneRuota(ByVal ruota As Integer, ByRef colInizio As Integer, ByRef colFine As Integer)
Select Case ruota
Case 1: colInizio = 4: colFine = 8 ' Bari
Case 2: colInizio = 9: colFine = 13 ' Cagliari
Case 3: colInizio = 14: colFine = 18 ' Firenze
Case 4: colInizio = 19: colFine = 23 ' Genova
Case 5: colInizio = 24: colFine = 28 ' Milano
Case 6: colInizio = 29: colFine = 33 ' Napoli
Case 7: colInizio = 34: colFine = 38 ' Palermo
Case 8: colInizio = 39: colFine = 43 ' Roma
Case 9: colInizio = 44: colFine = 48 ' Torino
Case 10: colInizio = 49: colFine = 53 ' Venezia
Case 11: colInizio = 54: colFine = 58 ' Nazionale
End Select
End Sub

Private Function GetNumeriEstrazione(ByRef ws As Worksheet, ByVal riga As Long, _
ByVal colInizio As Integer, ByVal colFine As Integer, _
ByRef numeriTrovati() As Integer) As Integer
Dim numeri(1 To 5) As Integer
Dim count As Integer
count = 0

' Inizializzazione esplicita
Dim i As Integer
For i = 1 To 5
numeri(i) = 0
Next i

Dim col As Integer
For col = colInizio To colFine
Dim valoreCell As Variant
valoreCell = ws.Cells(riga, col).Value

If IsNumeric(valoreCell) Then
count = count + 1
If count <= 5 Then
numeri(count) = CInt(valoreCell)
End If
End If
Next col

If count > 0 Then
ReDim numeriTrovati(1 To count)
For i = 1 To count
numeriTrovati(i) = numeri(i)
Next i
Else
ReDim numeriTrovati(1 To 1)
numeriTrovati(1) = 0
End If

GetNumeriEstrazione = count
End Function

Private Function VerificaNumero(ByRef ws As Worksheet, ByVal riga As Long, _
ByVal numero As Integer, ByVal colInizio As Integer, _
ByVal colFine As Integer) As Boolean
Dim col As Integer
For col = colInizio To colFine
Dim valoreCell As Variant
valoreCell = ws.Cells(riga, col).Value

If IsNumeric(valoreCell) Then
If CInt(valoreCell) = numero Then
VerificaNumero = True
Exit Function
End If
End If
Next col

VerificaNumero = False
End Function

Private Function CalcolaRitardoNumero(ByRef ws As Worksheet, ByVal rigaInizio As Long, _
ByVal numero As Integer, ByVal colInizio As Integer, _
ByVal colFine As Integer, ByVal ultimaRiga As Long) As Long
Dim ritardo As Long
ritardo = 0

Dim riga As Long
For riga = rigaInizio + 1 To ultimaRiga
ritardo = ritardo + 1
If VerificaNumero(ws, riga, numero, colInizio, colFine) Then Exit For
Next riga

CalcolaRitardoNumero = ritardo
End Function

Private Function CalcolaRitardoCoppia(ByRef ws As Worksheet, ByVal ultimaRiga As Long, _
ByVal num1 As Integer, ByVal num2 As Integer, _
ByVal colInizio As Integer, ByVal colFine As Integer) As Long
Dim ritardo As Long
ritardo = 0

' Cerca all'indietro partendo dall'ultima riga
Dim riga As Long
For riga = ultimaRiga To 1 Step -1
' Se trova almeno uno dei due numeri, esce dal ciclo
If VerificaNumero(ws, riga, num1, colInizio, colFine) Or _
VerificaNumero(ws, riga, num2, colInizio, colFine) Then
Exit For
End If
ritardo = ritardo + 1
Next riga

CalcolaRitardoCoppia = ritardo
End Function

Private Function GetEstrattiCoppia(ByRef ws As Worksheet, ByVal riga As Long, _
ByVal num1 As Integer, ByVal num2 As Integer, _
ByVal colInizio As Integer, ByVal colFine As Integer) As String
' Verifica la presenza dei numeri nella riga specificata
Dim trovato1 As Boolean, trovato2 As Boolean
trovato1 = False
trovato2 = False

Dim col As Integer
For col = colInizio To colFine
Dim valoreCell As Variant
valoreCell = ws.Cells(riga, col).Value

If IsNumeric(valoreCell) Then
If CInt(valoreCell) = num1 Then trovato1 = True
If CInt(valoreCell) = num2 Then trovato2 = True
End If
Next col

' Formatta il risultato in base ai numeri trovati
If trovato1 And trovato2 Then
GetEstrattiCoppia = "CA." & Format2(num1) & "." & Format2(num2)
ElseIf trovato1 Then
GetEstrattiCoppia = "CA..." & Format2(num1) & ".."
ElseIf trovato2 Then
GetEstrattiCoppia = "CA..." & Format2(num2) & ".."
Else
GetEstrattiCoppia = "CA....."
End If
End Function

Private Function FormatPresenzePosizioni(ByVal num1 As Integer, ByVal num2 As Integer, _
ByRef presenzePosizioni() As Long) As String
' Formatta presenze per il primo numero
Dim str1 As String
str1 = Format2(presenzePosizioni(num1, 1)) & "[" & _
Format2(presenzePosizioni(num1, 1)) & "." & _
Format2(presenzePosizioni(num1, 2)) & "." & _
Format2(presenzePosizioni(num1, 3)) & "." & _
Format2(presenzePosizioni(num1, 4)) & "." & _
Format2(presenzePosizioni(num1, 5)) & "]"

' Formatta presenze per il secondo numero
Dim str2 As String
str2 = Format2(presenzePosizioni(num2, 1)) & "[" & _
Format2(presenzePosizioni(num2, 1)) & "." & _
Format2(presenzePosizioni(num2, 2)) & "." & _
Format2(presenzePosizioni(num2, 3)) & "." & _
Format2(presenzePosizioni(num2, 4)) & "." & _
Format2(presenzePosizioni(num2, 5)) & "]"

' Combina le due stringhe
FormatPresenzePosizioni = str1 & " - " & str2
End Function

Private Function TrovaUltimoEsito(ByRef ws As Worksheet, ByVal ultimaRiga As Long, _
ByVal num1 As Integer, ByVal num2 As Integer, _
ByVal colInizio As Integer, ByVal colFine As Integer) As ultimoEsito
Dim riga As Long
Dim trovato1 As Boolean, trovato2 As Boolean
Dim risultato As ultimoEsito

' Cerca dall'ultima riga verso l'alto
For riga = ultimaRiga To 1 Step -1
trovato1 = False
trovato2 = False

' Verifica presenza numeri
Dim col As Integer
For col = colInizio To colFine
Dim valoreCell As Variant
valoreCell = ws.Cells(riga, col).Value

If IsNumeric(valoreCell) Then
If CInt(valoreCell) = num1 Then trovato1 = True
If CInt(valoreCell) = num2 Then trovato2 = True
End If
Next col

' Se trovato almeno un numero, salva la data
If trovato1 Or trovato2 Then
risultato.Data = ws.Cells(riga, "C").Value
risultato.Codice = Format(ws.Cells(riga, "A").Value, "00000")
risultato.Concorso = Format(ws.Cells(riga, "B").Value, "000")
Exit For
End If
Next riga

TrovaUltimoEsito = risultato
End Function

Private Sub TrovaNumeriFrequenti(ByRef statCoppie() As Long, _
ByRef ritardoCoppie() As Long, _
ByRef presenzePosizioni() As Long, _
ByVal numCasiTrovati As Long, _
ByRef numeriFrequenti() As Variant, _
ByRef ws As Worksheet, _
ByVal ultimaRiga As Long, _
ByVal colInizio As Integer, _
ByVal colFine As Integer)

Dim coppieArray(1 To 4005, 1 To 7) As Variant ' Array per tutte le possibili coppie
Dim coppiaCont As Long
coppiaCont = 0

' Inizializzazione coppieArray
Dim i As Integer, j As Integer
For i = 1 To 4005
For j = 1 To 7
coppieArray(i, j) = 0
Next j
Next i

' Inizializzazione numeriFrequenti
For i = 1 To 15
For j = 1 To 7
numeriFrequenti(i, j) = 0
Next j
Next i

' Genera tutte le possibili coppie e calcola le loro statistiche
For i = 1 To 89
For j = i + 1 To 90
coppiaCont = coppiaCont + 1

' Calcola la frequenza effettiva della coppia
Dim freq As Long
freq = statCoppie(i, j)
If freq > 0 Then
coppieArray(coppiaCont, 1) = i ' Primo numero della coppia
coppieArray(coppiaCont, 2) = j ' Secondo numero della coppia
coppieArray(coppiaCont, 3) = freq ' Frequenza della coppia

' Calcola il ritardo serie corrente
Dim ritardoSerie As Long
ritardoSerie = CalcolaRitardoCoppia(ws, ultimaRiga, i, j, colInizio, colFine)
coppieArray(coppiaCont, 4) = ritardoSerie

' Il ritardo max è il massimo dei ritardi serie incontrati
Dim ritardoMax As Long
ritardoMax = Application.WorksheetFunction.Max(ritardoCoppie(i), ritardoCoppie(j))
coppieArray(coppiaCont, 5) = ritardoMax

coppieArray(coppiaCont, 6) = IIf(numCasiTrovati > 0, (freq / numCasiTrovati) * 100, 0)
coppieArray(coppiaCont, 7) = "in corso"
End If
Next j
Next i

' Ordina per frequenza (bubble sort)
Dim k As Integer, temp As Variant
Dim scambio As Boolean
Do
scambio = False
For i = 1 To coppiaCont - 1
If coppieArray(i, 3) < coppieArray(i + 1, 3) Then
' Scambia le righe
For k = 1 To 7
temp = coppieArray(i, k)
coppieArray(i, k) = coppieArray(i + 1, k)
coppieArray(i + 1, k) = temp
Next k
scambio = True
End If
Next i
Loop While scambio

' Copia i primi 15 risultati (solo se hanno frequenza > 0)
Dim risultatiCopiati As Integer
risultatiCopiati = 0
i = 1

Do While risultatiCopiati < 15 And i <= coppiaCont
If coppieArray(i, 3) > 0 Then
risultatiCopiati = risultatiCopiati + 1
For j = 1 To 7
numeriFrequenti(risultatiCopiati, j) = coppieArray(i, j)
Next j
End If
i = i + 1
Loop
End Sub

Private Sub SalvaReport(ByRef wsDest As Worksheet, ByRef numeriFrequenti() As Variant, _
ByVal numeroSpia As Integer, ByVal numCasiTrovati As Long, _
ByVal ruotaSpia As Integer, ByVal ruotaGioco As Integer, _
ByVal colpiGioco As Integer, ByVal ritardoSpia As Long, _
ByVal sorte As Integer, ByVal inizioAnalisi As Long, _
ByVal ultimaRiga As Long, ByRef wsArchivio As Worksheet, _
ByRef presenzePosizioni() As Long)

Dim i As Integer
Dim riga As Long

' Intestazione
With wsDest.Range("A1")
.Value = "*** FUTURO 2 *** Mission Impossible *** Project By Batter © *** Script List By Mike58 ***"
.Font.Bold = True
.Font.Size = 14
.HorizontalAlignment = xlCenter
End With
wsDest.Range("A1:K1").Merge

' Info spia e status
With wsDest.Cells(3, 1)
.Value = "Spia " & numeroSpia & " su " & OttieniNomeRuota(ruotaSpia) & " - Ritarda da: " & ritardoSpia
.Font.Bold = True
End With

With wsDest.Cells(4, 1)
.Value = IIf(ritardoSpia < colpiGioco, "SPIA ATTIVA", "SPIA NON ATTIVA")
.Font.Bold = True
.Font.ColorIndex = 3 ' Verde
End With

' Info analisi
With wsDest.Cells(5, 1)
.Value = "Coppie più frequenti entro " & colpiGioco & " colpi sulla ruota di " & _
OttieniNomeRuota(ruotaGioco) & " per sorte di " & OttieniNomeSorte(sorte)
.Font.Bold = True
End With

With wsDest.Cells(6, 1)
.Value = "Casi trovati: " & numCasiTrovati & _
" dal " & Format(wsArchivio.Cells(inizioAnalisi, "C").Value, "dd/mm/yyyy") & _
" al " & Format(wsArchivio.Cells(ultimaRiga, "C").Value, "dd/mm/yyyy")
.Font.Bold = True
End With

' Intestazioni tabella
Dim titoli(1 To 11) As String
titoli(1) = "Casi"
titoli(2) = "Numeri"
titoli(3) = "Presenze"
titoli(4) = "esito %"
titoli(5) = "ret_estratti fin-colpi"
titoli(6) = "colpo"
titoli(7) = "Data esito ultimo"
titoli(8) = "Ritardo serie"
titoli(9) = "Presenza serie"
titoli(10) = "Rit. Max"
titoli(11) = "Pres ambate singole e in Posizioni"

Dim rngHeader As Range
Set rngHeader = wsDest.Range("A8:K8")
rngHeader.Value = titoli
With rngHeader
.Font.Bold = True
.Interior.Color = RGB(200, 200, 200)
.Borders.LineStyle = xlContinuous
.HorizontalAlignment = xlCenter
End With

' Ottieni colonne per la ruota di gioco
Dim colGioco_Inizio As Integer, colGioco_Fine As Integer
GetColonneRuota ruotaGioco, colGioco_Inizio, colGioco_Fine

' Dati
riga = 9
For i = 1 To 15
If numeriFrequenti(i, 3) > 0 Then ' Se ha frequenza > 0
With wsDest
.Cells(riga, 1).Value = i
.Cells(riga, 2).Value = Format2(numeriFrequenti(i, 1)) & "." & Format2(numeriFrequenti(i, 2))
.Cells(riga, 3).Value = numeriFrequenti(i, 3)
.Cells(riga, 4).Value = Format(numeriFrequenti(i, 6), "0.00") & "%"
.Cells(riga, 5).Value = GetEstrattiCoppia(wsArchivio, ultimaRiga, _
numeriFrequenti(i, 1), _
numeriFrequenti(i, 2), _
colGioco_Inizio, colGioco_Fine)
.Cells(riga, 6).Value = CalcolaRitardoCoppia(wsArchivio, ultimaRiga, _
numeriFrequenti(i, 1), _
numeriFrequenti(i, 2), _
colGioco_Inizio, colGioco_Fine)

' Trova e formatta la data dell'ultimo esito
Dim ultimoEsito As ultimoEsito
ultimoEsito = TrovaUltimoEsito(wsArchivio, ultimaRiga, _
numeriFrequenti(i, 1), _
numeriFrequenti(i, 2), _
colGioco_Inizio, colGioco_Fine)

If ultimoEsito.Data <> 0 Then
.Cells(riga, 7).Value = "[" & ultimoEsito.Codice & "][" & ultimoEsito.Concorso & "]" & _
Format(ultimoEsito.Data, " dd.mm.yyyy")
.Cells(riga, 7).NumberFormat = "@" ' Formato testo per mantenere lo zero iniziale
Else
.Cells(riga, 7).Value = "in corso"
End If

.Cells(riga, 8).Value = Format2(numeriFrequenti(i, 4)) ' Ritardo serie
.Cells(riga, 9).Value = numeriFrequenti(i, 3) ' Presenza serie
.Cells(riga, 10).Value = Format2(numeriFrequenti(i, 5)) ' Ritardo Max

' Aggiunge le presenze singole e in posizioni
.Cells(riga, 11).Value = FormatPresenzePosizioni(numeriFrequenti(i, 1), _
numeriFrequenti(i, 2), _
presenzePosizioni)

' Formattazione riga
With .Range("A" & riga & ":K" & riga)
.Borders.LineStyle = xlContinuous
If i Mod 2 = 0 Then .Interior.Color = RGB(240, 240, 240)
.HorizontalAlignment = xlCenter
End With

' Allineamenti specifici
.Cells(riga, 5).HorizontalAlignment = xlLeft
.Cells(riga, 11).HorizontalAlignment = xlLeft
End With
riga = riga + 1
End If
Next i

' Footer
With wsDest.Cells(riga + 2, 1)
.Value = "********* Tabella List by Mike58 **********"
.Font.Bold = True
.HorizontalAlignment = xlCenter
End With

With wsDest.Cells(riga + 3, 1)
.Value = "Report generato il " & Format(Now, "dd/mm/yyyy hh:mm:ss")
.Font.Italic = True
End With

' Formattazione finale
wsDest.Columns("A:K").AutoFit

' Seleziona prima cella
wsDest.Range("A1").Select
End Sub


Questo è il suo output:

Vedi l'allegato 2292497

E questo, con gli stessi parametri, è quello dello Script Futuro2:

Vedi l'allegato 2292498

Come puoi vedere le differenze sono sostanziali. Le AI hanno molti limiti, che aumentano quando a porle le domande sono persone confuse come me. Poi prendono tutto alla lettera, quindi occorre fare molta attenzione alle parole usate per comunicare con loro.
Possono essere utili per compiti semplici per chi, come me, non ricorda ssolutamente nulla di Excel. Spesso dopo aperto, mi devo ridocumentare per capire, per un po', come fare cosa. Se fosse solo per me lo lascerei così, giusto o sbagliato che sia, ma visto che altri vorrebbero usarlo, non mi dispiacerebbe dar loro qualcosa di funzionante. Quindi grazie per l'interessamento.

Comunque se vuoi vedere il foglio si chiama Missione: https://mega.nz/file/yM4wEbAY#alqfqVelLgxuq5j7zAYxpd6neBTIhajb6j9FIX8uY68
Saluti
Baciccia
Ciao Baciccia purtroppo il file non e' piu disponibile
 
Grazie mille Baciccia
ma come si aggiorna l'archivio? o meglio sto leggendo ma e' un po articolato per me.Si potrebbe ovviare a tutta quella procedura diversamente? tanto x semplificarci un po?
Grazie
Si, si potrebbe. Ho anche una macro, di un altro programma, funzionante.
Il problema è che io non sono capace ad adattarla all'archivio.
Come ho già spiegato, faccio con Excel alcune cose, grazie all' Intelligenza Artificiale. Ma, in realtà, quasi sempre, non so esattamente cosa faccio. E, mentre lo faccio, dimentico cosa sto facendo.
Si chiama Degrado Cognitivo.
Ogni tanto riprovo ad adattare la macro, però, finora, l' unica cosa che ho ottenuto e stata quella di cancellare l' intero archivio 😵‍💫.
Non demordo, riproverò... Ma ci credo poco.
Vedremo. Se me ne ricorderò.
Ciao
Baciccia
 
Si, si potrebbe. Ho anche una macro, di un altro programma, funzionante.
Il problema è che io non sono capace ad adattarla all'archivio.
Come ho già spiegato, faccio con Excel alcune cose, grazie all' Intelligenza Artificiale. Ma, in realtà, quasi sempre, non so esattamente cosa faccio. E, mentre lo faccio, dimentico cosa sto facendo.
Si chiama Degrado Cognitivo.
Ogni tanto riprovo ad adattare la macro, però, finora, l' unica cosa che ho ottenuto e stata quella di cancellare l' intero archivio 😵‍💫.
Non demordo, riproverò... Ma ci credo poco.
Vedremo. Se me ne ricorderò.
Ciao
Baciccia
Buongiorno carissimo
sei davvero una persona speciale,io sono un lettore da anni di lottoced ma credo che l'ironia e la simpatia che ti contraddice non l'ho mai vista a nessuno,sei un grande,e scusa se te lo dico sei un genio secondo me ,incasinato ma sempre un genio.
 
Buongiorno carissimo
sei davvero una persona speciale,io sono un lettore da anni di lottoced ma credo che l'ironia e la simpatia che ti contraddice non l'ho mai vista a nessuno,sei un grande,e scusa se te lo dico sei un genio secondo me ,incasinato ma sempre un genio.
Ti ringrazio. Buongustaio!
Però avrei preferito un Obolo, minimo 50.000 euro. Va beh! Se proprio non ce l'hai mandami almeno 50 cent 🙏 .
Non sono un genio, una volta ho provato a sfregare la lampada... Ma non sono uscito!
Come diceva di me il Maestro Manzi (se non sai chi è stato cercalo su Internet era una persona eccezionale)
"Fa quello che può. Quello che non può non lo fa".
Un sorriso è un mondo da esplorare e condividere
Baciccia
 
Sto continuando la mia battaglia sulla Macro Futuro2 con le AI. Tra invereconde ingiurie reciproche, variabili non dichiarate, numeri scambiati per salamini e venduti come Street Food, oltre ad altre cose talmente disgustose che non ne voglio nemmeno accennare...
Sono arrivato a questa strepitosa, inaspettata, conclusione: da cosa ero partito? Cosa volevo ottenere? Boh! E chi se lo ricorda...
Comunque se il 2 è uguale al 20, il nome del cane di mia Zia che si chiama Marzia, è Camillo?
Qualcuno potrebbe dire (cattivone!) che non so cosa voglio. Non è vero, so benissimo cosa voglio. Il fatto è che non ricordo cosa voglio. Ma, poi, voglio qualcosa?
Sempre chiaro come la Coca Cola vi auguro qualsiasi cosa vogliate vi sia augurata
Baciccia
 
Non conosco Futuro2, potresti darmi delucidazioni Su "Missione"cosa voleva intendere su 3/4 uscite di un numero spia in 18 estrazioni?
 
Questa è una delle ricerche per Futuro, che aveva passato Mission:
Inizio Ricerca: dal 7/1/2015
Fine Ricerca: al 28/10/2023

Numero Spia: 82
Sortite: 76
Ruote ricerca: Ca
Ruote in gioco: Ca

Previsione coppie per
Ambate: 44 56

Presenze: 76
positivi: 76(100%)
negativi: 0(0%)
Previsioni in gioco: 0

Ambate vinte: 80 (100%)




sortite:

Estr. n. 8993 del 21/4/2015 Ruota: Ca 82 positivo: E 44 Ca; al 10° C
Estr. n. 8998 del 2/5/2015 Ruota: Ca 82 positivo: E 44 Ca; al 5° C
Estr. n. 9002 del 12/5/2015 Ruota: Ca 82 positivo: E 44 Ca; al 1° C
Estr. n. 9011 del 3/6/2015 Ruota: Ca 82 positivo: E 56 Ca; al 6° C
Estr. n. 9016 del 13/6/2015 Ruota: Ca 82 positivo: E 56 Ca; al 1° C
Estr. n. 9036 del 30/7/2015 Ruota: Ca 82 positivo: E 56 Ca; al 7° C
Estr. n. 9043 del 17/8/2015 Ruota: Ca 82 positivo: E 44 Ca; al 2° C
Estr. n. 9055 del 12/9/2015 Ruota: Ca 82 positivo: E 44 Ca; al 5° C
Estr. n. 9065 del 6/10/2015 Ruota: Ca 82 positivo: E 44 Ca; al 13° C
Estr. n. 9078 del 5/11/2015 Ruota: Ca 82 positivo: E 44 Ca;E 56 Ca; al 2° C
Estr. n. 9104 del 5/1/2016 Ruota: Ca 82 positivo: E 56 Ca; al 3° C
Estr. n. 9158 del 10/5/2016 Ruota: Ca 82 positivo: E 44 Ca; al 13° C
Estr. n. 9240 del 17/11/2016 Ruota: Ca 82 positivo: E 44 Ca;E 56 Ca; al 4° C
Estr. n. 9242 del 22/11/2016 Ruota: Ca 82 positivo: E 44 Ca;E 56 Ca; al 2° C
Estr. n. 9261 del 5/1/2017 Ruota: Ca 82 positivo: E 44 Ca; al 15° C
Estr. n. 9290 del 14/3/2017 Ruota: Ca 82 positivo: E 44 Ca; al 5° C
Estr. n. 9306 del 20/4/2017 Ruota: Ca 82 positivo: E 44 Ca; al 6° C
Estr. n. 9328 del 10/6/2017 Ruota: Ca 82 positivo: E 44 Ca; al 6° C
Estr. n. 9332 del 20/6/2017 Ruota: Ca 82 positivo: E 44 Ca; al 2° C
Estr. n. 9335 del 27/6/2017 Ruota: Ca 82 positivo: E 56 Ca; al 2° C
Estr. n. 9336 del 29/6/2017 Ruota: Ca 82 positivo: E 56 Ca; al 1° C
Estr. n. 9342 del 13/7/2017 Ruota: Ca 82 positivo: E 44 Ca; al 8° C
Estr. n. 9343 del 15/7/2017 Ruota: Ca 82 positivo: E 44 Ca; al 7° C
Estr. n. 9347 del 25/7/2017 Ruota: Ca 82 positivo: E 44 Ca; al 3° C
Estr. n. 9372 del 21/9/2017 Ruota: Ca 82 positivo: E 44 Ca; al 6° C
Estr. n. 9379 del 7/10/2017 Ruota: Ca 82 positivo: E 56 Ca; al 9° C
Estr. n. 9396 del 16/11/2017 Ruota: Ca 82 positivo: E 44 Ca; al 5° C
Estr. n. 9406 del 9/12/2017 Ruota: Ca 82 positivo: E 44 Ca; al 8° C
Estr. n. 9430 del 3/2/2018 Ruota: Ca 82 positivo: E 44 Ca;E 56 Ca; al 5° C
Estr. n. 9444 del 8/3/2018 Ruota: Ca 82 positivo: E 56 Ca; al 5° C
Estr. n. 9461 del 17/4/2018 Ruota: Ca 82 positivo: E 56 Ca; al 16° C
Estr. n. 9470 del 8/5/2018 Ruota: Ca 82 positivo: E 56 Ca; al 7° C
Estr. n. 9479 del 29/5/2018 Ruota: Ca 82 positivo: E 56 Ca; al 17° C
Estr. n. 9484 del 9/6/2018 Ruota: Ca 82 positivo: E 56 Ca; al 12° C
Estr. n. 9574 del 5/1/2019 Ruota: Ca 82 positivo: E 44 Ca; al 10° C
Estr. n. 9603 del 14/3/2019 Ruota: Ca 82 positivo: E 56 Ca; al 15° C
Estr. n. 9616 del 13/4/2019 Ruota: Ca 82 positivo: E 56 Ca; al 2° C
Estr. n. 9626 del 7/5/2019 Ruota: Ca 82 positivo: E 56 Ca; al 3° C
Estr. n. 9646 del 22/6/2019 Ruota: Ca 82 positivo: E 56 Ca; al 1° C
Estr. n. 9661 del 27/7/2019 Ruota: Ca 82 positivo: E 44 Ca; al 2° C
Estr. n. 9671 del 20/8/2019 Ruota: Ca 82 positivo: E 56 Ca; al 15° C
Estr. n. 9676 del 31/8/2019 Ruota: Ca 82 positivo: E 56 Ca; al 10° C
Estr. n. 9690 del 3/10/2019 Ruota: Ca 82 positivo: E 44 Ca; al 15° C
Estr. n. 9693 del 10/10/2019 Ruota: Ca 82 positivo: E 44 Ca; al 12° C
Estr. n. 9710 del 19/11/2019 Ruota: Ca 82 positivo: E 56 Ca; al 1° C
Estr. n. 9736 del 18/1/2020 Ruota: Ca 82 positivo: E 56 Ca; al 9° C
Estr. n. 9799 del 25/7/2020 Ruota: Ca 82 positivo: E 56 Ca; al 1° C
Estr. n. 9811 del 22/8/2020 Ruota: Ca 82 positivo: E 56 Ca; al 7° C
Estr. n. 9816 del 3/9/2020 Ruota: Ca 82 positivo: E 56 Ca; al 2° C
Estr. n. 9863 del 22/12/2020 Ruota: Ca 82 positivo: E 44 Ca; al 2° C
Estr. n. 9865 del 28/12/2020 Ruota: Ca 82 positivo: E 44 Ca; al 9° C
Estr. n. 9872 del 12/1/2021 Ruota: Ca 82 positivo: E 44 Ca; al 2° C
Estr. n. 9922 del 8/5/2021 Ruota: Ca 82 positivo: E 56 Ca; al 6° C
Estr. n. 9925 del 15/5/2021 Ruota: Ca 82 positivo: E 56 Ca; al 3° C
Estr. n. 9926 del 18/5/2021 Ruota: Ca 82 positivo: E 56 Ca; al 2° C
Estr. n. 9931 del 29/5/2021 Ruota: Ca 82 positivo: E 56 Ca; al 5° C
Estr. n. 9980 del 21/9/2021 Ruota: Ca 82 positivo: E 44 Ca; al 5° C
Estr. n. 9982 del 25/9/2021 Ruota: Ca 82 positivo: E 44 Ca; al 3° C
Estr. n. 9992 del 19/10/2021 Ruota: Ca 82 positivo: E 44 Ca; al 1° C
Estr. n. 10018 del 18/12/2021 Ruota: Ca 82 positivo: E 56 Ca; al 6° C
Estr. n. 10022 del 28/12/2021 Ruota: Ca 82 positivo: E 56 Ca; al 2° C
Estr. n. 10044 del 17/2/2022 Ruota: Ca 82 positivo: E 44 Ca; al 2° C
Estr. n. 10047 del 24/2/2022 Ruota: Ca 82 positivo: E 56 Ca; al 1° C
Estr. n. 10076 del 3/5/2022 Ruota: Ca 82 positivo: E 44 Ca; al 5° C
Estr. n. 10122 del 18/8/2022 Ruota: Ca 82 positivo: E 56 Ca; al 5° C
Estr. n. 10136 del 20/9/2022 Ruota: Ca 82 positivo: E 56 Ca; al 9° C
Estr. n. 10184 del 10/1/2023 Ruota: Ca 82 positivo: E 56 Ca; al 2° C
Estr. n. 10190 del 24/1/2023 Ruota: Ca 82 positivo: E 44 Ca; al 2° C
Estr. n. 10201 del 18/2/2023 Ruota: Ca 82 positivo: E 56 Ca; al 15° C
Estr. n. 10209 del 9/3/2023 Ruota: Ca 82 positivo: E 56 Ca; al 7° C
Estr. n. 10215 del 23/3/2023 Ruota: Ca 82 positivo: E 56 Ca; al 1° C
Estr. n. 10251 del 15/6/2023 Ruota: Ca 82 positivo: E 44 Ca; al 13° C
Estr. n. 10308 del 28/9/2023 Ruota: Ca 82 positivo: E 56 Ca; al 14° C
Estr. n. 10309 del 29/9/2023 Ruota: Ca 82 positivo: E 56 Ca; al 13° C
Estr. n. 10313 del 6/10/2023 Ruota: Ca 82 positivo: E 56 Ca; al 9° C
Estr. n. 10318 del 14/10/2023 Ruota: Ca 82 positivo: E 56 Ca; al 4° C
 
Questa è una delle ricerche per Futuro, che aveva passato Mission:
Inizio Ricerca: dal 7/1/2015
Fine Ricerca: al 28/10/2023

Numero Spia: 82
Sortite: 76
Ruote ricerca: Ca
Ruote in gioco: Ca

Previsione coppie per
Ambate: 44 56

Presenze: 76
positivi: 76(100%)
negativi: 0(0%)
Previsioni in gioco: 0

Ambate vinte: 80 (100%)




sortite:

Estr. n. 8993 del 21/4/2015 Ruota: Ca 82 positivo: E 44 Ca; al 10° C
Estr. n. 8998 del 2/5/2015 Ruota: Ca 82 positivo: E 44 Ca; al 5° C
Estr. n. 9002 del 12/5/2015 Ruota: Ca 82 positivo: E 44 Ca; al 1° C
Estr. n. 9011 del 3/6/2015 Ruota: Ca 82 positivo: E 56 Ca; al 6° C
Estr. n. 9016 del 13/6/2015 Ruota: Ca 82 positivo: E 56 Ca; al 1° C
Estr. n. 9036 del 30/7/2015 Ruota: Ca 82 positivo: E 56 Ca; al 7° C
Estr. n. 9043 del 17/8/2015 Ruota: Ca 82 positivo: E 44 Ca; al 2° C
Estr. n. 9055 del 12/9/2015 Ruota: Ca 82 positivo: E 44 Ca; al 5° C
Estr. n. 9065 del 6/10/2015 Ruota: Ca 82 positivo: E 44 Ca; al 13° C
Estr. n. 9078 del 5/11/2015 Ruota: Ca 82 positivo: E 44 Ca;E 56 Ca; al 2° C
Estr. n. 9104 del 5/1/2016 Ruota: Ca 82 positivo: E 56 Ca; al 3° C
Estr. n. 9158 del 10/5/2016 Ruota: Ca 82 positivo: E 44 Ca; al 13° C
Estr. n. 9240 del 17/11/2016 Ruota: Ca 82 positivo: E 44 Ca;E 56 Ca; al 4° C
Estr. n. 9242 del 22/11/2016 Ruota: Ca 82 positivo: E 44 Ca;E 56 Ca; al 2° C
Estr. n. 9261 del 5/1/2017 Ruota: Ca 82 positivo: E 44 Ca; al 15° C
Estr. n. 9290 del 14/3/2017 Ruota: Ca 82 positivo: E 44 Ca; al 5° C
Estr. n. 9306 del 20/4/2017 Ruota: Ca 82 positivo: E 44 Ca; al 6° C
Estr. n. 9328 del 10/6/2017 Ruota: Ca 82 positivo: E 44 Ca; al 6° C
Estr. n. 9332 del 20/6/2017 Ruota: Ca 82 positivo: E 44 Ca; al 2° C
Estr. n. 9335 del 27/6/2017 Ruota: Ca 82 positivo: E 56 Ca; al 2° C
Estr. n. 9336 del 29/6/2017 Ruota: Ca 82 positivo: E 56 Ca; al 1° C
Estr. n. 9342 del 13/7/2017 Ruota: Ca 82 positivo: E 44 Ca; al 8° C
Estr. n. 9343 del 15/7/2017 Ruota: Ca 82 positivo: E 44 Ca; al 7° C
Estr. n. 9347 del 25/7/2017 Ruota: Ca 82 positivo: E 44 Ca; al 3° C
Estr. n. 9372 del 21/9/2017 Ruota: Ca 82 positivo: E 44 Ca; al 6° C
Estr. n. 9379 del 7/10/2017 Ruota: Ca 82 positivo: E 56 Ca; al 9° C
Estr. n. 9396 del 16/11/2017 Ruota: Ca 82 positivo: E 44 Ca; al 5° C
Estr. n. 9406 del 9/12/2017 Ruota: Ca 82 positivo: E 44 Ca; al 8° C
Estr. n. 9430 del 3/2/2018 Ruota: Ca 82 positivo: E 44 Ca;E 56 Ca; al 5° C
Estr. n. 9444 del 8/3/2018 Ruota: Ca 82 positivo: E 56 Ca; al 5° C
Estr. n. 9461 del 17/4/2018 Ruota: Ca 82 positivo: E 56 Ca; al 16° C
Estr. n. 9470 del 8/5/2018 Ruota: Ca 82 positivo: E 56 Ca; al 7° C
Estr. n. 9479 del 29/5/2018 Ruota: Ca 82 positivo: E 56 Ca; al 17° C
Estr. n. 9484 del 9/6/2018 Ruota: Ca 82 positivo: E 56 Ca; al 12° C
Estr. n. 9574 del 5/1/2019 Ruota: Ca 82 positivo: E 44 Ca; al 10° C
Estr. n. 9603 del 14/3/2019 Ruota: Ca 82 positivo: E 56 Ca; al 15° C
Estr. n. 9616 del 13/4/2019 Ruota: Ca 82 positivo: E 56 Ca; al 2° C
Estr. n. 9626 del 7/5/2019 Ruota: Ca 82 positivo: E 56 Ca; al 3° C
Estr. n. 9646 del 22/6/2019 Ruota: Ca 82 positivo: E 56 Ca; al 1° C
Estr. n. 9661 del 27/7/2019 Ruota: Ca 82 positivo: E 44 Ca; al 2° C
Estr. n. 9671 del 20/8/2019 Ruota: Ca 82 positivo: E 56 Ca; al 15° C
Estr. n. 9676 del 31/8/2019 Ruota: Ca 82 positivo: E 56 Ca; al 10° C
Estr. n. 9690 del 3/10/2019 Ruota: Ca 82 positivo: E 44 Ca; al 15° C
Estr. n. 9693 del 10/10/2019 Ruota: Ca 82 positivo: E 44 Ca; al 12° C
Estr. n. 9710 del 19/11/2019 Ruota: Ca 82 positivo: E 56 Ca; al 1° C
Estr. n. 9736 del 18/1/2020 Ruota: Ca 82 positivo: E 56 Ca; al 9° C
Estr. n. 9799 del 25/7/2020 Ruota: Ca 82 positivo: E 56 Ca; al 1° C
Estr. n. 9811 del 22/8/2020 Ruota: Ca 82 positivo: E 56 Ca; al 7° C
Estr. n. 9816 del 3/9/2020 Ruota: Ca 82 positivo: E 56 Ca; al 2° C
Estr. n. 9863 del 22/12/2020 Ruota: Ca 82 positivo: E 44 Ca; al 2° C
Estr. n. 9865 del 28/12/2020 Ruota: Ca 82 positivo: E 44 Ca; al 9° C
Estr. n. 9872 del 12/1/2021 Ruota: Ca 82 positivo: E 44 Ca; al 2° C
Estr. n. 9922 del 8/5/2021 Ruota: Ca 82 positivo: E 56 Ca; al 6° C
Estr. n. 9925 del 15/5/2021 Ruota: Ca 82 positivo: E 56 Ca; al 3° C
Estr. n. 9926 del 18/5/2021 Ruota: Ca 82 positivo: E 56 Ca; al 2° C
Estr. n. 9931 del 29/5/2021 Ruota: Ca 82 positivo: E 56 Ca; al 5° C
Estr. n. 9980 del 21/9/2021 Ruota: Ca 82 positivo: E 44 Ca; al 5° C
Estr. n. 9982 del 25/9/2021 Ruota: Ca 82 positivo: E 44 Ca; al 3° C
Estr. n. 9992 del 19/10/2021 Ruota: Ca 82 positivo: E 44 Ca; al 1° C
Estr. n. 10018 del 18/12/2021 Ruota: Ca 82 positivo: E 56 Ca; al 6° C
Estr. n. 10022 del 28/12/2021 Ruota: Ca 82 positivo: E 56 Ca; al 2° C
Estr. n. 10044 del 17/2/2022 Ruota: Ca 82 positivo: E 44 Ca; al 2° C
Estr. n. 10047 del 24/2/2022 Ruota: Ca 82 positivo: E 56 Ca; al 1° C
Estr. n. 10076 del 3/5/2022 Ruota: Ca 82 positivo: E 44 Ca; al 5° C
Estr. n. 10122 del 18/8/2022 Ruota: Ca 82 positivo: E 56 Ca; al 5° C
Estr. n. 10136 del 20/9/2022 Ruota: Ca 82 positivo: E 56 Ca; al 9° C
Estr. n. 10184 del 10/1/2023 Ruota: Ca 82 positivo: E 56 Ca; al 2° C
Estr. n. 10190 del 24/1/2023 Ruota: Ca 82 positivo: E 44 Ca; al 2° C
Estr. n. 10201 del 18/2/2023 Ruota: Ca 82 positivo: E 56 Ca; al 15° C
Estr. n. 10209 del 9/3/2023 Ruota: Ca 82 positivo: E 56 Ca; al 7° C
Estr. n. 10215 del 23/3/2023 Ruota: Ca 82 positivo: E 56 Ca; al 1° C
Estr. n. 10251 del 15/6/2023 Ruota: Ca 82 positivo: E 44 Ca; al 13° C
Estr. n. 10308 del 28/9/2023 Ruota: Ca 82 positivo: E 56 Ca; al 14° C
Estr. n. 10309 del 29/9/2023 Ruota: Ca 82 positivo: E 56 Ca; al 13° C
Estr. n. 10313 del 6/10/2023 Ruota: Ca 82 positivo: E 56 Ca; al 9° C
Estr. n. 10318 del 14/10/2023 Ruota: Ca 82 positivo: E 56 Ca; al 4° C
Grazie Pandit e lo script per la ricerca?
 

Ultima estrazione Lotto

  • Estrazione del lotto
    giovedì 07 novembre 2024
    Bari
    29
    53
    40
    66
    46
    Cagliari
    13
    68
    07
    71
    35
    Firenze
    27
    32
    51
    16
    22
    Genova
    42
    07
    18
    60
    67
    Milano
    56
    18
    65
    20
    27
    Napoli
    21
    25
    11
    02
    77
    Palermo
    24
    44
    51
    32
    74
    Roma
    18
    90
    54
    09
    77
    Torino
    54
    47
    58
    77
    44
    Venezia
    58
    33
    75
    45
    51
    Nazionale
    05
    72
    26
    42
    16
    Estrazione Simbolotto
    Torino
    39
    40
    44
    36
    25
Indietro
Alto