Me la sono presa comoda ma penso di aver qualcosa da condividere, scaricabile qui:
https://www.dropbox.com/s/46alc6c75fzjp ... .xlsm?dl=0Il file contiene 3 fogli importanti per il lavoro:
-Sorgente: va popolato tramite la macro PreparaSorgente (vedi Modulo2), che copia in Sorgente un elenco prelevandolo da un altro foglio, e vi aggiunge in ancoanto dei dati di servizio che serviranno poi per le elaborazioni (vedi le colonna del gruppo "A" nell'immagine che segue)
-Worker: e' il foglio a supporto delle elaborazioni; il suo contenuto viene inizialmente prelevato da Sorgente e poi manipolato per le varie simulazioni. Durante queste simulazioni i migliori risultati verranno aggiunti alla destra dei dati (vedi colonne del gruppo B nell'immagine che segue)
-Demo: facendo DoppioClick su una delle intestazioni del gruppo B vengono visualizzate quali righe della tabella hanno prodotto il risultato
L'immagine di cui parlo:
![Immagine](https://i.postimg.cc/rpV8vkPH/4-PAPIRIOF.jpg)
Il file contiene poi altri fogli, in particolare
-i tuoi Foglio1 e Foglio2 originale
-un mio Foglio1(WIP_40Col) in cui ho simulato una ricerca su 40 colonne
Altri fogli possono essere aggiunti ad esempio per inserirci tuoi dati di prova, da trasferire poi in Sorgente tramite la Sub PreparaSorgente
Il file contiene una seconda macro eseguibile: Sub AvviaRicerca; e' quella da usare per avviare la ricerca
La macro visualizza una userform in cui e' possibile impostare quanti tentativi si vogliono fare; un bottone Start avvia la ricerca; un textbox segnala il miglior risultato ottenuto; una barra di scorrimento avverte a che punto siamo arrivati; il pulsante Ferma se pigiato termina la ricerca (ad esempio se sono stati impostati troppi cicli da provare).
Come detto in foglio Worker sono memorizzate le combinazioni che hanno dato i migliori risultati (vedi colonne gruppo B)
Molte altre macro sono presenti ma non eseguibili direttamente.
Sia chiaro che non vengono assolutamente provate tutte le combinazioni di riga possibile, ma solo un tot a caso, lavorando sule righe che teoricamente hanno maggiori probabilita' di dare risultati: quelle che hanno piu' "blocchi di 4 colonne" compilati (1; vedi colonna "Fills", nell'immagine), e in subordine quelle che hanno piu' dati compilati (vedi colonna ">0").
Le macro lavorano sulle prime 100 righe (max) che hanno il valore "1" piu' elevato, mescolandoli casualmente per il numero di volte specificato nella userform; poi in questo nuovo elenco cerca i migliori risultati ottenibili.
Riepilogo il processo da seguire:-scaricare il mio file
-compilare un tuo foglio di lavoro con la tabella da esaminare
-portare questi dati in Sorgente tramite la Sub PreparaSorgente (che inserisce alcune informazioni su ogni riga): attivare il foglio contenente i dati, eseguire la Sub PreparaSorgente.
-avviare la ricerca tramite la Sub AvviaRicerca, usando la userform per impostare i parametri e avviare la ricerca
-usare DoppioClick sulle intestazioni dei risultati per vedere in Demo le righe utilizzate per il risultato
Per chiarimenti siamo qua
Ciao