Somma con condizioni ripetute



  • Somma con condizioni ripetute
    di Patri (utente non iscritto) data: 25/10/2015 18:05:19

    Allego un file dove devono essere sommate le ore presenza di ogni nominativo ma con il parametro del cantiere.
    Ho costruito la formula (vedi sotto la prima tabella) ma per range relativo al nominativo. Vorrei trovare una formula che comprendesse tutto il database (tabella 1), sommando solo le ore del singolo nominativo ma con i totali per ogni cantiere. Ho provato con il SOMMA.PIU.SE e con MATRICE.SOMMA.PRODOTTO ma non riesco a gestire il cantiere !
    Mi sto perdendo nel secondo bicchiere d'acqua ?
    Puoi aiutarmi ? E' per una buona causa (lavoro di domenica !!)
    Grazie ancora per l'aiuto, allego il file (se puoi, se vuoi).
    Patrizia



  • di alfrimpa data: 25/10/2015 19:00:46

    Ciao Patrizia

    Con le formule non vado d'accordo per cui mi affido più volentieri al VBA.

    Ho quindi scritto la sottostante UDF (User Defined Function - Funzione definita dall'utente) che ha due parametri: la zona ove si deve effettuare il calcolo e il nome del cantiere.

    Quindi partendo dal tuo esempio se si vogliono calcolare le ore effettuate da mario rossi si dovrà scrivere (come ho fatto)

    =MiaSomma(C6:AG6;E75)

    Non so se sono stato chiaro e soprattutto se ho interpretato bene la tua richiesta.

    Fammi sapere e se hai bisogno di altro sono qua.

    Alfredo 

    P.S. Come vedi anch'io lavoro di domenica
     
    Function MiaSomma(rng As Range, can As String) As Long
    Dim cel As Range
    For Each cel In rng
        If cel.Offset(2, 0) = Right(can, 2) Then
            MiaSomma = MiaSomma + cel.Value
        End If
    Next cel
    End Function
    






  • di alfrimpa data: 25/10/2015 19:26:48

    Volendo si può "generalizzare" ulteriormente la funzione passandole come primo parametro la cella che contiene il nominativo ed impostare di conseguenza il range di ricerca per la somma delle ore.

    Magari domani te la propongo.

    Sono stato chiaro?

    Alfredo





  • di alfrimpa data: 25/10/2015 20:01:21

    Ciao Patrizia

    Ti allego nuovo file (Patrizia2.xlsm) con la nuova funzione che vedi sotto.

    Stavolta non ti dico nulla e ti invito a scoprire come funziona

    Fammi sapere e buona serata.

    Alfredo
     
    Function MiaSomma(nome As Range, can As String) As Long
    Dim rng As Range
    Dim cel As Range
    Set rng = Range("c" & nome.Row & ":" & "ag" & nome.Row)
    For Each cel In rng
        If cel.Offset(2, 0) = Right(can, 2) Then
            MiaSomma = MiaSomma + cel.Value
        End If
    Next cel
    End Function
    





  • Somma con condizioni ripetute
    di patri.la (utente non iscritto) data: 08/11/2015 11:50:22

    Ciao Alfredo,
    scusami tanto se non ho risposto prima, superimpegni !!
    Ho ripreso oggi il file della mia amica e ho letto le tue risposte. Ti ringrazio !!
    Ho tentato di scaricare i file ma non li trovo più. Forse perché é passato troppo tempo ? (giustamente)
    Cortesemente, potesti riallegarli... se li hai ancora !!, anche perché non conosco assolutamente l'UDF...ma mi piacerebbe capirlo.
    In ogni caso ti ringrazio per la disponibilità,
    Buona giornata ! Patrizia



  • di alfrimpa data: 08/11/2015 17:39:12

    Cara Patrizia e ben trovata.

    Ovviamente il file ce l'ho ancora ma prima di allegartelo voglio completarlo in tutti i mesi.

    Ho cancellato tutte le "tue" precedenti formule ed utilizzerai solo la mia.

    Mi dovresti dire una cosa: nella cella AG76 e sottostanti che calcolo deve essere inserito? Dalla precedente formula non sono riuscito a capirlo.

    Quanto alla spiegazione della UDF (che sta per User Defined Function ossia Funzione definita dall'utente) la vedo un po' complicata nel senso che per chi è completamente a digiuno di Visual Basic for Application (come ritengo tu sia) la vedo un po' dura.

    Se, invece, sei una che non si accontenta che la formula funzioni bene ma ne vuoi capire di più (ovviamente impegnandoti) allora sarò ben lieto di darti tutte le delucidazioni/chiarimenti/spiegazioni che vorrai.

    Infine, se contrariamente a quanto penso, hai una qualche conoscenza del VBA fammi sapere a che livello pensi di essere così che io possa "calibrare" al meglio le spiegazioni che eventualmente mi chiederai.

    Fammi sapere.

    Alfredo

    P.S. Il file penso di riuscire a riallegartelo completo (se non ci sono problemi) nella giornata di domani ora c'è la partita del Napoli )





  • di Cucù data: 08/11/2015 20:24:08

    E allora????

    FORZA NAPOLI!!!



  • di alfrimpa data: 08/11/2015 20:27:39

    Cucù sei anche tu tifoso del Napoli?

    Hai visto che fuoriclasse Higuain?

    Alfredo





  • di alfrimpa data: 09/11/2015 12:19:11

    Ciao Patrizia ed un saluto a Cucù.

    Ti riallego il file patrizia2.xlsm con la mia funzione (MiaSomma) inserita, limitatamente al mese di ottobre.

    Prova a vedere se ci capisci qualcosa e per qualunque chiarimento sono qua.

    Alfredo







  • di alfrimpa data: 09/11/2015 15:39:20

    Ciao Patrizia

    Cercherò di darti qualche iniziale spiegazione.

    Innanzitutto una premessa: il VBA.

    Il VBA (Visual basic for Application) è un linguaggio di programmazione comune a tutte le applicazioni Office. Ovviamente ciascuna applicazione si differenzia in base alle proprie peculiarità.

    In VBA si possono scrivere due tipi di procedure: procedure sub e procedure function. La differenza tra le due è che mentre con le sub si compiono delle azioni con le function si effettuano calcoli (in base a dei parametri) e ne viene restituito il risultato.

    Quindi se dobbiamo copiare il valore di una cella, salvare un file, applicare un formato dovremo compiere un’azione e quindi dovremo scrivere una sub.

    Se invece dobbiamo calcolare ad esempio l’area del triangolo (in Excel non c’è una funzione che fa questo) dovremo scrivere una function che in base ai parametri passati (base ed altezza) effettui il calcolo.

    Lasciamo stare le sub e parliamo delle function visto che per il tuo caso abbiamo utilizzato questa.

    La function MiaSomma ha due parametri: none e can; il primo accoglierà il nome del dipendente ed il secondo il numero del cantiere.

    Quindi se il nome del dipendente è in A6 ed il cantiere in C75 se scrivo =MiaSomma(A6;C75) la funzione effettuerà il calcolo secondo le istruzioni in essa contenute.

    Ora cerchiamo di vedere più da vicino la funzione.

    Le istruzioni: Dim rng As Range e Dim cel As Range sono dichiarazioni di variabili occorrenti all’esecuzione della funzione (no è il caso qui di affrontare il discorso generale sulle variabili perché sarebbe troppo lungo).

    L’istruzione: Set rng = Range("c" & nome.Row & ":" & "ag" & nome.Row)imposta un intervallo di celle che va dalla cella “C” e il numero di riga della cella contenente il nome sino alla cella AG con pari numero di riga.

    Con il successivo insieme di istruzioni

    For Each cel In rng
    If cel.Offset(2, 0) = Right(can, 2) Then
    MiaSomma = MiaSomma + cel.Value
    End If
    Next cel

    Iniziamo un ciclo ossia diciamo ad Excel di passare in rassegna tutte le celle dell’intervallo rng con una condizione: se la cella che è sotto di due righe (ossia quella del cantiere) è uguale agli ultimi due caratteri a destra della cella che abbiamo passato come secondo parametro (cioè sempre il cantiere) allora fai la somma cumulativi dei valori (solo quelli che soddisfano la condizione) dell’intervallo di celle denominato rng.

    Lo so che non è semplice ma, credimi, ho cercato di fare del mio meglio.

    Se hai domande chiedi pure e scusa per la prolissità.

    Alfredo





  • di alfrimpa data: 09/11/2015 17:41:25

    Scusa Patrizia ma tu usi Excel per Windows o per Mac?

    Se hai quello per Mac non posso dare certezze sul corretto funzionamento della function.

    Alfredo




  • Somma con condizioni ripetute
    di patri.la (utente non iscritto) data: 16/11/2015 12:24:20

    Ciao Alfredo, scusa se non ho risposto subito ma.... sono caduta e mi sono fratturata la clavicola a dx. SOB !!!
    Chiaramente, sono in difficoltà anche a scrivere (con la sinistra) x non parlare del mouse..
    Ho letto un paio di volte la tua "lezione" sulle function (mondo x me sconosciuto) e sto iniziando a capire come funziona! Ma mi sa che x me la strada é lunga.
    Ho creato un libro con IBook Author dove raccolgo tutto sul vba x imparare. Ti dedicherò un capitolo sulle function.
    Io uso excel for mac.
    Sai che non riesco ancora a trovare il file che mi hai allegato ? Sono così imbranata ?
    vorrei testarlo sul mac.
    Cmq ora sono in stand by e posso solo progettare mentalmente quello che dovrò fare x il file della mia amica.
    Grazie 1000 x la lezione e la disponibilità..
    Se puoi, aspetto il file.
    buona giornata, Patrizia (30 minuti x scrivere queste poche righe)



  • di alfrimpa data: 16/11/2015 12:42:57

    Ciao Patrizia

    Mi dispiace veramente tanto per quel che ti è accaduto e spero che tu ti possa rimettere presto.

    Quanto al file il problema è che il sistema dopo alcuni giorni li elimina per cui se tu non lo scarichi subito sei punto e daccapo; te l'ho riallegato (Patrizia2.xlsm) ma scaricalo subito per non trovarti punto e daccapo.

    Relativamente alla questione "Mac" come dicevo prima non so darti certezza del corretto funzionamento del tutto anche su Mac; tu hai la possibilità di provare il file su un pc Windows? Se non altro per capire il funzionamento del file e se risponde alle esigenze tu e della tua amica.

    Fammi sapere e sfrutta questo tempo di forzata immobilità per studiare il VBA

    Comunque per qualunque cosa non hai che da chiedere.

    Alfredo

    P.S. Cercherò anch'io di provare il file su mac.
    P.P.S. Ho aperto il file con il Mac e mi sembra che non ci siano problemi; ma oltre questo non riesco a dirti perché il con il Mac mi sento come se avessi entrambe le clavicole fratturate




  • Somma con condizioni ripetute
    di patri.la (utente non iscritto) data: 17/11/2015 09:49:12

    grazie Alfredo, acchiappato il file.
    Ora lo provo.
    per quanto riguarda il Mac ........ahahahah, segnalerò a Apple che fa male alle clavicole !!!!!!!
    senz'altro mi studierò il vba in questi giorni, ho il libro di Giaccaglini e altri link.

    grazie 1000000 di tutto. Quando userò entrambe le clavicole, potrò allegarti il file completo ? credo che per alcune istruzioni io sia stata un po' "registra macro"
    buona giornata,
    Patrizia



  • di alfrimpa data: 17/11/2015 11:17:02

    Ciao Patrizia

    Visto che sei riuscita a scaricare il file siamo già ad un buon punto di partenza.

    Quindi ora che ce l'hai fai delle prove e controlla che funzioni correttamente e soprattutto cerca di capirne il funzionamento; qualora qualcosa non fosse chiaro scrivimi pure qui e cercherò di chiarire i tuoi dubbi (ma cerca di non far passare tanto tempo altrimenti mi dimentico le cose e devo "ricostruire" tutti i ragionamenti fatti ).

    Relativamente a Gianni Giaccaglini ti dico che è un ottimo autore, che oltre ad essere un grande esperto in materia, ha uno stile di scrittura assai piacevole da leggere (io l'ho letto molte volte in passato).

    Resto in attesa di tue notizie.

    Alfredo