Somma totali se girno uguale



  • Somma totali se girno uguale
    di francesco 69 (utente non iscritto) data: 07/06/2013 18:22:19

    Somma totali se girno uguale

    Salve ho un file excel dove in A2:A100 c'è la colonna data, in K2:100 c'è la colonna totale
    è possibile tramite una formula in L2:100 colonna somma per gg sommare tutti i valori di K2:K100 che anno la stessa data.
    Esempi file allegato
    A2, A3, A4,A5, contengono tutti la stessa data il 19-Feb-13
    K2 € 120,00
    K3 € 336,00
    K4 € 36,00
    K5 € 12,00

    a questo punto la formula mi dovredde sommare nella colonna L "possibilmente in L5 il totale di K2,K3,K4,K5
    spero che sia possibile lo sviluppo di una formula,
    allego file di esempio



  • di Mister_x (utente non iscritto) data: 07/06/2013 20:03:03

    ciao

    riallego il tuo file con le formule

    ciao da mister_x





  • di ciccio (utente non iscritto) data: 08/06/2013 10:14:41


    nel mio caso i dati sono data colonna A importo colonna B somma in colonna F

     
    Sub somma()
     Dim area As Range
     Dim cl As Range
     Dim tot As Single
     Set area = ThisWorkbook.Sheets("Foglio1").Range("a1:a600")
    
     area.Offset(0, 5).ClearContents
     For Each cl In area
         If cl.Value = "" Then Set cl = Nothing: Exit For
         If cl.Value = cl.Offset(1, 0).Value Then
             If tot = 0 Then
                 tot = cl.Offset(0, 2).Value + cl.Offset(1, 2).Value
             Else
                 tot = tot + cl.Offset(1, 2).Value
             End If
         Else
             If tot = 0 Then
                 cl.Offset(0, 5).Value = cl.Offset(0, 2).Value
             Else
                 cl.Offset(0, 5).Value = tot
                 tot = 0
             End If
         End If
     Next cl
    
     Set area = Nothing
     End Sub
    


  • somma totali se giorno uguali
    di Santuberto (utente non iscritto) data: 08/06/2013 11:14:14

    Buongiorno a tutti. Non so se la mia domanda è legittima o sono O.T, ma non riesco a capire una cosa. Per quale motivo tutte queste complicazioni (addirittura una VBA) per una cosa così semplice? Non basterebbe, per la somma di cui si tratta, una semplice e banale (ma pur sempre rispettabile) “somma.se”? Grazie per eventuali spiegazioni.



  • di ciccio (utente non iscritto) data: 08/06/2013 11:32:21

    scusa mi sono dimenticato di dirti che nel mio caso non avevo intestazioni di colonna ma subito date, quindi mentre correggi il resto della sub ricordati di questo particolare
    buon lavoro



  • di Mister_x (utente non iscritto) data: 08/06/2013 11:37:45

    ciao

    visto che francesco non ha ancora risposto e santuberto a detto perche non utilizzare un somma.se()
    rientro con una mia considerazione in base al file posto da francesco
    ammettiamo che le sue date siano messe in modo sfalzato, ossia non in ordine ma una intervallata allaltra nell'arco di un anno la funzione proposta da santuberto va inserita in questo modo in L2 e trascinata, per mettere il totale all'ultima data di riscontro,cosi' non abbiamo proplemi nel cercate l'ultima data posta

    L2=SE(CONTA.SE(A2:$A$1000;A2)=1;SOMMA.SE($A$2:$A$1000;A2;$K$2:$K$1000);"")

    ciao da mister_x






  • di ciccio (utente non iscritto) data: 08/06/2013 11:52:21

    adattato prova

     
    Sub somma()
     Dim area As Range
     Dim cl As Range
     Dim tot As Single
     Set area = ThisWorkbook.Sheets("Foglio1").Range("a2:a600")
    
     area.Offset(1, 11).ClearContents
     For Each cl In area
         If cl.Value = "" Then Set cl = Nothing: Exit For
         If cl.Value = cl.Offset(1, 0).Value Then
             If tot = 0 Then
                 tot = cl.Offset(0, 10).Value + cl.Offset(1, 10).Value
             Else
                 tot = tot + cl.Offset(1, 10).Value
             End If
         Else
             If tot = 0 Then
                 cl.Offset(0, 11).Value = cl.Offset(0, 2).Value
             Else
                 cl.Offset(0, 11).Value = tot
                 tot = 0
             End If
         End If
     Next cl
    
     Set area = Nothing
     End Sub
    



  • di ciccio (utente non iscritto) data: 08/06/2013 11:55:42

    scusate divagazione sull oggetto ...
    che impostazioni ci sono nella prima riga per cui se vendono inseriti dei dati la cella che ha colore neutro diventa di colore verde
    grazie



  • di Santuberto (utente non iscritto) data: 08/06/2013 14:23:20

    Buongiorno Mister_x e grazie.C'è qualcosa che evidentemente mi sfugge. Comunque ti allego il file con la sola formula somma.se Anche se le date sono sfalsate, le somme si trovano lo stesso.



  • di Mister_x (utente non iscritto) data: 09/06/2013 22:10:09

    ciao santuberto

    la domanda era da parte di Francesco

    ((a questo punto la formula mi dovredde sommare nella colonna L "possibilmente in L5 il totale di K2,K3,K4,K5 ))
    quindi sin intende di fare la somma all'ultima data che si trova di quel giorno e non progressivamente
    e' per questo se tu quardavi il file che francesco aveva posto avevi un'idea di perche' ho messo questa formula
    comunque ti riposto il tuo file per farti capire

    PS per ciccio
    Non riesco a capire il suo intervento e a cosa si riferisca la sub() postata prima e poi modificata quando francesco chiedeva una formula e non una sub()

    ti ho rispoto adesso perche' ero via

    ciao da Mister_x






  • di Santuberto (utente non iscritto) data: 10/06/2013 08:49:30

    Buondì Mister_x. Perfetto! Grazie.



  • di ciccio (utente non iscritto) data: 10/06/2013 10:35:53

    chiedo scusa x l'inesattezza non avevo letto con attenzione che veniva richiesta una formula e non una sub



  • di francesco 69 (utente non iscritto) data: 10/06/2013 12:25:22

    grazie per l'aiuto



  • di Mister_x (utente non iscritto) data: 10/06/2013 19:46:48

    ciao ciccio

    Visto che francesco a risolto

    nessun problema , comunque ho provato la tua sub() ma se mettiamo le date falsate questa non calcola all'ultima data ma al valore contiguo che trova,
    in questo caso ho scritto anch'io una sub() usando le funzioni native di excel e il risultato e' questo
    ottenuto dalla mia idea

    ciao da mister_x
     
    Sub Somma_2()
    Dim Nrig As Long
    Dim i As Long
    Nrig = Cells(Rows.Count, "A").End(xlUp).Row
    On Error Resume Next
    Application.EnableEvents = False
     Range("L2:L" & Nrig) = ""
      For i = 2 To Nrig
        If Application.CountIf(Range(Cells(i, "A"), Cells(Nrig, "A")), Cells(i, "A")) = 1 Then
          Cells(i, "L") = Application.SumIf(Range("A2:A" & Nrig), Cells(i, "A"), Range("K2:K" & Nrig))
        End If
      Next i
    Application.EnableEvents = True
    End Sub






  • di ciccio (utente non iscritto) data: 10/06/2013 21:33:24

    complimenti per la nuova versione, visto che sei così bravo la ciliegina sulla torta sarebbe mettere a fianco del totale la data come avevi fatto con la versione formula di Excel, altrimenti ci aggiungo un pezzi di macro che replichi la colonna della data come avevi fatto prima



  • di Mister_x (utente non iscritto) data: 10/06/2013 22:53:45

    ciao ciccio

    e abbastanza che aggiungi una riga di codice quando scrive la somma

    ciao da Mister_x
     
    da cosi'
        If Application.CountIf(Range(Cells(i, "A"), Cells(Nrig, "A")), Cells(i, "A")) = 1 Then
          Cells(i, "L") = Application.SumIf(Range("A2:A" & Nrig), Cells(i, "A"), Range("K2:K" & Nrig))
        End If
    
    a cosi'
       If Application.CountIf(Range(Cells(i, "A"), Cells(Nrig, "A")), Cells(i, "A")) = 1 Then
          Cells(i, "L") = Application.SumIf(Range("A2:A" & Nrig), Cells(i, "A"), Range("K2:K" & Nrig))
          Cells(i, "M") = Format(Cells(i, "A"), "dd/mmm/yy")
        End If






  • di ciccio (utente non iscritto) data: 11/06/2013 08:42:47

    complimenti
    buona giornata
    al prossimo argomento