somma di selezione area



  • somma di selezione area
    di andre (utente non iscritto) data: 14/05/2014 18:08:11

    Ciao a tutti, premetto che sono un novellino nell'utilizzo di VBA.

    Vorrei creare una funzione che accetta in input un intervallo di celle specificato dall'utente (N righe e M colonne) e restituisce la media delle somme delle celle in ciascuna colonna. Per specificato dall'utente intendo come quando si scrive una qualsiasi formula excel e si seleziona l'intervallo di interesse con il mouse.
    Mi spiego meglio: se l'area comprende le celle da A1 a C3, vorrei prima la somma della colonna A, della B e della C, e poi fare la media dei risultati.

    Grazie mille!
    Andrea



  • di Textomb data: 14/05/2014 18:29:39

    cit: se l'area comprende le celle da A1 a C3, vorrei prima la somma della colonna A, della B e della C, e poi fare la media dei risultati.

    Analizziamo quello che hai scritto:
    vorrei prima la somma della colonna A (dove visualizzarla? in una cella in un Msgbox,... non è chiaro) della B (dove visualizzarla? nella stessa cella, in un'altra accanto, in un altro Msgbox) e della C (dove? stesse considerazioni di prima). E poi fare la media (dove???).
    Se vuoi creare una funzione, ti verrà restituito un valore. Quale vuoi?
    Bisogna essere chiari quando si esprime una richiesta.
    Altrimenti l'aiuto non può arrivare e qualora dovesse arrivare non è efficace.



  • di andre (utente non iscritto) data: 14/05/2014 18:59:15

    Cercherò di essere più preciso ;)
    La somma delle varie colonne non mi interessa visualizzarla, mi interessa solo la loro media (output della funzione).
    Quest'ultima la voglio visualizzare in una cella che scelgo io (niente msgbox o altro), proprio come si usa una funzione built-in di excel. La user experience dovrebbe essere proprio quella: clicchi su una cella in cui si vuole il risultato, inserisci la funzione e manualmente "disegni" l'argomento o lo inserisci nella barra della formula.
    Spero di essere stato più chiaro!!

    Grazie!
    Andrea



  • di lepat (utente non iscritto) data: 14/05/2014 19:37:13

    prova questa
     
    Function mediac(rng As Range)
    For c = 1 To rng.Columns.Count
      s = s + Application.WorksheetFunction.Sum(rng.Columns(c))
    Next
    media1 = s / rng.Columns.Count
    End Function



  • di lepat (utente non iscritto) data: 14/05/2014 19:38:33

    correggi
    media1 = s / rng.Columns.Count
    in
    mediac = s / rng.Columns.Count




  • di scossa data: 14/05/2014 20:15:14

    O, più semplicemente:


    Function uMediaCol(ByVal rng As Range) As Double
    uMediaCol = Application.Sum(rng) / rng.Columns.Count
    End Function



    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)




  • di lepat (utente non iscritto) data: 14/05/2014 20:25:30

    hai ragione scossa, bastava ragionare un po' invece si seguire bovinamente le indicazioni



  • di andre (utente non iscritto) data: 15/05/2014 09:16:31

    Perfetto funziona! Grazie mille! :)