Condividi:        

Modifica Macro Excel x trovare ambi

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

Modifica Macro Excel x trovare ambi

Postdi papiriof » 17/12/11 16:47

Buona serata a tutti
Vi propongo questa richiesta:
Questa piccola macro che uso in excel mi propone 2 numeri compresi fra 1 e 90 non uguali fra loro (in pratica gli ambi)
e si ferma quando incontra questa riga di codice : "If Cells(1, 25) < Cells(1, 27) Then Exit Do" che posso imostare con "=","< " e ">"
Il problema è che la proposizione dei 2 numeri è fatta in modo casuale e quindi è facile che proponga spesso lo stesso ambo
trascurando per un tempo molto lungo l'ambo che la farebbe uscire .
Allora la domanda: come modificare la macro affinchè passi in rassegna tutti i 4005 ambi possibili e che si fermasse (uscisse)
a secondo dell'if che imposto, e allo stesso tempo mi avvertisse che con la condizione impostata non è stato possibile uscire
avendo passato in rassegna tutti i 4005 ambi??

Public Sub Proponi2()
Application.ScreenUpdating = False
Dim numeri(2) As Long
Dim A As Long
Dim b As Long
Do
For A = 1 To 2 ' riempie la matrice con numeri casuali
rifai:
numeri(A) = Int(Rnd * 90 + 1)
For b = 1 To 2 'controlla se c'è un numero doppio
If A = b Then GoTo salta
If numeri(A) = numeri(b) Then GoTo rifai
salta:
Next b
Next A

For A = 1 To 2 'riempie le celle
Cells(1, A) = numeri(A)
Next A
DoEvents

If Cells(1, 25) < Cells(1, 27) Then Exit Do 'esce se è stato superato > il
'parametro o se è = o se è < minore, secondo l'impostazione

Loop
Application.ScreenUpdating = True
End Sub
Se necessario invierò anche l'immagine dettagliata del foglio Excel .... devo ancora vedere come fare :D
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 392
Iscritto il: 16/02/10 13:23

Sponsor
 

Re: Modifica Macro Excel x trovare ambi

Postdi papiriof » 17/12/11 16:56

Con l'immagine sarà più chiaro .... spero
[imgImmagine
][/img]
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 392
Iscritto il: 16/02/10 13:23

Re: Modifica Macro Excel x trovare ambi

Postdi Anthony47 » 18/12/11 21:32

Non mi sono applicato molto, vero, pero' non ho capito quale e' il tuo obiettivo. Prova a descriverlo, e vedro' se posso aiutare.

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

Re: Modifica Macro Excel x trovare ambi

Postdi papiriof » 19/12/11 16:29

Anthony47 ha scritto:Non mi sono applicato molto, vero, pero' non ho capito quale e' il tuo obiettivo. Prova a descriverlo, e vedro' se posso aiutare.

Ciao

Grazie dell'interessamento Anthony47 come si evince dall'immagine ho questo foglio excel dove la macro che voglio cambiare ( attivata con il bottone "Proponi 2 numeri" ) propone 2 num non uguali compresi tra 1 e 90 (ovvero gli ambi)
nelle celle B4:F111 ci sono le estrazioni di una ruota e di un periodo qualsiasi; tramite delle formule situate in G4:G111
controllo il numeri di ambi e la loro posizione nelle estrazioni B4:F111 la macro si fermerà (quindi uscirà) allorquando è vera la condizione che io metto nel foglio i "Y1".
Esempio :se in Y1 metto 2 voglio che la macro si fermi quando "G3"ripetuta in"AA3" (dove c'è la somma degli ambi che si formano man mano che vengono proposti) assumerràun valore superiore ... 3 ... o 4 .
In questo modo controllo sia la frequenza ma cosa ancora più importante la posizione delle uscite e quindi una certa regolarità che rispetto alla frequenza può essere secondo altri punti di vista più indicativa.
Il problema però, come dicevo nel primo post , è che gli ambi che propone la macro cosi come è fatta sono del tutto casuali per cui , potenzialmente può proporre sempre gli stessi ambi oppure se metto una condizione diciamo troppo ambiziosa mettendo ad esempio in Y1 ..4 attendendo un'uscita con un ambo di 5 presenze non saprò mai
se la macro sta "macinando" nella vana attesa di trovare l'ambo ripetuto nell'intervallo 5 o più volte oppure se questa condizione non può essere soddisfatta per il semplice motivo che non cè questa condizione.
In definitiva vorrei che la macro proporrebbe o diciamo ciclasse tutti 4005 ambi possibili e scrivesse tutti quei ambi che soddisfano quella condizione espressa in Y1
(per analizzare tutte le possibili considerazioni )in un intervallo qualsiasi
Tipo:
ambo 23 37 presenze 4
ambo 38 39 presenze 3
ambo 78 82 presenze 4
Per ora mi fermerei per capire se mi sono spiegato papiriof
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 392
Iscritto il: 16/02/10 13:23

Re: Modifica Macro Excel x trovare ambi

Postdi Flash30005 » 19/12/11 23:45

Ricerche di ambi ne ho fatte a iosa ma mi risulta difficile capire la tua variante.
Ti consiglio di inviare il file con uno o più esempi reali direttamente sul foglio
(inserisci anche possibili eccezioni)

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Modifica Macro Excel x trovare ambi

Postdi Anthony47 » 19/12/11 23:59

Sara' perche' di gioco del lotto non ne capisco e non ne voglio capire, io sono meno dubbioso di Flash (vedi sopra)...
Mi sembra che vuoi scandire tutte le 4005 combinazioni, e segnare diciamo in Y2:AA2 e righe sottostanti quali combinazioni hanno un risultato superiore a quanto scritto in Y1
Senza chiedermi a che cosa possa servire questo calcolo, una macro come questa credo che dia i risultati chiesti; non usa le formule che hai impostato nel foglio, ed e' relativamente veloce:
Codice: Seleziona tutto
Sub speedc()
Dim VArr
Dim I As Integer, J As Integer, M As Integer, N As Integer
Dim Ctr As Integer, Ambi As Integer, LastR As Long
'
TargAm = [Y1]
Range("Y2:AA1000").Clear
LastR = Cells(Rows.Count, 2).End(xlUp).Row
VArr = Range("B4:F" & LastR).Value
aaaa = UBound(VArr, 1)
For M = 1 To 90
    Application.ScreenUpdating = False
    For N = M + 1 To 90
        Ambi = 0
        For I = 1 To UBound(VArr, 1)
            Ctr = 0
            For J = 1 To 5
                If VArr(I, J) = M Then Ctr = Ctr + 1
                If VArr(I, J) = N Then Ctr = Ctr + 1
            Next J
            If Ctr = 2 Then Ambi = Ambi + 1
        Next I
        If Ambi > TargAm Then
            NRow = Cells(Rows.Count, "Y").End(xlUp).Offset(1, 0).Row
            Cells(NRow, "Y") = M: Cells(NRow, "Z") = N: Cells(NRow, "AA") = Ambi
            End If
    Next N
    Application.ScreenUpdating = True
Next M
End Sub


Ma se non e' quello che cercavi allora e' meglio che segui richieste e consigli di Flash, che di lotto e affini e' competente.

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

Re: Modifica Macro Excel x trovare ambi

Postdi papiriof » 20/12/11 08:51

Buon Giorno Antony47 la macro proposta :( non va bene :( :(, va più che bene !!!!! :D :D :D
Adesso però il difficile è spegare dove voglio andare a parare !! perchè è questo penso che per legittima curiosità interessa un profano di questo campo .
Forse vi deluderò ma apparentemente questo non approda a niente di immediatamente di concreto ma una tale macro
così piccola e duttile rappresenta un validissimo mezzo per la conoscenza delle estrazioni passate, insomma il mezzo che mi avete dato è più che sufficente per un appassionato di lotto per fare tutte le considerazioni del caso ....che poi si possa anche vincere bhe questo non lo può fare e promettere nessuno!! :lol: :lol:
Ancora un grosso GRAZIE !! papiriof
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 392
Iscritto il: 16/02/10 13:23

Re: Modifica Macro Excel x trovare ambi

Postdi papiriof » 27/04/15 15:45

Ho riesumato questo vecchio post per vedere di modificare la macro che ha fatto Antony47 :
Prima modifica : i numeri invece di 90 sono 30 fin qui ci arrivo :D
Seconda modifica : bisogna trovare sempre gli ambi ma nell' ambito di terzine(con 30 num si formano 4060 terzine e 435 ambi)
in modo da avere un output da così:
combinazione 17 23 presenze ambi 4
combinazione 18 19 presenze ambi 4
combinazione 12 26 presenze ambi 4 adesso è così naturalmente combinazione e presenze ambi è per chiarire in effetti sono tre colonne nella 1^ il 1° elemento dell'ambo nella 2^ il 2° elem. e nella 3^ le volte che i due numeri escono insieme
a così:
combinazione 17 23 26 presenze ambi 6
combinazione 18 19 27 presenze ambi 6
combinazione 12 26 30 presenze ambi 6 quindi 4 colonne in quanto c'è un terzo elemento
Sub speedc()
Dim VArr
Dim I As Integer, J As Integer, M As Integer, N As Integer
Dim Ctr As Integer, Ambi As Integer, LastR As Long
'
TargAm = [Y1]
Range("Y2:AA1000").Clear
LastR = Cells(Rows.Count, 2).End(xlUp).Row
VArr = Range("B4:F" & LastR).Value
aaaa = UBound(VArr, 1)
For M = 1 To 90
Application.ScreenUpdating = False
For N = M + 1 To 90
Ambi = 0
For I = 1 To UBound(VArr, 1)
Ctr = 0
For J = 1 To 5
If VArr(I, J) = M Then Ctr = Ctr + 1
If VArr(I, J) = N Then Ctr = Ctr + 1
Next J
If Ctr = 2 Then Ambi = Ambi + 1
Next I
If Ambi > TargAm Then
NRow = Cells(Rows.Count, "Y").End(xlUp).Offset(1, 0).Row
Cells(NRow, "Y") = M: Cells(NRow, "Z") = N: Cells(NRow, "AA") = Ambi
End If
Next N
Application.ScreenUpdating = True
Next M
End Sub
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 392
Iscritto il: 16/02/10 13:23

Re: Modifica Macro Excel x trovare ambi

Postdi papiriof » 27/04/15 17:20

Grazie lo stesso ma ho risolto!!!
Dim I As Integer, J As Integer, M As Integer, N As Integer... ho aggiunto " O As Integer"
un altro ciclo for:" For O = N + 1 To 30 "
un altro ciclo IF : "If VArr(I, c) = O Then Ctr = Ctr + 1"
Cells(NRow, "AK") = M: Cells(NRow, "AL") = N: Cells(NRow, "AM") = O: Cells(NRow, "AN") = Ambi
e chiuso con:
Next O
Next N
Application.ScreenUpdating = True
Next M
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 392
Iscritto il: 16/02/10 13:23


Torna a Applicazioni Office Windows


Topic correlati a "Modifica Macro Excel x trovare ambi":


Chi c’è in linea

Visitano il forum: Nessuno e 32 ospiti