Somma



  • Somma
    di Ale (utente non iscritto) data: 26/01/2010

    Se ho creato una macro che mi aggiunge una riga ad una tabella vorrei che una casella in fondo alla tabella che mi fa la somma dei dati superiori si aggiorni, cioè se io ho la somma in g34, vorrei che diventasse g35 poi g36 etc. sempre sommando da g1 a g33, da g1 a g34 poi da g a g35 etc. come faccio? cioè nel codice postato vorrei selezionare g(34+1) ad ogni volta che eseguo la macro
     
    Range("G34").Select
    ActiveCell.FormulaR1C1 = "=SUM(R[-30]C:R[-1]C)"
    Range("H34").Select
    ActiveCell.FormulaR1C1 = "=SUM(R[-30]C:R[-1]C)"
    Range("N34").Select
    ActiveCell.FormulaR1C1 = "=SUM(R[-30]C:R[-1]C)"
    Range("O34").Select
    ActiveCell.FormulaR1C1 = "=SUM(R[-30]C:R[-1]C)"


  • Alternativa
    di Rp71 (utente non iscritto) data: 26/01/2010

    Suggerisco "cruscotto di riepilogo" in testa ai dati soprattutto quando si deve sommare un intervallo incrementale. oltre ad essere + pratico è anche sempre in primo piano utilizzando il blocca riquadri



  • di Baz (utente non iscritto) data: 26/01/2010

    Ciao,
    la prima ti mette in g1 il risultato della somma tra g2 e l'ultima rica occupata di g

    la seconda mette lo stesso risultato dopo l'ultima riga occupata in g

    vedi quale dele 2 macro può andarti meglio

    ciao
     
    Sub SommaPrimaRiga()
    Dim FineR As Long
        FineR = Range("g65536").End(xlUp).Row
        Range("g1") = Application.WorksheetFunction.Sum(Range("g2:g" & FineR))
    End Sub
    
    '----------- oppure la seguente macro ------
    
    
    Sub SommaUltimaRiga()
    Dim FineR As Long
        FineR = Range("g65536").End(xlUp).Row
        Range("g" & FineR + 1) = Application.WorksheetFunction.Sum(Range("g2:g" & FineR))
    End Sub


  • Ulteriore problema
    di Ale (utente non iscritto) data: 26/01/2010

    Sembrano perfette ma sotto la casella di g dove ho la somma ho degli altri dati quindi domani provo se funziona... in realtà la somma non la fa fino all'ultima occupata ma solo fino all'ultima dell'elenco....


  • Ulteriore problema confermato
    di Ale (utente non iscritto) data: 27/01/2010

    Infatti ho provato e non mi funziona nel senso che il codice va bene ma avendo io altri dati non da sommare nella stessa colonna prende ovviamente anche quelli...


  • ...
    di Ale (utente non iscritto) data: 27/01/2010

    In realtà mi basterebbe un modo per cambiare la formula della somma comprendendo anche la nuova riga quando eseguo la macro


  • ---
    di Ale (utente non iscritto) data: 27/01/2010

    Cos'è cruscotto di riepilogo, dove si trova?



  • di Enzo (utente non iscritto) data: 27/01/2010

    Presumo voglia dire 'all'inizio" e non in fondo
    ma una domanda?
    in g1 hai 1
    in g2 hai 2
    in g3 vuoi la somma di g1 e g2
    ora, successivamente vuoi in g4 la somma di g1,g2,g3 (che e' gia' comprensivo di una somma) o vuoi alla fine solo la somma dei dati contenuti nella colonna g senza somme intermedie?
    spero di essermi spiegato


  • ..
    di Ale (utente non iscritto) data: 27/01/2010

    Credo di averti capito, si voglio la somma dei dati senza somme intermedie! il problema è proprio che come ho fatto io in g3 continua a farmi la somma di g1 e g2 sovrascrivendomi questa al dato che era in g2 e aggiungendo una riga è diventato g3. ciaoooooo



  • di Enzo (utente non iscritto) data: 27/01/2010

    Prova questa istruzione e fa sapere se puo' andar bene
     
    Application.ScreenUpdating = False
    Range("G1").Select
    Do
    ActiveCell.Offset(1).Select
    Loop Until ActiveCell.Value = ""
    ActiveCell.FormulaLocal = "=RIF.RIGA()"
    I = ActiveCell.Value - 2
    ActiveCell.Value = ""
    ActiveCell.Offset(-1).Select
    ActiveCell.FormulaLocal = "=SOMMA(G1:G" & I & ")"
    Application.ScreenUpdating = True


  • ..
    di Ale (utente non iscritto) data: 27/01/2010

    Grazie davvero per l'aiuto ma ho provato ma non credo di aver capito bene, dove mi farebbe la somma la tua istruzione? ho provato a modificare la macro inserendo quello che mi hai detto tu al posto di range("g34").select
    activecell.formular1c1 = "=sum(r[-30]c:r[-1]c)"
    ma non mi fa la somma a fine tabella in g..



  • di Enzo (utente non iscritto) data: 27/01/2010

    ....no calma riepiloghiamo
    l'istruzione che ti ho inserito fa questo :
    va in a1 scende fino all'ultima cella dove hai inserito la funzione di somma, cancella quella funzione e ne reinserisce un altra
    se successivamente tu inserisci una riga e quindi un valore di conseguenza le celle scendono di un valore
    se fai ripartire la macro lui fa la stessa cosa, scende fino all'ultima cella vuota e ti reinserisce la funzione di somma calcolando i nuovi valori
    p.s. se non e' quello che vuoi faresti meglio a postare un file di esempio cosi' almeno ci si capisce


  • ...
    di Ale (utente non iscritto) data: 27/01/2010

    Perfetto! riesco a farla funzionare mi sembra. tu hai scritto a1 ma evidentemente era g1 solo 1 cosa la somma deve farla dalla riga 4 e non dalla riga 1 quindi la formula è sum(g4:xxx), come faccio?



  • di Rp71 (utente non iscritto) data: 27/01/2010

    Esatto enzo, grazie
    per cruscotto di riepilogo gergalmente si intende un insieme di celle riportanti operazioni di vario tipo (somme, subtotali, medie, ecc...) "in cima" ai dati.
    normalmente riga 1:1 (se basta), poi si lascia almeno una riga vuota (es la 2:2) e dalla riga 3:3 in giù si posiziona il db o la tabella (intestazioni+dati)
    che sia giusta o sbagliata questa impostazione è questione di punti di vista ... di sicuro ha molti vantaggi.
    saluti
    r



  • di Enzo (utente non iscritto) data: 27/01/2010

    Prova ora
     
    Range("G4").Select
    Do
    ActiveCell.Offset(1).Select
    Loop Until ActiveCell.Value = ""
    ActiveCell.FormulaLocal = "=RIF.RIGA()"
    I = ActiveCell.Value - 2
    ActiveCell.Value = ""
    ActiveCell.Offset(-1).Select
    ActiveCell.FormulaLocal = "=SOMMA(G4:G" & I & ")"
    Application.ScreenUpdating = True


  • ...
    di Ale (utente non iscritto) data: 28/01/2010

    Grazie mille enzo ma non mi funziona, nel senso che alla prima volta che eseguo la macro la somma parte da g4 quindi è giusta ma se rieseguo la macro parte da g5 poi g6 etc, ma io vorrei che partisse sempre da g4...


  • ..
    di Ale (utente non iscritto) data: 28/01/2010

    Ops ho notato ora che in g4 al nuovo inserimento mi mette =somma(g3:g4) ed invece dovrebbe essere vuoto......


  • ..
    di Ale (utente non iscritto) data: 28/01/2010

    ....ma in g4 mi mette =somma(g3:g4) solo dal secondo inserimento...., in pratica il primo è giusto poi no



  • di Enzo (utente non iscritto) data: 28/01/2010

    ...ripeto per capirci qualcosa si dovrebbe vedere il file
    in ogni caso come ti aveso spiegato precedentemente la macro si comporta allo stesso modo, parte da una cella (g4) scende fino alla prima cella vuota, trova il riferimento di riga
    cancella la funzione della somma precedente ed inserisce la funzione di somma nuova


  • ...
    di Ale (utente non iscritto) data: 28/01/2010

    Alèèèèèèèèèèè, capito dove sbagliavo, siccome scende fino alla prima riga vuota, inserendo una nuova riga devo inserire chiaramente un valore, se no sbarella!! comunque ora sembra a posto, grazie mille davvero per l'aiuto, è stato preziosissimo!!!!!



  • di Enzo (utente non iscritto) data: 28/01/2010

    ....esatto
    parto dal presupposto che se inserisci una riga tu debba poi inserire un valore in quella cella
    se non fosse cosi' devi trovare un alternativa


  • ....
    di Ale (utente non iscritto) data: 28/01/2010

    Parti dal presupposto giusto! provando facevo quell'errore ma deve essere utilizzato mettendo dei dati non lasciando vuoto



  • di Enzo (utente non iscritto) data: 28/01/2010

    In qualsiasi modo utilizzi la funzione somma il range delle celle deve essere occupato


  • ....
    di Ale (utente non iscritto) data: 28/01/2010

    W enzo!!!! mi serviva per lavoro, ho fatto bella figura grazie a te!!!!!!!!!!!!!!


  • ...
    di Ale (utente non iscritto) data: 11/02/2010

    Ho fatto una piccola modifica: al posto della formula somma ho messo la formula subtotale 9 e tutto mi funziona egregiamente.
    ancora grazie