Condividi:        

Lotto - Ricerca di combinazioni

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Lotto - Ricerca di combinazioni

Postdi papiriof » 15/04/21 16:00

Comincio dalla fine nel senso che quello che vorrei ottenere, in qualche modo l'ho ottenuto, ma quante vie traverse!! che quasi mi passa la voglia di provare altre prove per altre statistiche.
Si tratta di tre intervalli di numeri (parliamo di lotto) A2:E13 / Af:E26 / A28:E39 da cui io voglio ricavare , utilizzando meno numeri possibili, degli ambi o terni presenti in tutti e tre gli intervalli citati.
Per raggiungere lo scopo ho messo un controllo sulla cella i1 con la formattaz condiz sui 3 intervalli es il 6 è uscito alla righe 4, 6(in verde perchè appartenenti al primo interv) 16, 21e 22 bianchi (2° intervallo) il sei non è uscito nel terzo intervallo , se fosse uscito l'avrei formattato in rosso , insomma la bandiera italiana :D
Qundo ho messo tutti i numeri nell'intervallo k2:t91 li ho ordinati per avevre una visione pià chiara dei numeri da scegliere. Si capisce che un lavoro enorme, perciò chiedo una soluzione con una macro o magari con formule per questa soluz la vedo dura ma hai visto mai :) :)
http://www.filedropper.com/forum3intervalli
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 392
Iscritto il: 16/02/10 13:23

Sponsor
 

Re: Lotto - Ricerca di combinazioni

Postdi Anthony47 » 15/04/21 22:12

Se vuoi che ti aiutiamo a trovare i numeri buoni, ricorda: 1-2-3-4-5 sulla ruota di Alberobello

Se invece vuoi avere il quadro di quanti terni sono comuni a tre blocchi di numeri allora prova con questo codice:
Codice: Seleziona tutto
Dim WArr(1 To 3), TerY As Boolean, CheCer As Long
Dim I As Long, J As Long, K As Long

Sub TreTer()
Dim A3(1 To 3), TInd As Long
Dim OutR As String, myTim As Single
'
WArr(1) = Range("A2").CurrentRegion.Value       '<<< I 3 blocchi
WArr(2) = Range("A15").CurrentRegion.Value
WArr(3) = Range("A28").CurrentRegion.Value
'
OutR = "V1"                                     '<<< La posizione di partenza dei risultati
'
CheCer = 3
Range(OutR).Resize(1000, 3).ClearContents
myTim = Timer
For I = 1 To 91 - CheCer
    A3(1) = I
    For J = I + 1 To 92 - CheCer
        A3(2) = J
'        If I = 30 And J = 66 Then Stop
        For K = J + 1 To 90
            If CheCer = 2 Then K = 91
            A3(3) = K
            TerY = False
            Call RecurCkTer(1)
            If TerY Then
                Range(OutR).Offset(TInd, 0).Resize(1, CheCer) = A3
                TInd = TInd + 1
            End If
        Next K
    Next J
    DoEvents
Next I
Debug.Print "End", Format(Timer - myTim, "0.00")
Beep
End Sub



Sub RecurCkTer(ByVal iArr As Long)
Dim LI As Long, LJ As Long, lEx As Long
'
'Controlla se terno nel blocco:
For LI = 1 To UBound(WArr(iArr))
    lEx = 0
    For LJ = 1 To 5
        If WArr(iArr)(LI, LJ) = I Then
            lEx = lEx + 1
        ElseIf WArr(iArr)(LI, LJ) = J Then
            lEx = lEx + 1
        ElseIf WArr(iArr)(LI, LJ) = K Then
            lEx = lEx + 1
        End If
        If (5 - LJ + lEx) < CheCer Then Exit For
    Next LJ
    If lEx = CheCer Then Exit For
Next LI
If lEx = CheCer Then
    If iArr = 3 Then
        TerY = True
        Exit Sub
    Else
        TerY = False
        Call RecurCkTer(iArr + 1)
    End If
Else
    TerY = False
    Exit Sub
End If
End Sub

Va messo in un Modulo standard inizialmente vuoto del tuo vba; le istruzioni marcate <<< vanno personalizzate.
Lanciando la Sub TreTer verra' compilata l'area impostata con l'elenco dei terni in comune.

Se vuoi una cosa analoga per gli ambo allora devi creare una variante della Sub TreTer che sia limitata agli ambo

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

Re: Lotto - Ricerca di combinazioni

Postdi papiriof » 16/04/21 09:40

Accidenti questa mattina avevo preparata la risposta dopo più di un ora per spiegarmi l'ho inviata alle 9 e 35 circa nel frattempo ho visto che avete cambiato il titolo e non so dove è andata a finire la mia risposta;
Ringraziavo Anthony ma non era questo quello che volevo un terno in 36 ripetuto è solo teoricamente possibile e rarissimo la ricerca anche dell'ambo.
Molto più semplicemente cercavo di mettere il numero di riga di tutti i numeri da 1 a 90 nell' intervallo L2:S91
es reale di quanto inviato : in L 2 " 7 " e in M2 " 13 " (presupposto che all'inizio nell'intervallo K2:K91 ci sono i num da 1 a 90)
non ci sono altre presenze quindi la macro va ad esaminare le uscite del num 2 e d essendo il num 2 uscito nelle righe 23,30 e37
mi popolerà L3 con 23, M3 con 30 e N3 con 37 .....poi passa al 3 ecc se non è uscito niente passa al num succ
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 392
Iscritto il: 16/02/10 13:23

Re: Lotto - Ricerca di combinazioni

Postdi Anthony47 » 16/04/21 20:13

Si tratta di tre intervalli di numeri (parliamo di lotto) A2:E13 / Af:E26 / A28:E39 da cui io voglio ricavare , utilizzando meno numeri possibili, degli ambi o terni presenti in tutti e tre gli intervalli citati.
Probabilmente avevo capito la cosa piu' facile da capire...


Molto più semplicemente cercavo di mettere il numero di riga di tutti i numeri da 1 a 90 nell' intervallo L2:S91
Adesso che lo dici, lo capisco, eh he

Prova allora questa macro:
Codice: Seleziona tutto
Sub Report()
Dim N90 As String, cNum As Long
Dim myMatch, LastA As Long
'
N90 = "K2"
LastA = Cells(Rows.Count, "A").End(xlUp).Row
Range(N90).Offset(0, 1).Resize(100, 51).ClearContents
For I = 2 To LastA
    If Cells(I, 1) > 0 Then
        For J = 1 To 5
            cNum = Cells(I, J).Value
            myMatch = Application.Match(cNum, Range(N90).Resize(100, 1), False)
            If Not IsError(myMatch) Then
                Range(N90).Offset(myMatch - 1, 1) = Range(N90).Offset(myMatch - 1, 1) + 1
                Range(N90).Offset(myMatch - 1, 50).End(xlToLeft).Offset(0, 1) = I
            End If
        Next J
    End If
Next I
Beep
End Sub


La macro comincia azzerando K2 verso il basso per 100 righe /verso destra per 50 colonne; poi mette in colonna L il numero di volte che e' uscito il numero di col K, e da colonna M verso destra le righe in cui quel numero e' presente.
Le intestazioni di L1:T1 sono pertanto da cambiare (in L c'e' il Totale uscite)

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

Re: Lotto - Ricerca di combinazioni

Postdi papiriof » 17/04/21 08:13

L'unica cosa che riesce a frenare Anthony sono le spiegazioni più o meno "cervellotice" delle richieste nei campi più svariati in cui è chiamato a rispondere.
Che dire? perfetto!! Ho cambiate le intestazioni come suggerito , ho aumentato le uscite nelle intestazioni e alla Sub Report ho aggiuntol'ordinamento della colonna L,tra l'altro fatta con il registratore.
Conclusioni : Grazie ancora Anthony!!!!
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 392
Iscritto il: 16/02/10 13:23


Torna a Applicazioni Office Windows


Topic correlati a "Lotto - Ricerca di combinazioni":


Chi c’è in linea

Visitano il forum: Nessuno e 47 ospiti