Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Funzione Excel....

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    30

    Funzione Excel....

    Ciao a tutti,
    ho una tabella con delle date in formato GG/MM/AAAA e dei valori in euro corrispondenti. Sono delle spese.
    Vorrei effettuare la somma delle spese in un determinato mese.
    Ho provato con la SOMMA.SE ma non mi funziona poichè devo estrarre il mese per ogni riga da un intervallo di date.
    Vorrei fare il tutto senza celle di appoggio in cui estrarre il mese di ogni riga.
    Ciao

  2. #2
    Utente di HTML.it L'avatar di longline
    Registrato dal
    Sep 2001
    Messaggi
    5,363
    Se hai ad esempio la data nella cella C1, in qualsiasi formula la funzione MESE(C1) ti restituisce il numero del mese della data nella cella C1.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    30
    Si, ma il problema è che la somma se funziona in questo modo:

    SOMMA.SE("intervallo_da_controllare","valore_con_c ui_confrontare_l'intervallo","Celle_da_sommare")

    in questo caso per gennaio dovrei fare:

    SOMMA.SE(MESE(date_da_controllare),01,celle_da_som mare)

    e la cosa non funziona poichè MESE determina il mese di una singola cella ma non di un intervallo.

  4. #4
    Utente di HTML.it L'avatar di longline
    Registrato dal
    Sep 2001
    Messaggi
    5,363
    Purtroppo penso che senza usare celle di appoggio l'unico modo sia creare una funzione apposita con l'editor di visual basic.

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922

    Re: Funzione Excel....

    Originariamente inviato da donots
    Ciao a tutti,
    ho una tabella con delle date in formato GG/MM/AAAA e dei valori in euro corrispondenti. Sono delle spese.
    Vorrei effettuare la somma delle spese in un determinato mese.
    Ho provato con la SOMMA.SE ma non mi funziona poichè devo estrarre il mese per ogni riga da un intervallo di date.
    Vorrei fare il tutto senza celle di appoggio in cui estrarre il mese di ogni riga.
    Ciao
    E se partendo dai tuoi dati ricorressi a una tabella pivot raggruppando per mese ottenendo quindi tutti i totali relativi ai singoli mesi?

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    30
    Vorrei evitare tabelle pivot e filtri.
    Mi piacerebbe risolvere il problema con il semplice uso delle formule di excel.

  7. #7
    Utente di HTML.it L'avatar di longline
    Registrato dal
    Sep 2001
    Messaggi
    5,363
    Devi fare così:

    - Apri l'editor di VB: menu Strumenti > Macro > Visual Basic Editor (ALt+F11)

    - Nell'editor VB crea un Modulo che contenga la funzione personalizzata: menu Inserisci > Modulo

    - Crea la funzione personalizzata: menu Inserisci > Routine

    - Compila la finestra coi seguenti dati:
    Nome: SommaMese
    Tipo: Function
    Area di validità: Public

    - Ti comparirà l'editor con il seguente codice:

    codice:
    Public Function SommaMese()
    
    End Function
    Devi modificarlo così:

    codice:
    Public Function SommaMese(IntervalloValori As Range, IntervalloDate As Range, MeseScelto As Long)
        SommaMese = 0
        puntvalore = 1
        
        For Each cella In IntervalloValori
            puntdata = 1
            For Each celladata In IntervalloDate
                If puntvalore = puntdata Then
                    If CLng(Month(celladata.Value)) = MeseScelto Then
                        SommaMese = SommaMese + cella.Value
                    End If
                End If
                puntdata = puntdata + 1
            Next
            puntvalore = puntvalore + 1
        Next
    End Function
    Ora vai nella cella dove vuoi il totale calcolato e puoi usare la funzione SommaMese con questa sintassi:

    =SommaMese(IntervalloValori; IntervalloDate; NumeroMeseScelto)

    ad es:
    codice:
    =SommaMese(D1:D38;C1:C38;2)
    
    mapporc non riesco a non far visualizzare la faccina :D...
    Qui lo scrivo con uno spazio tra D1: e D38, tu togli lo spazio
    
    =SommaMese(D1: D38;C1:C38;2)

  8. #8
    Utente di HTML.it L'avatar di longline
    Registrato dal
    Sep 2001
    Messaggi
    5,363
    La funzione si incasina se hai valori in un range maggiore di un anno. Per selezionare sia il mese sia l'anno devi modificare la funzione in questo modo:

    codice:
    Public Function SommaMese(IntervalloValori As Range, IntervalloDate As Range, MeseScelto As Long, AnnoScelto As Long)
        SommaMese = 0
        puntvalore = 1
        
        For Each cella In IntervalloValori
            puntdata = 1
            For Each celladata In IntervalloDate
                If puntvalore = puntdata Then
                    If CLng(Month(celladata.Value)) = MeseScelto And CLng(Year(celladata.Value)) = AnnoScelto Then
                        SommaMese = SommaMese + cella.Value
                    End If
                End If
                puntdata = puntdata + 1
            Next
            puntvalore = puntvalore + 1
        Next
    End Function
    E la sintassi diventa

    =SommaMese(IntervalloValori; IntervalloDate; NumeroMeseScelto, AnnoScelto)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.