Condividi:        

stessa macro per più fogli

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

stessa macro per più fogli

Postdi miko » 09/02/10 17:58

salve
da quando ho scoperto questo forum trascorro il mio poco tempo libero a leggere i vostri post.
sembra che non posso fare a meno di voi.
per quanto riguarda il mio nuovo problema ho un elenco di dati disposti su 10 colonne, ma il numero di righe è molto elevato, oltre 300.000, ed excel 2003 dispone solo di 65536 righe.
ho pensato di dividere i dati in più fogli, sempre nella stesse colonne;
nel foglio 1 ho inserito un codice che esegue dei calcoli;
lo stesso codice, e quindi gli stessi calcoli, devono essere eseguiti anche sugli altri fogli;
in pratica ho 5 fogli con lo stesso codice in ognuno di essi, tra i fogli cambia solo qualche dato ma tutto il resto è uguale.
ho pensato di inserire il codice in un modulo, ma ora non so come richiamarlo ad esempio dal foglio 1 in modo che esegua il calcolo anche negli altri fogli;
e poi non so come è meglio procedere se far eseguire prima il calcolo sul foglio 1 e poi successivamente sugli altri oppure su tutti i fogli contemporaneamente.
grazie saluti
miko
windows 10 - office 2013
miko
Utente Senior
 
Post: 521
Iscritto il: 29/12/09 10:44

Sponsor
 

Re: stessa macro per più fogli

Postdi Anthony47 » 09/02/10 19:04

Sinceramente non ho capito che cosa devi fare; come farlo sara' lo step successivo.
Prova quindi a ripetere i termini del problema e a descrivere quello che hai gia' fatto (se funziona).

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19425
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: stessa macro per più fogli

Postdi miko » 10/02/10 09:32

salve,
forse è meglio se invio un file ridotto così potete comprendere meglio.
http://www.filedropper.com/settinewinforlife
noterai che nei due fogli si trova lo stesso codice perchè il calcolo da eseguire è lo stesso per entrambi.
i valori che metto sotto le colonne ARCHIVIO sono uguali per i due fogli, e vengono imporati;
tra i due fogli cambiano i valori sotto la colonna SETTINE 1 e SETTINE 2;
poiche sono tanti ho dovuto inserirli in un altro foglio.
premendo il pulsante CALCOLA, nel foglio 1 ad esempio, viene aggiornato l'archivio, i dati si accodano ai precedenti, e di seguito viene eseguito il calcolo.
poi devo fare la stessa cosa con il foglio 2.
cercavo un metodo che premendo il pulsante calcola nel foglio 1 eseguisse lo stesso calcolo negli altri fogli, non so se contemporaneamente oppure dopo che il calcolo nel foglio 1 è terminato.
credo di aver letto qualche argomento in proposito ma non riesco a ritrovare la pagina
grazie arrivederci
miko
windows 10 - office 2013
miko
Utente Senior
 
Post: 521
Iscritto il: 29/12/09 10:44

Re: stessa macro per più fogli

Postdi Flash30005 » 10/02/10 11:29

Ho visto che hai messo la stessa macro su ogni foglio

Se invece metti la macro (insieme di macro) in un modulo potresti, con un solo pulsante, calcolare tutti i fogli della cartella chiaramente non dovrai richiamare espressamente i nomi dei fogli come riportato nel codice esistente
Codice: Seleziona tutto
rngIni = Worksheets("SETTINE 1").Range("B" & Rows.Count).End(xlUp).Row

ma crei una routine di questo tipo
Codice: Seleziona tutto
For I = 1 To Worksheets.Count
Sheets(I).Select
'macro che calcola
'e il codice potrà essere così
Range("B" & Rows.Count).End(xlUp).Row
...
...
Next I


Ciao

Ps. Il pulsante Calcola del tuo file a me non funziona per mancanza di riferimenti
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: stessa macro per più fogli

Postdi miko » 11/02/10 23:21

ciao
con le tue indicazioni tutto funziona perfettamente, come al solito.
grazie flash
saluti miko
windows 10 - office 2013
miko
Utente Senior
 
Post: 521
Iscritto il: 29/12/09 10:44

Re: stessa macro per più fogli

Postdi miko » 22/02/10 16:52

ciao,
riapro questo topic perchè ho pensato che forse si può velocizzare il calcolo, fermo restando il tempo impiegato dal calcolo per la quantità di dati da esaminare.
attualmente la macro del calcolo si trova in un modulo;
nel foglio 1 si trovano le combinazioni dell'archivio da esaminare ed una parte delle settine;
il numero delle settine supera il numero di righe del foglio, per cui nel foglio 2 sono inserite le stesse combinazioni dell'archivio e la rimanente parte delle settine.
la macro del calcolo lavora in questo modo:
attiva il foglio 1, aggiorna le combinazioni dell'archivio e calcola la frequenza delle settine inserite solo nello stesso foglio 1.
terminato il calcolo nel foglio 1, attiva il foglio 2, aggiorna di nuovo le combinazioni dell'archivio, che sono le stesse del foglio 1 ma che ora si trovano nel foglio 2, e calcola le frequenze delle settine che si trovano nel foglio 2.
l'inconveniente del calcolo è che considerando il calcolo nel foglio 1 se si trova una settina del foglio 2 non viene considerata, ma bisogna aspettare di passare al foglio 2 per aggiornare la sua frequenza;
ad esempio, considerando sempre il calcolo nel foglio 1, se esaminiamo la combinazione: 1-2-3-5-7-8-10-12-18-20
in essa si trova la settina: 2-5-7-8-10-12-20
ma la sua frequenza non viene calcolata in questo passaggio perchè la settina si trova nel foglio 2.
quando si passa al calcolo nel foglio 2 si inseriscono di nuovo le stesse combinazioni dell'archivio e poi si procede al calcolo.
ho pensato allora di modificare la cartella in questo modo:
nel primo foglio inseriamo solo le combinazioni dell'archivio, e l'aggiornamento dell'archivio sarà fatto una sola volta;
nei fogli 2 e 3 successivi inseriamo le settine;
il calcolo dovrebbe procedere in questo modo:
esamina una combinazione dell'archivio, quando in essa si trova una settina del foglio 2 aggiorna la frequenza nel foglio 2;
se invece la settina si trova nel foglio 3 aggiorna la frequenza in questo foglio.
in pratica il calcolo si esegue una sola volta passando da foglio 2 a foglio 3 a seconda che la settina sia nel foglio 2 o nel foglio 3.
questo impostazione della cartella credo sia anche buona per non avere tanti valori su un unico foglio e renderlo più leggibile.
invio il file modificato, nel modulo si trova la macro del calcolo con una mia piccola modifica, mentre nel foglio archivio si trova la macro originale realizzata dal prof. flash.
http://www.filedropper.com/copiadisettinewin
dopo aver letto vari topic e ricerche sono riuscito, inserendo worksheet(nome foglio) in alcune linee di codice, ad ottenere solo un piccolo risultato:
mi aggiorna l'archivio nel foglio omonimo, ma non esegue nessun calcolo anche se excel non mi dà alcun errore nel codice.
non sono ancora in grado di modificare macro così complesse.
spero che la mia esposizione sia comprensibile.
grazie saluti
windows 10 - office 2013
miko
Utente Senior
 
Post: 521
Iscritto il: 29/12/09 10:44

Re: stessa macro per più fogli

Postdi Flash30005 » 23/02/10 14:29

Su 20 numeri ci sono 77.520 settine
solo quelle che cominciano
per 1 sono 27.132
per 2 sono 18.564
per 3 sono 12.376
etc
Tu vorresti creare 14 fogli ognuno con settine aventi come primo numero da 1 a 14 (il 14° foglio avrà solo 1 settina)
che si confrontino con il foglio archivio per sapere le frequenze di ogni settina di ogni foglio?

Nel file da te postato ci sono solo due fogli (settine1 e settine2) che non risultano nemmeno complete.

Fai sapere
Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: stessa macro per più fogli

Postdi miko » 23/02/10 16:17

ciao flash,
no non è necessario creare tanti fogli;
il file che ti ho inviato era solo un esempio, uno schema, e non ho inserito tutti i valori e tutte le settine per non appesantire il file.
è sufficiente per le settine dividererle in due fogli, ad esempio foglio 1 da B3 a B40002, per un totale di 40000 settine, le rimanenti in foglio 2 da B3 a B37522, per un totale di 37520.
se ti serve il file completo lo invio.
per le ottine invece divido il loro numero in tre fogli, etc.
ciao grazie
windows 10 - office 2013
miko
Utente Senior
 
Post: 521
Iscritto il: 29/12/09 10:44

Re: stessa macro per più fogli

Postdi Flash30005 » 23/02/10 16:44

Scusami Miko ma come intendi tu significa che la macro dovrà cercare ogni settina uscita sempre e comunque su foglio1 e foglio2 fino a trovarla.

Io parlo da programmatore
Se ho il foglio1 di settine che iniziano solo con il numero uno
ho già un indice dove cercare (nel foglio1)
così pure se la settina dell'estrazione inizia per 9 (il foglio9 avrà molte meno righe del foglio1) e il tutto sarebbe molto più veloce.
I 14 fogli invece di due fogli non aumentano il peso del file perché la quantità di dati è sempre la stessa.

Dovrei capire ancora una cosa
Un'estrazione di 10 numeri genera 120 settine quindi la macro dovrò trovare le 120 settine, di ogni estrazione, nei vari fogli?
Quante estrazione hai?

E poi che ci fai con questi dati?
Ha un senso tutto ciò?

Fai sapere
Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: stessa macro per più fogli

Postdi miko » 25/02/10 22:02

ciao flash, buona sera a tutti
leggendo i tuoi post credo di aver creato,mio malgrado, confusione e perplessità;
provo a chiarire la mia richiesta.
la macro-calcolo a cui mi riferisco è la identica macro che tu hai realizzato per il calcolo della frequenza terni di cui si parla nell'omonimo topic, e che successivamente hai modificato per applicarla al calcolo della frequenza delle quaterne, cinquine etc.
così come è funziona benissimo, cerco solo di modificarla per rendere il calcolo più veloce.
io, purtoppo, non avendo conoscenze del vba non sono in grado di stabilire il metodo di calcolo più rapido, o come deve essere strutturata la cartella di lavoro per ottenere un tale risultato;
tu sei il mio mentore e se ritieni che:
creare 14 fogli ognuno con settine aventi come primo numero da 1 a 14 (il 14° foglio avrà solo 1 settina)
che si confrontino con il foglio archivio per sapere le frequenze di ogni settina di ogni foglio....
...Se ho il foglio1 di settine che iniziano solo con il numero uno ho già un indice dove cercare (nel foglio1)
così pure se la settina dell'estrazione inizia per 9 (il foglio9 avrà molte meno righe del foglio1) e il tutto sarebbe molto più veloce...

per me va bene e credo che questa tua soluzione sia anche buona per una migliore organizzazione della cartella; sarebbe più facile trovare una settina .
a tale scopo, seguendo le tue indicazioni, ho finito ora di prepare il file con vari fogli;
http://www.filedropper.com/settineflash
il primo, che ho chiamato ARCHIVIO, contiene le combinazioni uscite che non ho aggiornato ancora;
come vedrai nella macro viene aggiornato tramite un file txt, quindi l'archivio non lo aggiorno manualmente e non si inserisce una sola combinazione per volta.
esse sono numerose ed aumentano, ma tu nella macro hai inserito delle linee di codice tali che l'aggiornamento delle settine non avviene ogni volta dalla prima combinazione in archivio, ma dalla prima che viene inserita ad ogni aggiornamento dell'archivio;
quindi la macro dovrà trovare le 120 settine, di ogni estrazione, nei vari fogli e per tutte le estrazioni che vengono inserite ad ogni aggiornamento dell'archivio.
nei successivi fogli, che ho chiamato, SETTINE 1, SETTINE 2, ..etc., ho inserito tutte le settine dividendole, per ciascun foglio, in base al numero iniziale;
nell'ultimo foglio vorrei inserire le settine, con le corrispondenti frequenze, che hanno avuto ad ogni calcolo,la frequenza maggiore;
quindi vorrei copiare da ogni foglio alcune righe, ad esempio 5, della colonna settine ordinate + uscite, ed incollarle nel foglio VALORI MAX e poi ordinarle in ordine decrescente.
nel modulo troverai la macro originale del calcolo e le due macro che hai creato per cancellare ed ordinare le frequenze.
per rispondere alla tua ultima domanda, il senso di tutto ciò è quello di ottenere le settine che hanno una maggiore frequenza nelle estrazioni come era nel caso dei terni di cui abbiamo già parlato.
ciao grazie
windows 10 - office 2013
miko
Utente Senior
 
Post: 521
Iscritto il: 29/12/09 10:44

Re: stessa macro per più fogli

Postdi Flash30005 » 26/02/10 21:54

Allora Miko forse ci siamo!!!

Ho provato più volte ad utilizzare la macro per terni ma era quasi impossibile ottenere dei tempi soddisfacenti
Quella macro prende come riferimento il terno e lo confronta nella matrice di 10 numeri di ogni estrazione (era la cosa più logica e veloce da fare con solo 1.140 combinazioni, è un giochetto!!!
Ma... 77.520 combinazioni da controllare 120 volte per n. estrazioni, i tempi divenivano assurdi.
Ho optato per un rifacimento totale della macro e ho ottenuto tempi "accettabili": 7" (sette secondi) ;) per ogni estrazione da processare.
Scarica questo file e fammi sapere

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: stessa macro per più fogli

Postdi miko » 27/02/10 13:12

ciao flash,
peccato, per mezzo secondo non rientriamo nel guiness dei primati, :(
ritenteremo alla prossima, saremo più fortunati.
scherzi a parte, ho provato il file con le poche combinazioni a mia disposizione;
è poco dire che è eccezionale, sia per le nuove macro che per le aggiunte delle quantità di frequenze visibili in alcune celle.
ti esprimo la mia sincera gratitudine
ciao
windows 10 - office 2013
miko
Utente Senior
 
Post: 521
Iscritto il: 29/12/09 10:44

Re: stessa macro per più fogli

Postdi miko » 02/03/10 19:46

ciao flash,
il look gradevole che hai dato al file mi ha convinto a modificare la macro per il calcolo della frequenza dei terni, quaterne etc;
dopo aver studiato la tua macro ci sono ancora alcune linee di codice che non capisco, anche se credo di aver capito come avviene il calcolo, :
inserisco un punto interrogativo in quelle linee che non comprendo:
Codice: Seleziona tutto
Sub Aggiorna_Settine()
Dim X1, X2, X3, X4, X5, X6, X7 As Integer
A = 0  ?
-------
Gruppi = 7     ? credo di aver capito che si riferisce a settine, ma mi trae in inganno la linea successiva?
Base = 10 - (Gruppi - 2)    il semplice calcolo mi da 5?
-------

For X1 = 2 To 5   ?
    RNS = 3  ?
        NFC = "SETTINE " & Sheets("ARCHIVIO").Cells(i, X1).Value  ?
        For FS = 1 To Worksheets.Count
            If Sheets(FS).Name = NFC Then
                NSETT = Sheets(FS).Range("B3").End(xlDown).Row
                For X2 = X1 + 1 To Base + 1  ?
----

e
Codice: Seleziona tutto
Sub CercaSettA()
----
For RS = RNS To NSETT  ?
    SettS = ""  ?
    For CS = 3 To 8  ?
    SettS = SettS & Sheets(NFC).Cells(RS, CS).Value  ?
    Next CS
    If SettA = SettS Then
        Sheets(NFC).Cells(RS, 10).Value = Sheets(NFC).Cells(RS, 10).Value + 1   ?
        RNS = RS  ?
        A = A + 1  ?
------

inoltre, non so se questo è importante ai fini del calcolo, all'inizio della macro hai dimensionato la variabile SETTINETOT che però poi non ritrovo nel codice.
quando hai tempo puoi inserire una breve descrizione delle linee?
ciao grazie
windows 10 - office 2013
miko
Utente Senior
 
Post: 521
Iscritto il: 29/12/09 10:44

Re: stessa macro per più fogli

Postdi Flash30005 » 03/03/10 03:55

Settinetot intendevo utilizzarla per contare le settine totali e applicarle alla barra ma poi ho escogitato un altro metodo e quello è solo un "rimasuglio" che puoi cancellare

La maggior parte dei tuoi interrogativi si riferiscono alla variabile X e base (correlata)
Avrai notato che la variabile X la utilizzo per spostarmi nelle colonne e non nelle righe quindi un
for X = 2 to 5 (o base) significa che mi sposto dalla colonna 2 (B) alla colonna 5 (E) la colonna E è il quarto numero della decina e sarebbe l'ultimo numero che mi permette di avere la settina completa.
Conta dal numero 4 (compreso) e arriva fino a 10 quanto fa? ;)
Codice: Seleziona tutto
For X1 = 2 To 5   ? '<<<< spiegato
    RNS = 3  ?


RNS = 3 significa che imposto RNS3 ad ogni ciclo di X1
se fai la ricerca di RNS troverai nella macro CercaSettA troverai che questo valore cambia prendendo il valore di RS in quel momento e quindi va ripristinato ogni volta ( la macro CercaSettA è richiamata dalla macro principale "Aggiorna_Settine" proprio quando si è completata la settina)
Codice: Seleziona tutto
                                        SettA = N2 & N3 & N4 & N5 & N6 & N7
                                        Call CercaSettA


So che quanto detto non ha chiarito i tuoi dubbi
ma quando realizzo le macro vado "a braccio" senza alcuno schema ora dovrei rifare il ragionamento fatto in quel momento e vista l'ora... Credo sia meglio affrontare l'argomento in un altro momento

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: stessa macro per più fogli

Postdi miko » 04/03/10 22:37

ciao flash,
nonostante le tue ultime indicazioni non sono ancora riuscito a modificare la macro per applicarla alla frequenza dei terni etc.
se ti è possibile puoi indicarmi le linee che devo modificare?
oppure, forse è più semplice per te, ti invio il file
http://www.filedropper.com/terniflash
e modifica la macro poi faccio un confronto con le due macro.
dove trovo difficoltà sono la sub Aggiorna_Settine e la sub CercaSettA, quest'ultima nella parte finale, non per le linee della progress meter.
le altre le ho capite.
ciao grazie
windows 10 - office 2013
miko
Utente Senior
 
Post: 521
Iscritto il: 29/12/09 10:44

Re: stessa macro per più fogli

Postdi Flash30005 » 05/03/10 11:27

Ecco!!!
Segui l'indicazione data dal titolo di questo topic
"Stessa macro per più fogli"
Come pensi possa funzionare una macro se cambi le colonne nelle quali la macro prende o inserisce i dati?

Ti invio il file

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: stessa macro per più fogli

Postdi miko » 07/03/10 10:50

ciao flash, buona domenica
avevo capito che cambiando le colonne dovevo modificare anche la macro,
ma le macro complesse non sono ancora alla mia portata.
grazie.
saluti
windows 10 - office 2013
miko
Utente Senior
 
Post: 521
Iscritto il: 29/12/09 10:44

Re: stessa macro per più fogli

Postdi Flash30005 » 07/03/10 12:34

miko ha scritto:ciao flash, buona domenica
avevo capito che cambiando le colonne dovevo modificare anche la macro,
...


Se guardi bene ho nascosto le colonne non interessate per far si che la colonna frequenza e le altre rimangano le stesse ;)
E chiaramente la mcro non elaborerà 7 combinazioni di numeri ma solo 3

ciao

P.s. Non mi hai detto se questa modifica rende più veloce anche per i terni l'esecuzione di tutta l'elaborazione o no
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: stessa macro per più fogli

Postdi miko » 07/03/10 13:57

ciao,
ho solo scaricato il file e non lo usato ancora, ti farò sapere.
saluti
windows 10 - office 2013
miko
Utente Senior
 
Post: 521
Iscritto il: 29/12/09 10:44

Re: stessa macro per più fogli

Postdi miko » 08/03/10 13:12

ciao flash,
ho usato il file, tutto ok.
con 100 combinazioni inserite ha impiegato quasi 7 secondi per analizzare tutti i terni;
è proprio un ...flash. :)
proverò con le quaterne etc., poi ti dico se qualcosa non va;
astuta la scelta di nascondere le colonne; ;)
saluti grazie
windows 10 - office 2013
miko
Utente Senior
 
Post: 521
Iscritto il: 29/12/09 10:44

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "stessa macro per più fogli":


Chi c’è in linea

Visitano il forum: Nessuno e 8 ospiti

cron