Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Excel Macro - Somma Sheet diversi File - Excel 2010

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

Excel Macro - Somma Sheet diversi File - Excel 2010

Postdi AvrilP » 20/12/13 11:13

Ciao a tutti
Non so se qualcuno può aiutarmi in questo, ho cercato diversi post ma non ho trovato esattamente quello di cui avrei bisogno. Premetto che sono profana di Macro e quindi suppongo che questa domanda possa essere sciocca per voi, ma ne avrei davvero bisogno.
Vorrei creare diverse macro che possano, a seconda della macro lanciata, elaborare in un nuovo sheet (che avrà la stessa struttura dei fogli originali) la somma delle celle dei fogli selezionati.
Cerco di spiegare:
• Ho tre file excel diversi, chiamati File1, File2, File3
• I 3 file excel hanno la stessa struttura, ossia supponiamo che ognuno abbia 5 sheet denominati allo stesso modo, esempio:
o Sheet1
o Sheet2
o Sheet3
o Sheet4
o Sheet5
• Ogni sheet ha una tabella di dati, ma alcune celle sono semplicemente “intestazioni”, quindi fanno parte della struttura del file, altre celle contengono numeri che sono quelli che mi interessa sommare nel nuovo file di riepilogo (il quale dovrà essere come aspetto analogo agli Sheet, ossia una tabella con la stessa struttura delle tabelle che ho negli sheet in quanto a macro eseguita è solo il contenuto delle celle sommate che deve cambiare)
• Il mio file di riepilogo quindi dovrebbe al lancio della macro selezionata andare a popolare la struttura preimpostata della tabella (analoga ai file di source) con la somma dei dati dei file di riferimento
o Per esempio la macro1 deve poter creare nel nuovo file Riepilogo la somma dei dati contenuti nello Sheet1 + Sheet2 – solo le celle con i numeri da sommare, non le celle con le intestazioni della tabella -
o La macro2 invece deve poter sommare Sheet2 + Sheet3
o Etc...
• Il nome degli sheet da sommare associati a ciascuna macro può essere predefinito (ossia lo so in anticipo quindi potrei fissare il nome all’interno della macro di riferimento)
Smanettando un pò sono ruscita in parte ad iniziare ma ho diversi problemi tipo:
• Non so come fargli capire che i range da sommare sono non tutto il foglio ma solo una parte (ossia alcune celle della tabella non sono da sommare quindi dovrei saltare dei range)
• Non so come mai a volte all’esecuzione della macro mi apre il folder invece di eseguire solo la somma
• Penso di essere ancora lontana dalla soluzione....
Se qualcuno sapesse illuminarmi...vi ringrazio in anticipo
Ciao
Barbara
AvrilP
Newbie
 
Post: 6
Iscritto il: 20/12/13 11:01

Sponsor
 

Re: Excel Macro - Somma Sheet diversi File - Excel 2010

Postdi AvrilP » 20/12/13 16:02

Ciao a tutti, ancora io.
Nel frattempo sono riuscita in un modo probabilmente maccheronico a realizzare una macro che mi somma alcune celle da uno sheet di riferimento. Non capisco cosa sia l'Active ScrollRow che appare sotto ma forse è perché per posizionarmi nelle diverse celle della tabella di destinazione dove copiare la formula mi muovevo sul file....non so comunque mi sembra che funzioni.
Quello che non capisco è perché all'avvio della macro mi apre la directory per ricercare il file, ma sia che lo cerchi sia che non lo cerchi poi compila correttamente il foglio di destinazione.
come posso ovviare a questo?
altra domanda: se mai riuscirò a terminare questo esercizio, tutti i file (source e destinazione) dovrebbero sempre essere nello stesso folder corretto?
Molte grazie se qualche esperto mi potesse illuminare
Ciao!


Codice: Seleziona tutto
Sub NLGUPCONS()
'
' NLGUPCONS Macro
'

'
    Application.Goto Reference:="R8C20"
    ActiveCell.FormulaR1C1 = _
        "='[FY14_NL TGP_Baseline revised.xlsm]Cons - Ind CMT'!R8C20+'[FY14_NL TGP_Baseline revised.xlsm]Cons - Ind RES'!R8C20+'[FY14_NL TGP_Baseline revised.xlsm]Cons - Ind PRD'!R8C20+'[FY14_NL TGP_Baseline revised.xlsm]Cons - Ind H&PS'!R8C20+'[FY14_NL TGP_Baseline revised.xlsm]Cons - Ind FS'!R8C20+'[FY14_NL TGP_Baseline revised.xlsm]Cons - SAP'!R8C20+'[FY14_NL TGP_Baseline " & _
        "xlsm]Cons - Oracle'!R8C20"
    Range("T8").Select
    ActiveCell.FormulaR1C1 = _
        "='[FY14_NL TGP_Baseline revised.xlsm]Cons - Ind CMT'!RC+'[FY14_NL TGP_Baseline revised.xlsm]Cons - Ind RES'!RC+'[FY14_NL TGP_Baseline revised.xlsm]Cons - Ind PRD'!RC+'[FY14_NL TGP_Baseline revised.xlsm]Cons - Ind H&PS'!RC+'[FY14_NL TGP_Baseline revised.xlsm]Cons - Ind FS'!RC+'[FY14_NL TGP_Baseline revised.xlsm]Cons - SAP'!RC+'[FY14_NL TGP_Baseline revised.xlsm]Cons - Oracle'!RC"
    Range("T8").Select
    Selection.Copy
    Range("T8:AJ24").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    ActiveWindow.SmallScroll Down:=21
    Range("T31:AJ50").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    ActiveWindow.SmallScroll Down:=18
    Range("T52:AJ68").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    ActiveWindow.SmallScroll Down:=24
    Range("T70:AJ86").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    ActiveWindow.SmallScroll Down:=21
    Range("T92:AJ108").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    ActiveWindow.SmallScroll Down:=18
    Range("T110:AJ126").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    ActiveWindow.SmallScroll Down:=15
    Range("T128:AJ144").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    ActiveWindow.SmallScroll Down:=15
    Range("T146:AJ162").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    ActiveWindow.SmallScroll Down:=21
    Range("T168:AJ184").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    ActiveWindow.SmallScroll Down:=18
    Range("T190:AJ206").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    ActiveWindow.ScrollRow = 178
'...
       ActiveWindow.ScrollRow = 1
    Range("A1").Select
End Sub


EDIT Flash: eliminati ActiveWindow.ScrollRow per rendere la macro più leggibile
AvrilP
Newbie
 
Post: 6
Iscritto il: 20/12/13 11:01

Re: Excel Macro - Somma Sheet diversi File - Excel 2010

Postdi wallace&gromit » 20/12/13 16:51

ciao Avril e benvenuta,
i nostri maghi delle macro devono essere già in vacanza o si stanno abbuffando di panettone.
Io posso aiutarti solo poco, ma posso dirti che al posto di andare a selezionare la cella, copiare, selezionare la destinazione e incollare puoi usare il metodo:
Codice: Seleziona tutto
Range("A1").Copy
Range("A2").PasteSpecial Paste:=xlPasteValues

tutti gli scroll diventano inutili!

Inoltre una piccola informazione: per inserire il listato delle tue macro premi sul tasto "Code", e poi inserisci il tuo testo, in questo modo non occupa tutta la pagina.
stato 2014: Office2003/2013 su win7
Avatar utente
wallace&gromit
Utente Senior
 
Post: 1421
Iscritto il: 16/01/12 14:21

Re: Excel Macro - Somma Sheet diversi File - Excel 2010

Postdi Anthony47 » 21/12/13 02:39

Veramente qui di panettone nemmeno l' odore, per ora...

Il riepilogo di cui parli e' (sono) da fare a livello dello stesso file, o si tratta di farne uno (o piu' di uno) che riepiloga X fogli di Y file diversi? I file sono sempre gli stessi o cambiano di numero e di nome? Le celle che devi sommare sono dieci, cento o mille? Puoi pubblicare uno screenshot delle tue tabelle cosi' cerchiamo di capire in che cosa consiste la difficolta' a indirizzare solo le celle di dati e non quelle di intestazione? (per come fare guarda qui: viewtopic.php?f=26&t=80395#p466013)

Ti aspettiamo con questi chiarimenti...
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13895
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel Macro - Somma Sheet diversi File - Excel 2010

Postdi AvrilP » 02/01/14 10:24

Ciao a tutti, alla fine anche io sono andata di panettone...e pensavo non mi rispondesse nessuno quindi sono rientrata adesso.
Grazie per le risposte!
Allora rispondo alle domande:
- Il riepilogo è uno: Io dovrei fare un unico file dal quale spingendo diversi bottoncini posso eseguire "n" macro; ogni macro mi va quindi ad alimentare la tabella "vuota" con i valori come somma da X fogli da diversi excel: (per esempio se seleziono il pulsante 1 il file di riepilogo che sto leggendo andrà a sommare i valori dello sheet1 dell'excel A, dello sheet 2 dell'excel C,...etc)
- I fogli avranno sempre la stessa struttura e i nomi degli sheet anche, praticamente quando cambieranno i contenuti dei fogli originali io posso eseguendo la macro rivedere lo stato, ma i source non cambiano di struttura
- I fogli source sono solo 3, ma ognuno ha anche 50 sheet, comunque la procedura è "fissa" quindi anche se magari è noiosa la preparazione della macro poi non ci dovrebbero essere problemi
- in sintesi la potrei fare più semplice creando sheet diversi che contengano come semplici formule excel le somme dei dati che mi servono dai diversi sheet e file, ma con la macro e i bottoncini mi sembrava più carino e meno confuso; sono riuscita a fare la macro per cancellare i dati della tabella :) (per ripulirla)
Adesso leggo come inviare lo screen shot
Provo anche a vedere la risposta di wallace anche se non sono sicura di aver capito bene :)
AvrilP
Newbie
 
Post: 6
Iscritto il: 20/12/13 11:01

Re: Excel Macro - Somma Sheet diversi File - Excel 2010

Postdi AvrilP » 02/01/14 10:55

Di seguito il link per vedere un esempio di parte della tabella, ho "n" tabelle nel foglio come la prima e ho messo parte della seconda per far capire che il foglio ha una struttura di n tabelle composte da "struttura" fissa e celle che invece devono essere alimentate al lancio delle macro; in giallo ho indicato la parte di testo fisso di intestazione, in bianco le celle di esempio su cui deve incidere la macro; come nell'esempio pensavo ad "n" pulsantini come quello che ho messo alla selezione del quale la macro esegue la somma dei fogli di riferimento
Solo che la mia macro brutta ad oggi tra l'altro prima di inziare mi apre il browser per selezionare i file speravo anche di ovviare in qualche modo a questo.

http://www.freeimagehosting.net/f7mm2
AvrilP
Newbie
 
Post: 6
Iscritto il: 20/12/13 11:01

Re: Excel Macro - Somma Sheet diversi File - Excel 2010

Postdi AvrilP » 02/01/14 14:09

scusate ancora, nel frattempo mi sono evoluta un pò tenendo conto del primo suggerimento, anche se certe cose non funzionano (sotto il codice)
1) per incollare la formula ho usato parte del suggerimento, dovrebbe funzionare
2) nella parte iniziale dove prendo semplicemente la somma delle celle di riferimento non ho capito perché ma la macro andava in errore e leggendo il codice ho visto che per uno sheet non prendeva il nome del file, quindi l'ho messo io ma potrebbe funzionare
3) però seppure adesso "compila i dati", mi chiede sempre di aprire il file e questo non dovrebbe accadere, prima me lo chiedeva solo la prima volta (vorrei eliminarlo comunque), ma adesso me lo chiede proprio sempre ad ogni "range" e quindi è ancora peggio :(
4) non ci sarebbe un modo per mettere da qualche parte il nome del file e degli sheet che deve prendere in considerazione senza tante storie oppure è impossibile? si può evitare che chieda sempre di aprire il file io vorrei mantenerli si nella stessa cartella ma dovrebbe capirlo da solo in modo che chi lo usa non debba aprire i file di riferimento
E' un incubo :(

Codice: Seleziona tutto
Application.Goto Reference:="R8C20"
    ActiveCell.FormulaR1C1 = _
        "='[FY14_BeLux Baseline New template.xlsm]Cons - SSAM&GM'!R8C20+'[FY14_BeLux Baseline New template.xlsm]Cons - Ind FS'!R8C20+'[FY14_BeLux Baseline New template.xlsm]Cons - Ind CHT'!R8C20+'[FY14_BeLux Baseline New template.xlsm]Cons - Ind PRD'!R8C20+'[FY14_BeLux Baseline New template.xlsm]Cons - Ind HPS'!R8C20+'[FY14_BeLux Baseline New template.xlsm]Cons - Ind RES'!R8C20+'[FY14_BeLux Baseline New template.xlsm]Cons - SAP'!R8C20+'[FY14_BeLux Baseline New template.xlsm]Cons - F&P'!R8C20+'[FY14_BeLux Baseline New template.xlsm]Cons - DD&A'!R8C20+'[FY14_BeLux Baseline New template.xlsm]Cons - SaaS'!R8C20+'[FY14_BeLux Baseline New template.xlsm]Cons - GMD'!R8C20+'[FY14_BeLux Baseline New template.xlsm]Cons - AD&I'!R8C20"
    Range("T8").Select
    ActiveCell.FormulaR1C1 = _
        "='[FY14_BeLux Baseline New template.xlsm]Cons - SSAM&GM'!RC+'[FY14_BeLux Baseline New template.xlsm]Cons - Ind FS'!RC+'[FY14_BeLux Baseline New template.xlsm]Cons - Ind CHT'!RC+'[FY14_BeLux Baseline New template.xlsm]Cons - Ind PRD'!RC+'[FY14_BeLux Baseline New template.xlsm]Cons - Ind HPS'!RC+'[FY14_BeLux Baseline New template.xlsm]Cons - Ind RES'!RC+'[FY14_BeLux B" & _
        "New template.xlsm]Cons - SAP'!RC+'[FY14_BeLux Baseline New template.xlsm]Cons - F&P'!RC+'[FY14_BeLux Baseline New template.xlsm]Cons - DD&A'!RC+'[FY14_BeLux Baseline New template.xlsm]Cons - SaaS'!RC+'[FY14_BeLux Baseline New template.xlsm]Cons - GMD'!RC+'[FY14_BeLux Baseline New template.xlsm]Cons - AD&I'!RC"
    Range("T8").Copy
    Range("T8:AJ24").PasteSpecial Paste:=xlPasteFormulas
    Range("T8").Copy
    Range("T31:AJ50").PasteSpecial Paste:=xlPasteFormulas
    Range("T8").Copy
    Range("T52:AJ68").PasteSpecial Paste:=xlPasteFormulas
    Range("T8").Copy
    Range("T70:AJ86").PasteSpecial Paste:=xlPasteFormulas
    Range("T8").Copy
    Range("T92:AJ108").PasteSpecial Paste:=xlPasteFormulas
    Range("T8").Copy
    Range("T110:AJ126").PasteSpecial Paste:=xlPasteFormulas
    Range("T8").Copy
    Range("T128:AJ144").PasteSpecial Paste:=xlPasteFormulas
    Range("T8").Copy
    Range("T146:AJ162").PasteSpecial Paste:=xlPasteFormulas
    Range("T8").Copy
    Range("T168:AJ184").PasteSpecial Paste:=xlPasteFormulas
AvrilP
Newbie
 
Post: 6
Iscritto il: 20/12/13 11:01

Re: Excel Macro - Somma Sheet diversi File - Excel 2010

Postdi Flash30005 » 02/01/14 19:35

Questa macro somma al file "Destinazione" tutto ciò che è contenuto nelle tabelle di tutti i fogli di tutti i file contenuti nella stessa cartella del file "Destinazione", chiaramente la cartella dovrà contenere solo file aventi la stessa struttura del file "Destinazione"
Codice: Seleziona tutto
Sub Aprifile()
Application.ScreenUpdating = False
Application.Calculation = xlManual
myDir = ThisWorkbook.Path & "\"
NSumm = ActiveWorkbook.Name
myFile = Dir(myDir & "*.xls?")
Do While myFile <> ""
If myFile = ThisWorkbook.Name Then GoTo nextF
    Workbooks.Open (myDir & myFile)
    For FF = 1 To Worksheets.Count
        For RR = 8 To 206
        If (RR > 24 And RR < 31) Or RR = 51 Or RR = 69 Or (RR > 86 And RR < 92) Or RR = 109 Or RR = 127 Or RR = 145 Or (RR > 162 And RR < 168) Or (RR > 184 And RR < 190) Then GoTo SaltaRR
        For CC = 20 To 36
        Workbooks(NSumm).Sheets("Summary").Cells(RR, CC).Value = Workbooks(NSumm).Sheets("Summary").Cells(RR, CC).Value + Workbooks(myFile).Sheets(FF).Cells(RR, CC).Value
        Next CC
SaltaRR:
        Next RR
    Next FF
skipF:
ActiveWorkbook.Close savechanges = False
nextF:
myFile = Dir
Loop
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub


Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel Macro - Somma Sheet diversi File - Excel 2010

Postdi AvrilP » 03/01/14 20:01

Flash sei bravissimo
Grazie davvero :)
AvrilP
Newbie
 
Post: 6
Iscritto il: 20/12/13 11:01


Torna a Applicazioni Office Windows


Topic correlati a "Excel Macro - Somma Sheet diversi File - Excel 2010":


Chi c’è in linea

Visitano il forum: Nessuno e 13 ospiti