Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

foglio di riepilogo somme...

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

Re: foglio di riepilogo somme...

Postdi leonardus73 » 21/01/10 15:58

il percorso della macro è "molto" complicato... ma guardando cerco di capire...

ho trovato questo "pezzo" di macro e sono riuscito a capire qualcosina...
ma dovendo aggiungere alle somme anche Q2 e Q3 e la matrice U4:W6, mi prende lo sconforto... :cry:

Codice: Seleziona tutto
'If Dir(Perc & FXLS) = "" Then GoTo AltraDir
    Workbooks.Open Filename:=Perc & FXLS
    'URD = Worksheets("SCHEDA PROGRAMMAZIONE").Range("B" & Rows.Count).End(xlUp).Row
    For CP = 15 To 45
    If CP = 20 Or CP = 23 Or CP = 25 Or CP = 29 Or CP = 33 Or CP = 38 Or CP = 42 Or CP = 46 Then GoTo NuovaRiga
        'URR = Workbooks("Prospetto riepilogativo 2008.xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("A" & Rows.Count).End(xlUp).Row + 1
        Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("H" & CP).Value = Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("H" & CP).Value + Workbooks(FXLS).Worksheets("SCHEDA PROGRAMMAZIONE").Range("H" & CP).Value
        Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("J" & CP).Value = Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("J" & CP).Value + Workbooks(FXLS).Worksheets("SCHEDA PROGRAMMAZIONE").Range("J" & CP).Value
        Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("L" & CP).Value = Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("L" & CP).Value + Workbooks(FXLS).Worksheets("SCHEDA PROGRAMMAZIONE").Range("L" & CP).Value
        Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("O" & CP).Value = Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("O" & CP).Value + Workbooks(FXLS).Worksheets("SCHEDA PROGRAMMAZIONE").Range("O" & CP).Value
        Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("T" & CP).Value = Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("T" & CP).Value + Workbooks(FXLS).Worksheets("SCHEDA PROGRAMMAZIONE").Range("T" & CP).Value
        Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("U" & CP).Value = Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("U" & CP).Value + Workbooks(FXLS).Worksheets("SCHEDA PROGRAMMAZIONE").Range("U" & CP).Value
        Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("V" & CP).Value = Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("V" & CP).Value + Workbooks(FXLS).Worksheets("SCHEDA PROGRAMMAZIONE").Range("V" & CP).Value
NuovaRiga:
    Next CP
Workbooks(FXLS).Close savechanges:=False


e si potrebbe anche sistemare il foglio elencoarchivio come ultimo dei fogli e non per primo?

;)

thx

ps: non mandarmi al diavolo sul più bello...
leonardus73
Utente Junior
 
Post: 13
Iscritto il: 12/01/10 19:15

Sponsor
 

Re: foglio di riepilogo somme...

Postdi leonardus73 » 21/01/10 16:10

Ho modificato così:

Codice: Seleziona tutto
'If Dir(Perc & FXLS) = "" Then GoTo AltraDir
    Workbooks.Open Filename:=Perc & FXLS
    'URD = Worksheets("SCHEDA PROGRAMMAZIONE").Range("B" & Rows.Count).End(xlUp).Row
    For CP = 15 To 45
    If CP = 20 Or CP = 23 Or CP = 25 Or CP = 29 Or CP = 33 Or CP = 38 Or CP = 42 Or CP = 46 Then GoTo NuovaRiga
        'URR = Workbooks("Prospetto riepilogativo 2008.xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("A" & Rows.Count).End(xlUp).Row + 1
        Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("H" & CP).Value = Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("H" & CP).Value + Workbooks(FXLS).Worksheets("SCHEDA PROGRAMMAZIONE").Range("H" & CP).Value
        Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("J" & CP).Value = Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("J" & CP).Value + Workbooks(FXLS).Worksheets("SCHEDA PROGRAMMAZIONE").Range("J" & CP).Value
        Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("L" & CP).Value = Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("L" & CP).Value + Workbooks(FXLS).Worksheets("SCHEDA PROGRAMMAZIONE").Range("L" & CP).Value
        Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("O" & CP).Value = Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("O" & CP).Value + Workbooks(FXLS).Worksheets("SCHEDA PROGRAMMAZIONE").Range("O" & CP).Value
        Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("T" & CP).Value = Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("T" & CP).Value + Workbooks(FXLS).Worksheets("SCHEDA PROGRAMMAZIONE").Range("T" & CP).Value
        Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("U" & CP).Value = Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("U" & CP).Value + Workbooks(FXLS).Worksheets("SCHEDA PROGRAMMAZIONE").Range("U" & CP).Value
        Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("V" & CP).Value = Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("V" & CP).Value + Workbooks(FXLS).Worksheets("SCHEDA PROGRAMMAZIONE").Range("V" & CP).Value
NuovaRiga:
    Next CP

For CP = 2 To 3
'URR = Workbooks("Prospetto riepilogativo 2008.xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("A" & Rows.Count).End(xlUp).Row + 1
Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("Q" & CP).Value = Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("Q" & CP).Value + Workbooks(FXLS).Worksheets("SCHEDA PROGRAMMAZIONE").Range("Q" & CP).Value

Next CP

Workbooks(FXLS).Close savechanges:=False

aggiungendo le righe in rosso e non ci crederai... ma funziona!!!!

lascia perdere la matrice u4:w6 non mi serve!
leonardus73
Utente Junior
 
Post: 13
Iscritto il: 12/01/10 19:15

Re: foglio di riepilogo somme...

Postdi leonardus73 » 21/01/10 17:15

problemino...

vorrei spostare la cella H2 dove tu hai inserito l' anno "2009" in C6... in quanto la cella H2 mi serve per altre descrizioni... e non posso spostarla.

Codice: Seleziona tutto
Worksheets("ElencoArchivio").Range("B1").FormulaR1C1 = "=VALUE(MID('SCHEDA PROGRAMMAZIONE'!R[1]C[6],LEN('SCHEDA PROGRAMMAZIONE'!R[1]C[6])-3,4))"


ho trovato nella macro la riga sopra... scritta più volte, ma non ne capisco il significato...

pare sia la stringa che appare nel foglio "elencoarchivio" nella cella B1 che è quella che mi crea l' errore dopo aver sostituito in tutte le macro il riferimento H2 con C6

Codice: Seleziona tutto
=VALORE(STRINGA.ESTRAI('SCHEDA PROGRAMMAZIONE'![color=#FF0000]H2[/color];LUNGHEZZA('SCHEDA PROGRAMMAZIONE'![color=#FF0000]H2[/color])-3;4))


un aiutino...
leonardus73
Utente Junior
 
Post: 13
Iscritto il: 12/01/10 19:15

Re: foglio di riepilogo somme...

Postdi Flash30005 » 22/01/10 01:21

leonardus73 ha scritto:e si potrebbe anche sistemare il foglio elencoarchivio come ultimo dei fogli e non per primo?

Per farlo devi selezionare l'etichetta del foglio ElencoArchivio (in basso) e tenendo premuto il tasto sinistro del mouse trascini il foglio alla fine (verso destra)
leonardus73 ha scritto:vorrei spostare la cella H2 dove tu hai inserito l' anno "2009" in C6... in quanto la cella H2 mi serve per altre descrizioni... e non posso spostarla.
Codice: Seleziona tutto
Worksheets("ElencoArchivio").Range("B1").FormulaR1C1 = "=VALUE(MID('SCHEDA PROGRAMMAZIONE'!R[1]C[6],LEN('SCHEDA PROGRAMMAZIONE'!R[1]C[6])-3,4))"

ho trovato nella macro la riga sopra... scritta più volte, ma non ne capisco il significato...

Infatti è la formula che viene scritta dalla macro in B1 del foglio ElencoArchivio (viene scritta ogni volta nel caso che venisse erroneamente cancellata)

Sostituisci quel codice con questo
Codice: Seleziona tutto
Worksheets("ElencoArchivio").Range("B1").Value = Worksheets("SCHEDA PROGRAMMAZIONE").Range("C6").Value


Altra modifica è questa
ma è meglio che ti invio la macro "Archivio" completa così evitiamo errori
Codice: Seleziona tutto
Sub Archivio()
Worksheets("ElencoArchivio").Range("A1").FormulaR1C1 = "Elenco File Archiviati"
Worksheets("ElencoArchivio").Range("B1").Value = Worksheets("SCHEDA PROGRAMMAZIONE").Range("C6").Value    '<<<<<< riga che inserisce la formula (modificata per renderla più comprensibile) con riferimento a C6 e non H2
Passo = 0
PercP = "C:\Data\Schede"
ChDrive "C"
Worksheets("SCHEDA PROGRAMMAZIONE").Select
'AnnoA = Mid(Range("C").Value, Len(Range("H2").Value) - 3, 4)   '<<<<<<<<<< commenta con apostrofo all'inizio questa riga o cancellala del tutto
PercE = PercP & AnnoA & "\ArchivioXls\"
URE = Worksheets("ElencoArchivio").Range("A" & Rows.Count).End(xlUp).Row + 1
    Percorso = PercE
    Call ElencoFileA
End Sub

Se copi l'intera macro sostituiscila completamente alla macro Archivio
(copi questa macro, selezioni tutta la tua macro Archivio e incolli sopra)


Un'altra riga di codice da dover sostituire si trova nella macro "Riepilogo"
Codice: Seleziona tutto
Sub Riepilogo()
....
AnnoA = Mid(Range("C6").Value, Len(Range("C6").Value) - 3, 4)   '<<<< sostituire con questa
....

altrimenti la macro punterà sempre su H2 invece di C6
(puoi utilizzare anche Trova nel Menu Modifica inserirai H2 come parola di ricerca, appena trovato sostituirai con C6)


----
Inoltre in C6 del foglio "SCHEDA PROGRAMMAZIONE" inserisci questa formula
Codice: Seleziona tutto
=STRINGA.ESTRAI(CELLA("filename";A1);42;4)


ora H2 la puoi usare per i tuoi scopi

Da questo momento tu hai un file denominato "scheda_riepilogativa_2009.xls" se vuoi avere il 2010 nel foglio non dovrai far altro che rinominare il file in questa maniera "scheda_riepilogativa_2010.xls" e deve essere contenuto nella cartella C:\Data\Schede2010
ripulisci il foglio riepilogo e potrai cominciare un nuovo anno con nuove schede

Fai sapere se tutto ok
Ciao

Nota.
Vedo che fai progressi con le macro, avendo utilizzato parte del codice per adattarlo alle tue esigenze (codice da te aggiunto in rosso), ma devi fare attenzione perché anche quel codice continua a sommare, ad ogni aggiornamento, le celle Q2 e Q3
dovresti usare, semmai, questo codice (che non somma ad ogni nuovo aggiornamento)
Codice: Seleziona tutto
For CP = 2 To 3
Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("Q" & CP).Value =  Workbooks(FXLS).Worksheets("SCHEDA PROGRAMMAZIONE").Range("Q" & CP).Value
Next CP

Però, anche se funzionante, ritengo "sprecato" utilizzare un ciclo For...next in quanto devi copiare due soli valori Q2 e Q3 quindi potresti fare la copia diretta
Codice: Seleziona tutto
Workbooks(FXLS).Worksheets("SCHEDA PROGRAMMAZIONE").Range("Q2:Q3").Copy Destination:=Workbooks("Scheda_riepilogativa_" & AnnoA & ".xls").Worksheets("SCHEDA PROGRAMMAZIONE").Range("Q2")
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-

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "foglio di riepilogo somme...":


Chi c’è in linea

Visitano il forum: alfrimpa e 7 ospiti