› Sviluppare funzionalita su Microsoft Office con VBA › cercare combinazione vincente
-
AutoreArticoli
-
Salve come fare una ricerca anche con caratteri jolly di una combinazione vincente di 6 numeri su una serie di decine e e novine, cercare se presente una simile o piu' simile.
le sequenze sono divise un numero in una colonna
Grazie
Giuseppe
Ciao
Non mi intendo di giochi ma, a prescindere, non capisco la domanda.
Cosa vuoi che Excel e/o VBA facciano?
Prova a metter giù un esempio e allegalo.
Ciao,
Mario
Grazie Mario
ho una serie numerica di 100.000 righe sotto un esempio tutti i numeri i colonne diverse, nelle quali righe devo cercare una sestina se presente oppure se presente 5 dei 6 numeri :
esempio di colonna vincente da ricercare: 19 39 43 47 50 55
La ricerca mi deve evidenziale che sulla prima riga tutti e 6 i numeri sono presenti nella riga numero 1.
In mancanca di una riga dove ci siano tutti e 6 i numeri ricercati anche evidenziare dove sono presenti 5 dei sei numeri.
1 19 39 43 45 47 50 51 54 55
1 19 40 42 43 46 47 48 51 55
1 19 43 45 46 48 49 51 52 55
1 18 27 43 49 50 51 53 55 56
1 18 28 40 43 48 51 52 54 57
1 18 31 43 46 51 52 53 54 57Grazie
Giuseppe
quello sopra è un esempio di colonna vincente da ricercare e un elenco di combinazioni dove fare la ricerca 5 e 6
esempio di colonna vincente da ricercare: 19 39 43 47 50 55
trovato nella prima riga tutti e 6 numeri ricercati in rosso
nella seconda riga in blu sono i 4 numeri presenti non è da cercare solo 5 o 6 della sestina.1 19 39 43 45 47 50 51 54 55
1 19 40 42 43 46 47 48 51 55
1 19 43 45 46 48 49 51 52 55
1 18 27 43 49 50 51 53 55 56
1 18 28 40 43 48 51 52 54 57
1 18 31 43 46 51 52 53 54 57Grazie
Giuseppe
allora, normalmente è buona abitudine postare anche un file, senza dati sensibili e in forma ridotta, che rispecchi fedelmente il problema.
Io ho immaginato questyo scenario:
ho inserito le sestine da controllare nelle colonne che vanno dall"a" alla"f" e per ogni cella ho inserito un numero,che fa parte della sestina.
nella prima riga a partire dalla colonna "g" fina alla colonna"N" ho inserito l'estrazione, i numeri che voglio confrontare con le estrazioni.
il codice non fa altro che evidenziare le celle con i numeri che corrispondono alla combinazione vincente.
incolla il codice in un modulo e lo esegui.
`Sub ricercavalori() Range("a1:d9").Interior.Color = vbWhite For riga = 1 To 6 <<<--------------Dove si trovano le sestine da controllare For I = 7 To 12 <<<------------Dove si trovano i numeri estratti Numero = Cells(1, I) For Colonna = 1 To 4 <<<----le mie erano quartine If Numero = Cells(riga, Colonna) Then Cells(riga, Colonna).Interior.Color = vbGreen Else If I = 1 Then Cells(riga, Colonna).Interior.Color = vbWhite Else End If End If Next Colonna Next I Next riga End Sub`
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Scusa allego esempio delle righe che devo controllare sono solo una minima parte sono 100.000 le righe in decine e novine.
E' applicabile la procedura al foglio di lavoro?
Grazie
Giuseppe
Allegati:
You must be logged in to view attached files.ti allego file con codice postato
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Allegati:
You must be logged in to view attached files.Grazie funziona ho aumentato a 110.000 le righe da controllare.
Ma l'ideale sarebbe che elencasse alla fine del controllo quale riga a tutti e 6 i numeri oppure quale riga ha 5 numeri indovinati.
Si puo' fare ?
Grazie
Giuseppe
in alternativa poter riordinare il risultato per numeri rossi presenti per riga.
Grazie
Giuseppe
prova a sostituire il codice con quello che ti posto, per ogni combinazione ti scrive sulla riga se c'è una cinquina o una sestina
Sub ricercavalori() Range("a1:j29").Font.Color = vbBlack For Riga = 2 To 29 '<<<--------------Dove si trovano le sestine da controllare Indovinato = 0 For I = 12 To 17 '<<<------------Dove si trovano i numeri estratti Numero = Cells(2, I) For Colonna = 1 To 10 If Numero = Cells(Riga, Colonna) Then Cells(Riga, Colonna).Font.Color = vbRed Indovinato = Indovinato + 1 Else If I = 1 Then Cells(Riga, Colonna).Interior.Color = vbWhite Else End If End If Next Colonna Next I Select Case Indovinato Case Is = 5 Cells(Riga, 11) = "CINQUINA" Case Is = 6 Cells(Riga, 11) = "sestina" Case Else End Select Next Riga End Sub
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )perfetto per non cercarle cosa troppo lunga ho ordinato la colonna K ed ecco il risultato.
Grazie
Ottimo
un problema eseguo il controllo di un'altra colonna vincente restano le scritte cinquina e sestina.
Si puo' aggiungere al pulsante della procedura la pulizia delòla colonna K prima di eseguirla?
Grazie
Giuseppe
mi trovo degli errori forse non cancellate anche i numeri rossi precedenti 7 numri rossi nella prima Grazie Giuseppe
[k:k]=""
Prova a mettere questa allinizio della macro
Ma scusa Giuseppe tu parli di 100.000 colonne da controllare , ma non ti conviene anziché scrivere il risultato in parola lo scrivi in numero , poi fai un ordinamento dal più grande al più piccolo , così le trovi tutte all'inizio del foglio e ordinate altrimenti ne dubito che tu possa gestirle al meglio
Ti rigrazio funziona restano però i numeri rossi del precedente controllo come in questo caso i numeri 25 29 45 e 88
grazie
Giuseppe
Modica questa per tutto il range interessato
Range("a1:j29").Font.Color = vbBlack
provo subito grazie
dove sbaglio non funziona
Sub ricercavalori() Range("a1:j29").Font.Color = vbBlack [k:k] = "" Range("a1:j29").Font.Color = vbBlack For Riga = 2 To 110000 '<<<--------------Dove si trovano le sestine da controllare Indovinato = 0 For I = 12 To 17 '<<<------------Dove si trovano i numeri estratti Numero = Cells(2, I) For Colonna = 1 To 10 If Numero = Cells(Riga, Colonna) Then Cells(Riga, Colonna).Font.Color = vbRed Indovinato = Indovinato + 1 Else If I = 1 Then Cells(Riga, Colonna).Interior.Color = vbWhite Else End If End If Next Colonna Next I Select Case Indovinato Case Is = 5 Cells(Riga, 11) = "CINQUINA" Case Is = 6 Cells(Riga, 11) = "sestina" Case Else End Select Next Riga End Sub
Salve a parte la riga duplicata che ho tolto, alcuni numeri restano rossi.
Range("a1:j29").Font.Color = vbBlack
`Sub ricercavalori() [k:k] = "" Range("a1:j110000").Font.Color = vbBlack For Riga = 2 To 110000 '<<<--------------Dove si trovano le sestine da controllare Indovinato = 0 For I = 12 To 17 '<<<------------Dove si trovano i numeri estratti Numero = Cells(2, I) For Colonna = 1 To 10 If Numero = Cells(Riga, Colonna) Then Cells(Riga, Colonna).Font.Color = vbRed Indovinato = Indovinato + 1 Else If I = 1 Then Cells(Riga, Colonna).Interior.Color = vbWhite Else End If End If Next Colonna Next I Select Case Indovinato Case Is = 5 Cells(Riga, 11) = "CINQUINA" Case Is = 6 Cells(Riga, 11) = "sestina" Case Else End Select Next Riga End Sub`
-
AutoreArticoli