Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Creare Macro Riepilogo Excel

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

Creare Macro Riepilogo Excel

Postdi usernameacaso » 04/04/18 17:13

Salve a tutti,
sono nuovo nel forum. Da poco ho iniziato gli stage e devo fare un riepilogo con excel
Devo creare una macro che mi consenta di copiare dei valori dai foglii chiamati tutti (Foglio1,Foglio2,ecc fino a foglio 122)
Devo copiare i file delle righe C21,F21,I21,L21,O21,R21,T21,V21,X21,Z21,AB21,AD21,AG21,AI21,AK21,AM21 del foglio 1
Ed incollarli rispettivamente nelle righe F6,I6,L6,O6,R6,U6,W6,Y6,AA6,AC6,AE6,AG6,AI6,AL6,AN6,AP6 del riepilogo
poi devo copiare i file delle righe C21,F21,I21,L21,O21,R21,T21,V21,X21,Z21,AB21,AD21,AG21,AI21,AK21,AM21 del foglio 2
Ed incollarli rispettivamente nelle righe F7,I7,L7,O7,R7,U7,W7,Y7,AA7,AC7,AE7,AG7,AI7,AL7,AN7,AP7 del riepilogo
Tutto questo ripetuto per ogni singolo foglio.
E' possibile creare una macro che faccia questo in automatico?
Spero di essermi spiegato bene.
Grazie a tutti per le risposte.
usernameacaso
Newbie
 
Post: 4
Iscritto il: 04/04/18 17:06

Sponsor
 

Re: Creare Macro Riepilogo Excel

Postdi Anthony47 » 04/04/18 20:18

Un bel lavoretto per cominciare, eh?

Allora facciamo cosi':
-nel tuo File aggiungi un foglio e chiamalo "Riepilogo"
-poi inserisci in un modulo standard del vba del tuo file questa macro:
Codice: Seleziona tutto
Sub ACaso()
Dim Src, Dst, I As Long, J As Long, K As Long
'
Src = Array("C21", "F21", "I21", "L21", "O21", "R21", "T21", "V21", "X21", "Z21", "AB21", "AD21", "AG21", "AI21", "AK21", "AM21")
Dst = Array("F6", "I6", "L6", "O6", "R6", "U6", "W6", "Y6", "AA6", "AC6", "AE6", "AG6", "AI6", "AL6", "AN6", "AP6")
Sheets("Riepilogo").Select
For J = 1 To Worksheets.Count
    If Worksheets(J).Name <> "Riepilogo" Then
        For I = LBound(Src) To UBound(Src)
            Range(Dst(I)).Offset(K, 0).Value = Worksheets(J).Range(Src(I)).Value
        Next I
        K = K + 1
    End If
Next J
MsgBox ("Riepilogo completato...")
End Sub

Operativamente, partendo dal tuo file Excel:
-premi Alt-F11 per aprire l'editor delle macro
-Menu /Inserisci /Modulo
-Copia il codice e incollalo nel frame dx del modulo appena creato

Poi torna su Excel e quando sei pronto lancia la macro ACaso:
-premi Alt-F8
-seleziona ACaso dall'elenco di macro disponibili
-premi Esegui

A questo punto I VALORI (non le formule, ne' l'eventuale formattazione) contenuti nelle celle che hai indicato saranno inseriti nelle celle di Riepilogo che hai indicato, una riga dopo l'altra
Un messaggio confermera' il completamento dell'operazione.

Non escludo che le colonne di Riepilogo debbano essere formattate in modo particolare, ma questo lo puoi fare anche manualmente, una colonna dopo l'altra.

Se il risultato ti sembra corretto e il riepilogo lo vuoi in un File a parte (e non come Foglio del file corrente) allora "sposta" il foglio Riepilogo:
-tasto dx sul tab col nome Riepilogo
-scegli Sposta o copia
-seleziona "Sposta i fogli selezionati alla cartella" = (nuova cartella"
-premi Ok

Ciao, fai sapere...
Avatar utente
Anthony47
Moderatore
 
Post: 18282
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Creare Macro Riepilogo Excel

Postdi usernameacaso » 05/04/18 14:54

ciao,
grazie mille,la macro funziona,ma il foglio 1 viene copiato e incollato nella riga del foglio 2.
Cioè,la macro inizia dal secondo rigo e non dal primo
Potresti spiegarmi il perchè? E' un errore mio o della macro?
usernameacaso
Newbie
 
Post: 4
Iscritto il: 04/04/18 17:06

Re: Creare Macro Riepilogo Excel

Postdi usernameacaso » 05/04/18 15:10

usernameacaso ha scritto:ciao,
grazie mille,la macro funziona,ma il foglio 1 viene copiato e incollato nella riga del foglio 2.
Cioè,la macro inizia dal secondo rigo e non dal primo
Potresti spiegarmi il perchè? E' un errore mio o della macro?


Funziona solo con il primo foglio
usernameacaso
Newbie
 
Post: 4
Iscritto il: 04/04/18 17:06

Re: Creare Macro Riepilogo Excel

Postdi usernameacaso » 05/04/18 15:37

Funziona solo con il primo foglio


Ho risolto questo problema,ma la macro continua sempre ad iniziare dal secondo rigo e non dal primo come dovrebbe.
usernameacaso
Newbie
 
Post: 4
Iscritto il: 04/04/18 17:06

Re: Creare Macro Riepilogo Excel

Postdi Anthony47 » 06/04/18 02:12

Non so cosa intenda per "secondo rigo" e "primo rigo"; nelle mie prove il contenuto di del "primo foglio" viene incollato su riga 6, il secondo foglio su riga 7 e cosi' via.
Per evitare equivoci, il "primo foglio" e' quello che ha il tab del nome piu' a sinistra di tutti; il "secondo" e' quello subito alla destra del primo, e cosi' via.

Eventualmente allega un file dimostrativo contenente anche solo pochi fogli piu' il foglio Riepilogo che viene creato, e l'indicazione di cosa non torna.

Per le istruzioni su come allegare un file:
viewtopic.php?f=26&t=103893&p=605487#p605487

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

Re: Creare Macro Riepilogo Excel

Postdi Antonello68 » 31/07/18 19:15

Salve, ho una necessità molto simile, ma al posto di copiare una sola riga da tanti fogli presenti nel file (tutti strutturati uguali) e copiarle nel foglio "Riepilogo" su righe successive, dovrei copiare un range ("A12:AZ40") da tutti i fogli e riportarlo nel foglio "Riepilogo" su range....evidentemente successivi (ovvero il primo sarà in "A12:AZ40", il secondo in "A41:AZ60" e così via...)
grazie a chi mi illumina!
Antonello68
Newbie
 
Post: 4
Iscritto il: 31/07/18 18:57

Re: Creare Macro Riepilogo Excel

Postdi Antonello68 » 01/08/18 10:11

...mi rispondo da solo perché è stato facile eseguendo una piccola modifica al codice di cui sopra. Al posto delle singole celle, ho indicato il range completo nella matrice "array" e ho aumentato l'incremento della variabile "K" (alla fine della macro) da 1 al numero di righe di cui si compone il range.

Il codice così modificato è il seguente:

Sub ACaso()
Dim Src, Dst, I As Long, J As Long, K As Long
Src = Array("A12:AZ40")
Dst = Array("A12:AZ40")
Sheets("Riepilogo").Select
For J = 1 To Worksheets.Count
If Worksheets(J).Name <> "Riepilogo" Then
For I = LBound(Src) To UBound(Src)
Range(Dst(I)).Offset(K, 10).Value = Worksheets(J).Range(Src(I)).Value
Next I
K = K + 29
End If
Next J
MsgBox ("Riepilogo completato...")
End Sub


Grazie a questo sito, ai suoi lettori e gestori, sono caduto nel tunnel delle macro. :eeh:
Antonello68
Newbie
 
Post: 4
Iscritto il: 31/07/18 18:57

Re: Creare Macro Riepilogo Excel

Postdi Antonello68 » 01/08/18 13:31

La sporca fazenda potrebbe essere migliorata indicando un range all'interno del quale si trovano le righe da riportare in "Riepilogo" ma che differiscono in numero nei vari fogli e fare in modo che la macro riporti solo le righe che contengono una qualche informazione!
Antonello68
Newbie
 
Post: 4
Iscritto il: 31/07/18 18:57

Re: Creare Macro Riepilogo Excel

Postdi Anthony47 » 01/08/18 23:39

Bravo.
Grazie a questo sito, ai suoi lettori e gestori, sono caduto nel tunnel delle macro
Sara' lenta, ma puoi farcela ad uscirne (vittorioso)...

La sporca fazenda potrebbe essere migliorata indicando un range all'interno del quale si trovano le righe da riportare in "Riepilogo" ma che differiscono in numero nei vari fogli e fare in modo che la macro riporti solo le righe che contengono una qualche informazione!
Senza sapere come sono i tuoi dati si puo' solo confermare la tua opinione; una possibile semplice alternativa potrebbe essere di ordinare i dati complessivi ottenuti su foglio Riepilogo; in questo modo le righe vuote dovrebbero finire in fondo e quindi ignorate.
L'ordinamento lo puoi fare con una macro autoregistrata, che poi "richiami" in coda alla tua macro; tipo
Codice: Seleziona tutto
Next J
Call MacroPerOrdinamento               '<<< Aggiungere
MsgBox ("Riepilogo completato...")
End Sub


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

Re: Creare Macro Riepilogo Excel

Postdi Antonello68 » 02/08/18 13:07

Fatto! ora viene perfetto. Era un passaggio più che altro teso a sapere come farglielo fare in modalità "scrivo il codice perché è così che io vivo.....at the edge" 8) .
Prossimo passo è fargli prendere il foglio "Riepilogo", che contiene righe sulle quali informazioni di natura simile sono molteplici e fargli duplicare le righe in modo da ridurre le colonne di simile natura (Lotto 1 fornitura, Lotto 1 montaggio, Lotto 2 fornitura, Lotto 2 montaggio, Lotto 3 fornitura, Lotto 3 montaggio) a 2 colonne soltanto ("Lotto" e "Fase") duplicando le righe secondo necessità. In questo modo invece di avere 60.000 colonne e 3 righe avrò 60.000 righe, 3 colonne e l'illusione di essere felice.
Se ci riesco lo riporto qua sopra o in un topic con titolo più adeguato.
Antonello68
Newbie
 
Post: 4
Iscritto il: 31/07/18 18:57


Torna a Applicazioni Office Windows


Topic correlati a "Creare Macro Riepilogo Excel":


Chi c’è in linea

Visitano il forum: Nessuno e 23 ospiti

cron