You are here:--Combinazioni di numeri in sestine ordinate in colonne
Combinazioni di numeri in sestine ordinate in colonne2019-09-07T17:02:55+01:00

Home Forum Domande su Excel VBA e MACRO Combinazioni di numeri in sestine ordinate in colonne

  • Autore
    Articoli
  • Avatarzio.Piero
    Partecipante
      Post totali: 8

      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.

    • BySalvBySalv
      Amministratore del forum
        Post totali: 541

        Ciao Zio-piero, eccoti un mio file che calcola tutte le combinazioni fino ad 11

        nella colonna test metti i numeri che vuoi elaborare, poi selezioni le combinazioni che vuoi sviluppare e premi “Avvia” ed avrai le combinazioni

        le combinazioni vengono elaborate in una sola colonna con trattino separatore, se le vuoi in colonne singole, segui la procedura seguente.

        attenzione questo vale soltanto fino alla “Sestina”

        fa una sola combinazione alla volta, seleziona la combinazione e premi “Separa” ti crea un nuovo foglio con le combinazioni separate, può anche crearti più fogli uno per ogni combinazione.

        Attenzione più alto è il numero di combinazioni più tempo ci mette.

        ecco il file
        http://www.filedropper.com/combinazioniundici

        Ciao By Sal (8-D

      • Avatarzio.Piero
        Partecipante
          Post totali: 8

          Ciao By Sal e grazie per la risposta!

          Ho visto il tuo foglio e sembra funzionare abbastanza bene, anche se c’è qualcosa che non mi è chiara.

          Per quanto riguarda le combinazioni, hai mai provato ad elaborarne tante?
          Ad esempio tutte le sestine dei numeri da 1 a 40?

          Poiché le possibili combinazioni superano il milione, il programma va in “overflow” ossia eccede i limiti di Excel che sono di 1048576 righe per foglio!

        • BySalvBySalv
          Amministratore del forum
            Post totali: 541

            Ciao zio.piero, non dovrebbe andare in overflow, perche quando finiscono le righe passa alla colonna successiva, come puoi vedere dall’immagine

            Cattura

            ci ha messo 6:31 minuti

            ho scaricato il file dal sito ed ho fatto le prove su quello

            Ciao By Sal (8-D

          • Avatarzio.Piero
            Partecipante
              Post totali: 8

              Ottimo, By Sal!

              Ma sei l’autore del file Combinaz2 da cui sono partito (trovato su un altro forum)?
              Questo foglio ne è l’evoluzione?

            • Avatarzio.Piero
              Partecipante
                Post totali: 8

                Ho fatto qualche altra prova: l’overflow (errore di Runtime 1004) si verifica nel separare le colonne delle sestine.

              • BySalvBySalv
                Amministratore del forum
                  Post totali: 541

                  Ciao credo di si se me ne fai vedere un immagine ti dirò se lo sono, anche se sto pensando di renderlo più veloce per le grosse combinazioni.

                  ma visto che è raro che si sviluppano, non so se ne valga la pena.

                  Ciao By Sal (8-D

                • BySalvBySalv
                  Amministratore del forum
                    Post totali: 541

                    Ciao ho letto dopo il tuo messaggio dell’overflow, ho fatto un controllo ed effettivamente non funzionava bene, ho modificato la macro, adesso dovrebbe andare.

                    Una cosa però, visto che la macro era fatta per una sola colonna dei dati, cioè i dati si avevano su un unica colonna e non combinazioni spalmate su più colonne.

                    la macro quando viene lanciata legge le intestazioni colonne per sapere quale prendere ambi-terni-etc.., quando colonne con “Sestine” ce ne sono 4 si ferma sempre alla prima.

                    quando vuoi dividere le combinazioni, fai la prima colonna “Sestine” poi quando devi fare la seconda cancella l’intestazione della prima, in questo modo prenderà la seconda colonna, cosi con la terza ecc.. ma non far eliminare i fogli cosi crea 4 fogli con tutte le combinazioni.

                    ti allego di nuovo il file.

                    http://www.filedropper.com/combinazioniundici_1

                    Ciao By Sal (8-D

                  • Avatarzio.Piero
                    Partecipante
                      Post totali: 8

                      Ecco il file Combinaz2 a cui facevo riferimento:

                      https://www.dropbox.com/s/j6nrsodrri80rag/Combinaz2.xls?dl=0

                      Sembra si tratti di un foglio abbastanza vecchio.
                      Il layout e la macro però hanno una impostazione simile, per questo ho pensato ne fossi l’autore!

                    • BySalvBySalv
                      Amministratore del forum
                        Post totali: 541

                        Ciao zio.piero, no non ne sono io l’autore, ma le macro purtroppo il VBA è quello, quindi per avere il risultato il codice è uguale, cambierà qualche impostazione, ma in definitiva si assomigliano.

                        Ciao By Sal (8-D

                      • Avatarzio.Piero
                        Partecipante
                          Post totali: 8

                          Infatti, si assomigliano molto!

                          Comunque grazie per la disponibilità e complimenti per la conoscenza del VBA!

                        • Avatarzio.Piero
                          Partecipante
                            Post totali: 8

                            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…

                            • Questa risposta è stata modificata 2 mesi, 1 settimana fa da Avatar zio.Piero.
                          • BySalvBySalv
                            Amministratore del forum
                              Post totali: 541

                              Ciao Zio.piero, il problema non è bloccare la macro, perche si può fare, ma far riprendere poi da dove si è lasciato, cioè far continuare la macro.

                              si potrebbe ovviare anche alla seconda parte far riprendere la macro, ma non dovrai chiudere il file, a questo punto ti conviene, lanciare la macro alla sera e di notte elabori le combinazioni.

                              Ma mi spieghi un poco a cosa ti servono tutte queste combinazioni?

                              può darsi che quello che cerchi si possa avere in un modo differente.

                              Ciao By Sal (8-D

                            • Avatarzio.Piero
                              Partecipante
                                Post totali: 8

                                E’ per motivi didattici.

                                Si, comunque intendevo proprio quello: credo sia impossibile fermare la macro e farla riprendere da un certo punto in poi…

                                A meno che… non tenga conto dell’ultima combinazione, vada a leggere gli ultimi valori elaborati e ricomici da quelli!

                              Devi essere loggato per rispondere a questa discussione.

                              Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

                              Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo.

                              Chiudi