| | Post: 1 | Registrato il: 07/09/2019
| Età: 49 | Utente Junior | 2016 | | OFFLINE | |
|
07/09/2019 16:45 | |
Combinazioni di numeri in sestine ordinate in colonne Vorrei creare un foglio di calcolo in Excel con tutte le possibili combinazioni in sestine dei numeri da 1 a 90.
In totale sono 622.614.630 combinazioni: inserendone 1 per riga sono in numero molto superiore al limite del foglio Excel che, per le versioni più recenti, è di 1.048.576 righe.
E' però possibile distribuire le combinazioni su più colonne a gruppi di 6 (appunto le sestine) , aggiungendo magari una colonna per il numero di combinazione. Incolonnando quindi le combinazioni in gruppi di 6 e ripartendo dalla riga iniziale, ad esempio, ogni 1.000.000 combinazioni, si avrebbero 623 gruppi: considerando 6+1 colonne ciascuno avremmo 623 * (6+1) = 4.361 colonne, numero inferiore al massimo consentito in Excel di 16.384 colonne.
In tal modo si riuscirebbe quindi ad avere tutte le combinazioni in un unico foglio!
Ho quindi studiato con attenzione un file trovato in rete e ho modificato la macro per ottenere l'incolonnamento delle combinazioni in gruppi, incontrando però degli errori che non riesco a correggere.
Saltuariamente infatti, quando l'elaborazione raggiunge il numero massimo di righe impostato per prova e ricomincia dalla riga iniziale, la prima combinazione viene collocata nelle colonne sbagliate (quelle precedenti) mentre quelle successive sono posizionate correttamente.
Dove sbaglio?
In allegato il foglio di calcolo Combinaz3. [Modificato da zio.Piero 07/09/2019 16:48] |
|
| | Post: 2.376 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
07/09/2019 17:05 | |
E' sempre difficile mettere le mani nei lavori altrui.
Ciò premesso "PROVA" ad aggiungere la riga evidenziata nel ciclo e vedi che succede
If Cells(1, 10).Value = (100 * ciclo) Then
spostamento = 8 * ciclo
riga = 3
ciclo = ciclo + 1
colonna = 5 + spostamento
End If
saluti
Domenico
Win 10 - Excel 2016 |
| | Post: 1 | Registrato il: 07/09/2019
| Età: 49 | Utente Junior | 2016 | | OFFLINE | |
|
07/09/2019 17:14 | |
Verissimo, dodo47!
D'altra parte in questo caso il codice è abbastanza comprensibile.
Provo ad effettuare la modifica, intanto grazie per la risposta! |
| | Post: 2 | Registrato il: 07/09/2019
| Età: 49 | Utente Junior | 2016 | | OFFLINE | |
|
07/09/2019 17:22 | |
Incredibile ma vero… ha funzionato!!!
Avevo la soluzione sotto gli occhi, ma non riuscivo proprio a vederla.
Grandissimo dodo47: grazie mille per l'aiuto tempestivo e risolutivo!!!
Se ora volessi semplificare il foglio, eliminando la colonna con i numeri da elaborare?
Si potrebbero inserire gli estremi in due celle sulla prima riga, ad esempio: a partire da 1 fino a 15? [Modificato da zio.Piero 07/09/2019 17:23] |
| | Post: 2.380 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
08/09/2019 13:37 | |
potresti trasformare tutti i loop while...wend in next..for ed adattare il tutto....ma non mi sembra una buona idea.
Prova a fare così e vedi che succede:
Sub Sestine()
Range("C3:ZZ1000000").ClearContents
colonna = 5
riga = 3
i = 3
spostamento = 0
ciclo = 1
Cells(1, 10) = 0
i = 1 'inizio
f = 12 'fine
While i <= f
j = i + 1
While j <= f
k = j + 1
While k <= f
l = k + 1
While l <= f
m = l + 1
While m <= f
n = m + 1
While n <= f
Cells(riga, 4 + spostamento) = Cells(1, 10) + 1
Cells(riga, colonna) = i
colonna = colonna + 1
Cells(riga, colonna) = j
colonna = colonna + 1
Cells(riga, colonna) = k
colonna = colonna + 1
Cells(riga, colonna) = l
colonna = colonna + 1
Cells(riga, colonna) = m
colonna = colonna + 1
Cells(riga, colonna) = n
riga = riga + 1
n = n + 1
colonna = 5 + spostamento
Cells(1, 10) = Cells(1, 10).Value + 1
If Cells(1, 10).Value = (100 * ciclo) Then
spostamento = 8 * ciclo
riga = 3
ciclo = ciclo + 1
colonna = 5 + spostamento
End If
Wend
m = m + 1
colonna = 5 + spostamento
Wend
l = l + 1
colonna = 5 + spostamento
Wend
k = k + 1
colonna = 5 + spostamento
Wend
j = j + 1
colonna = 5 + spostamento
Wend
i = i + 1
colonna = 5 + spostamento
Wend
End Sub
Come vedi, sono scomparsi tutti i riferimenti alla colonna 1 ed attivate due variabili :
i per numero inizio
f per numero fine
che volendo puoi porre in due celle dedicate prendendo il valore dalle stesse.
(Mi domando cosa ci sta a fare la macro nel modulo del foglio al posto di stare in un modulo standard?)
saluti
[Modificato da dodo47 08/09/2019 17:19] Domenico
Win 10 - Excel 2016 |
| | Post: 3 | Registrato il: 07/09/2019
| Età: 49 | Utente Junior | 2016 | | OFFLINE | |
|
10/09/2019 07:45 | |
Combinazioni di numeri in sestine ordinate in colonne GRANDIOSO!!!
Ho elaborato le combinazioni fino a 40 e funziona…
Non ha impiegato nemmeno tanto tempo!
PS: cosa vuol dire che la macro sta nel modulo del foglio al posto di stare in un modulo standard? 😮 [Modificato da zio.Piero 10/09/2019 08:04] |
| | Post: 4.172 | Registrato il: 13/03/2012
| Città: LIVORNO | Età: 78 | Utente Master | 2010 | | OFFLINE | |
|
10/09/2019 08:07 | |
Nel modulo del foglio devono stare soltanto le macro relative agli eventi del foglio, le altre in un modulo standard che puoi aprire con un clic destro, nuovo modulo.
Mi spieghi a cosa ti serve vedere tutte le combinazioni ? [Modificato da patel45 10/09/2019 08:09]
----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta |
| | Post: 4 | Registrato il: 07/09/2019
| Età: 49 | Utente Junior | 2016 | | OFFLINE | |
|
10/09/2019 09:10 | |
patel45, 10/09/2019 08.07:
Nel modulo del foglio devono stare soltanto le macro relative agli eventi del foglio, le altre in un modulo standard che puoi aprire con un clic destro, nuovo modulo.
Mi spieghi a cosa ti serve vedere tutte le combinazioni ?
Ciao patel45, benvenuto!
Visualizzare tutte le combinazioni mi serve per motivi didattici.
Come sai, il foglio originale era impostato così.
Come si fa a spostare la macro nel modulo standard? [Modificato da zio.Piero 10/09/2019 11:30] |
| | Post: 2.384 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
10/09/2019 10:14 | |
ciao a tutti
presumibilmente questo lavoro è da attribuire a BySal (moderatore di questo forum), vedi:
https://www.bysal-excel.it/forums/topic/combinazioni-di-numeri-in-sestine-ordinate-in-colonne/
Mi spiace non essermene accorto prima
saluti
[Modificato da dodo47 10/09/2019 10:14] Domenico
Win 10 - Excel 2016 |
| | Post: 5 | Registrato il: 07/09/2019
| Età: 49 | Utente Junior | 2016 | | OFFLINE | |
|
10/09/2019 11:29 | |
dodo47, 10/09/2019 10.14:
presumibilmente questo lavoro è da attribuire a BySal (moderatore di questo forum), vedi:
https://www.bysal-excel.it/forums/topic/combinazioni-di-numeri-in-sestine-ordinate-in-colonne/
Ciao dodo47 e grazie per l'inestimabile aiuto!
Il post che hai citato l'ho scritto io sull'altro forum.
Non so se sia BySal l'autore del foglio Combinaz2 da cui sono partito su suggerimento di patel45 (in un altro forum ancora) e che mi hai aiutato a modificare.
[Modificato da zio.Piero 10/09/2019 11:30] |
| | Post: 4.173 | Registrato il: 13/03/2012
| Città: LIVORNO | Età: 78 | Utente Master | 2010 | | OFFLINE | |
|
10/09/2019 11:58 | |
zio.Piero, 10/09/2019 09.10:
Come si fa a spostare la macro nel modulo standard?
basta aprire un nuovo modulo e fare taglia e incolla, comunque non è necessario farlo, è soltanto un suggerimento di buona programmazione
----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta |
| | Post: 2.385 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
10/09/2019 18:18 | |
ciao
il fatto è che se cerchi di eseguire una macro che sta in un foglio da un modulo, incontri difficoltà se "non hai una qualche conoscenze al riguardo"...
saluti
Domenico
Win 10 - Excel 2016 |
| | Post: 6 | Registrato il: 07/09/2019
| Età: 49 | Utente Junior | 2016 | | OFFLINE | |
|
10/09/2019 22:36 | |
dodo47, 10/09/2019 18.18:
il fatto è che se cerchi di eseguire una macro che sta in un foglio da un modulo, incontri difficoltà se "non hai una qualche conoscenze al riguardo"...
Uhm… ho tanto da imparare!
[Modificato da zio.Piero 10/09/2019 22:36] |
| | Post: 7 | Registrato il: 07/09/2019
| Età: 49 | Utente Junior | 2016 | | OFFLINE | |
|
11/09/2019 11:15 | |
dodo47, 10/09/2019 10.14:
presumibilmente questo lavoro è da attribuire a BySal (moderatore di questo forum)
(..)
Mi spiace non essermene accorto prima
Ho chiesto a BySal sull'altro forum e in realtà l'autore non è lui, che comunque ha scritto un codice molto simile.
Grazie comunque a tutti per la disponibilità e in particolare tutta la mia ammirazione per dodo47 per la sua competenza e la sua signorilità!
|
| | Post: 8 | Registrato il: 07/09/2019
| Età: 49 | Utente Junior | 2016 | | OFFLINE | |
|
12/09/2019 14:15 | |
Ho provato ad elaborare qualche milione di combinazioni e mi sono accorto che il problema più grosso è quello di non poter interrompere il calcolo e poi riprenderlo in un secondo momento!
Non so se sia possibile fare qualcosa del genere in VBA... |
| | Post: 2.387 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
12/09/2019 16:42 | |
certo che portare avanti una discussione conteporaneamente su due forum è un po' deprimente per chi vorrebbe aiutarti.
https://www.bysal-excel.it/forums/topic/combinazioni-di-numeri-in-sestine-ordinate-in-colonne/
personalmente chiudo qui
saluti
Domenico
Win 10 - Excel 2016 |
| | Post: 9 | Registrato il: 07/09/2019
| Età: 49 | Utente Junior | 2016 | | OFFLINE | |
|
12/09/2019 17:52 | |
dodo47, 12/09/2019 16.42:
certo che portare avanti una discussione conteporaneamente su due forum è un po' deprimente per chi vorrebbe aiutarti.
Mi spiace molto per questo, dodo47! 😮
Soprattutto perché a scriverlo sei proprio tu che mi hai aiutato a trovare gli errori del codice. Se qualcosa ti ha urtato, sono mortificato.
Posso anche cancellare la discussione sull'altro forum, dove ho scritto semplicemente in cerca di idee ed ho potuto anche verificare che il codice originale non è di BySal.
L'idea che ho avuto sarebbe quella di salvare l'ultima combinazione elaborata in alcune celle "speciali", per poi andare a richiamare quei valori al momento del riavvio dell'elaborazione.
In questo modo si potrebbe tranquillamente anche chiudere il software salvando il foglio con la certezza di poter continuare in qualsiasi momento.
Non ho idea però di come si possa interrompere l'elaborazione "a comando". [Modificato da zio.Piero 12/09/2019 17:54] |
| | Post: 4.175 | Registrato il: 13/03/2012
| Città: LIVORNO | Età: 78 | Utente Master | 2010 | | OFFLINE | |
|
12/09/2019 18:16 | |
fai una ricerca su google su CROSSPOSTING
----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta |
| | Post: 10 | Registrato il: 07/09/2019
| Età: 49 | Utente Junior | 2016 | | OFFLINE | |
|
12/09/2019 19:30 | |
patel45, 12/09/2019 18.16:
fai una ricerca su google su CROSSPOSTING
Hai ragione, Patel45. Non avevo e non ho tuttora alcuna intenzione di offendere alcuno oppure di approfittare in malafede della sua disponibilità.
Come sai, sono arrivato su questo forum da un altro, alla ricerca di aiuto... che è il solo motivo per cui in buona fede ho scritto prima lì e poi qui e altrove.
La stessa buona fede l'ho adoperata per cercare di appurare chi fosse l'autore del codice e riconoscerne i meriti. [Modificato da zio.Piero 12/09/2019 19:32] |
| | Post: 4.176 | Registrato il: 13/03/2012
| Città: LIVORNO | Età: 78 | Utente Master | 2010 | | OFFLINE | |
|
13/09/2019 16:53 | |
nessun problema, nessuno nasce imparato, ora lo sai
----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta |
| | Post: 12 | Registrato il: 07/09/2019
| Età: 49 | Utente Junior | 2016 | | OFFLINE | |
|
13/09/2019 16:56 | |
patel45, 13/09/2019 16.53:
nessun problema, nessuno nasce imparato, ora lo sai
Vero! 👍
[Modificato da zio.Piero 13/09/2019 16:57] |
| | Post: 13 | Registrato il: 07/09/2019
| Età: 49 | Utente Junior | 2016 | | OFFLINE | |
|
13/09/2019 16:56 | |
Per eseguire il calcolo delle combinazioni in più riprese, una possibile evoluzione del codice potrebbe essere:
Sestine
Sub Sestine()
If Cells(2, 26).Value <> 0 Then
i = Cells(1, 26).Value
j = Cells(1, 27).Value
k = Cells(1, 28).Value
l = Cells(1, 29).Value
m = Cells(1, 30).Value
n = Cells(1, 31).Value
riga = Cells(2, 26).Value
colonna = Cells(2, 27).Value
spostamento = Cells(2, 28).Value
ciclo = Cells(2, 29).Value
Else
Range("C3:ZZ1000000").ClearContents
colonna = 5
riga = 3
i = 3
spostamento = 0
ciclo = 1
Cells(1, 10) = 0
End If
i = 1 'inizio
f = 90 'fine
While i <= f
j = i + 1
While j <= f
k = j + 1
While k <= f
l = k + 1
While l <= f
m = l + 1
While m <= f
n = m + 1
While n <= f
Cells(riga, 4 + spostamento) = Cells(1, 10) + 1
Cells(riga, colonna) = i
colonna = colonna + 1
Cells(riga, colonna) = j
colonna = colonna + 1
Cells(riga, colonna) = k
colonna = colonna + 1
Cells(riga, colonna) = l
colonna = colonna + 1
Cells(riga, colonna) = m
colonna = colonna + 1
Cells(riga, colonna) = n
riga = riga + 1
n = n + 1
colonna = 5 + spostamento
Cells(1, 10) = Cells(1, 10).Value + 1
If Cells(1, 10).Value = (100 * ciclo) Then
spostamento = 8 * ciclo
riga = 3
ciclo = ciclo + 1
colonna = 5 + spostamento
End If
Cells(1, 26) = i
Cells(1, 27) = j
Cells(1, 28) = k
Cells(1, 29) = l
Cells(1, 30) = m
Cells(1, 31) = n
Cells(2, 26) = riga
Cells(2, 27) = colonna
Cells(2, 28) = spostamento
Cells(2, 29) = ciclo
Wend
m = m + 1
colonna = 5 + spostamento
Wend
l = l + 1
colonna = 5 + spostamento
Wend
k = k + 1
colonna = 5 + spostamento
Wend
j = j + 1
colonna = 5 + spostamento
Wend
i = i + 1
colonna = 5 + spostamento
Wend
End Sub
Rimane il problema di fermare la macro "a comando" in un momento stabilito e non "brutalmente" premendo ESC oppure CTRL+BREAK, con l'effetto collaterale di interromperla in un punto casuale e quindi senza la sicurezza di aver salvato correttamente i dati sull'ultima combinazione elaborata. [Modificato da zio.Piero 13/09/2019 16:58] |
| | Post: 0 | Registrato il: 18/03/2016
| Città: GALLIERA VENETA | Età: 58 | Utente Junior | Profesional plus 2010 | | OFFLINE | |
|
07/02/2020 01:39 | |
Salve a tutti.....premetto che non sono un programmatore, però l'argomento mi interessa molto visto che sto cercando un combinatore non di sestine ma di otto numeri per un massimo di quaranta numeri tutte raggruppate in un unico foglio excel, so che le combinazioni totali sono circa 76.904.000 circa, spero in vostro cortese aiuto e anticipatamente vi ringrazio |
| | Post: 5.830 | Registrato il: 14/11/2004
| Utente Master | Office 2019 | | OFFLINE |
|
07/02/2020 09:07 | |
Ciao questo file fa fino ad 11 combinazioni, è l'ultimo della serie, può anche separare in colonne.
Ciao By Sal se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui |
| | Post: 1 | Registrato il: 18/03/2016
| Città: GALLIERA VENETA | Età: 58 | Utente Junior | Profesional plus 2010 | | OFFLINE | |
|
07/02/2020 18:01 | |
ok perfettissimo.........adesso come faccio ad inserire ogni numero nella sua cella!!! esempio 1-2-3-4-5-6-7-8- in A1 B1 C1 D1 E1 F1 G1 H1, 1-2-3-4-5-6-7-8-9 A2 B2 C2 D2 E2 F2 G2 H2, ciao e grazie.
Come il Combinaz2 [Modificato da RobertoGazzola 07/02/2020 18:02] |
| | Post: 5.831 | Registrato il: 14/11/2004
| Utente Master | Office 2019 | | OFFLINE |
|
09/02/2020 10:40 | |
Ciao Roberto, non devi fare altro che selezionare le combinazioni una sola alla volta e premere il pulsante "Separa", ti crea un nuovo foglio con i dati separati.
Ciao By Sal
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui |
| | Post: 2 | Registrato il: 18/03/2016
| Città: GALLIERA VENETA | Età: 58 | Utente Junior | Profesional plus 2010 | | OFFLINE | |
|
09/02/2020 21:10 | |
by sal, 09/02/2020 10.40:
Ciao Roberto, non devi fare altro che selezionare le combinazioni una sola alla volta e premere il pulsante "Separa", ti crea un nuovo foglio con i dati separati.
Ciao By Sal
Fatto....... ma non mi da nessun risultato, anzi mi mostra una label con scritto "nessuna combinazione scelta" |
| | Post: 5.832 | Registrato il: 14/11/2004
| Utente Master | Office 2019 | | OFFLINE |
|
10/02/2020 11:52 | |
Ciao infatti se hai sviluppato le quaterne o sestine devi spuntare le quaterne o sestine e poi premere "Separa"
Ciao By Sal
[Modificato da by sal 10/02/2020 11:53] se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui |
| | Post: 3 | Registrato il: 18/03/2016
| Città: GALLIERA VENETA | Età: 58 | Utente Junior | Profesional plus 2010 | | OFFLINE | |
|
12/02/2020 13:55 | |
Ciao ........non ci siamo ..........si blocca tutto in runn |
| | Post: 5.833 | Registrato il: 14/11/2004
| Utente Master | Office 2019 | | OFFLINE |
|
12/02/2020 15:44 | |
Ciao Inserisci il file che vedo perche si blocca
bye bye se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui |
|
|