Pagina precedente | 1 2 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Combinazioni di sestine ordinate in colonne

Ultimo Aggiornamento: 13/02/2020 09:37
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!!! [SM=x423028]

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

Re:
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

Re:
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

Re: Re:
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

Re:
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

Re:
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

Re:
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

Re:
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

Re:
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

combinazioni di sestine
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

Combinazioni
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

Combinazioni
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 [SM=x423051]

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

Re: Combinazioni
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 [SM=x423051]


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

Combinazioni
Ciao infatti se hai sviluppato le quaterne o sestine devi spuntare le quaterne o sestine e poi premere "Separa"

Ciao By Sal [SM=x423051]

[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

Combinazioni
Ciao Inserisci il file che vedo perche si blocca

bye bye [SM=x423051]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 2 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Cacolo combinazioni 20 righe, 3 colonne (0 messaggi, agg.: 18/04/2020 15:41)
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 00:22. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com