Notifiche
Cancella tutti

La consultazione del forum è libera per tutti.

Per poter porre un quesito è invece necessario essere un utente registrato (clicca qui se non lo sei).

Tutti gli utenti che richiedono un supporto, come da REGOLAMENTO, sono caldamente invitati ad allegare un file di esempio con l'indicazione di quello che si desidera ottenere.

[Risolto] Riepilogo mensile

6 Post
3 Utenti
0 Reactions
171 Visualizzazioni
Forum 1
(@tizianoc)
Post: 13
Utente Cliente
Avviatore di Topic
 

Ho questa cartella di excel che ho chiamato bilancio, vorrei che i dati del foglio Tabella2 vengano riportati nel foglio2 in cui ho raggruppato le descrizioni e vorrei che le cifre andassero a popolare il foglio in base al mese e alle descrizioni è possibile?

Grazie per la collaborazione

 

 

Versione di Excel
Sistema operativo
 
Postato : 25/10/2025 12:47
Alexps81
(@alexps81)
Post: 41
Eminent Member
 

Ciao, ma tu cerchi una soluzione con Formule o Macro? Ad ogni modo, non è molto chiaro ciò che chiedi. Ad esempio nel Foglio "Tabella1" in colonna "Descrizione" hai 10 volte "Bonifico a debito" per il mese di Aprile ed 1 volta nel mese di Marzo.

Quindi nel Foglio2, nella cella "F8" cosa dovrebbe comparire? Stesso discorso per tutte quelle che hanno stessa descrizione e stesso mese.

Poi altra domanda..."Saldo contabile" appartiene all'anno 2022 mentre tutte le altre Descrizioni al 2023. Quindi va considerato anche l'anno oppure non è importate e viene anche questa descrizione inglobata nel risultato finale?

Ancora...ma le Descrizioni nel "Foglio2" le decidi tu quale mettere oppure tutto ciò che è presente in "Tabella1" va comunque inserito nel "Foglio2"? Questo è importante sapere per capire quale strada intraprendere.

Poi nel "Foglio2" hai "Saldo Cassa" e "Saldo Banca" che non sono presenti in "Tabella1". Come vengono popolate quelle celle?

 
Postato : 25/10/2025 20:02
Alexps81
(@alexps81)
Post: 41
Eminent Member
 

Ciao, ho dato uno sguardo più approfondito alla tabella che hai creato nel "Foglio2" e rileggendo meglio quanto hai chiesto ho capito che tu vorresti ottenere il totale tra ENTRATA CASSA, USCITA CASSA, ENTRATA BANCA e USCITA BANCA di ogni "Descrizione" per ogni mese. Ad esempio prendendo sempre in considerazione "Bonifico a debito" abbiamo nel mese di Marzo un totale di 200,00 € come ENTRATA BANCA mentre nel mese di Aprile un totale di 1280,00 € come USCITE BANCA quindi il subtotale sarà di 1480,00 €

Per quanto riguarda il SALDO CASSA e SALDO BANCA non è altro che la differenza tra ENTRATE CASSA/USCITE CASSA e tra ENTRATE BANCA /USCITE BANCA. Alla fine poi c'è il SALDO PREOGRESSIVO che equivale alla somma tra SALDO CASSA e SALDO BANCA in relazione al SALDO PROGRESSIVO precedente.

L'unica cosa che non ho capito è la DATA messa in colonna 1 del "Foglio2". Come si compila quel campo?

Resta poi da capire se è importante la questione dell'anno in quanto in "Tabella1" c'è SALDO CONTABILE che si riferisce al 2022, tutto il resto al 2023.

Inizia a provare questa macro da inserire in un Modulo Standard e vedi se fa più o meno quello che chiedi. Tieni presente che le "Descrizioni" vengono scritte in automatico dalla macro, perciò non deve elencarle a mano nel "Foglio2".

Se invece devi elencarle tu allora bisogna intervenire nella macro e modificarla.

Option Explicit

Sub distribuisci()
    Dim tbl As ListObject
    Dim wsA As Worksheet, wsB As Worksheet
    Dim nomeMese As String, descrizione As String
    Dim cell As Range
    Dim dict As Object
    Dim items As Variant, key As Variant, c As Variant
    Dim coll As Collection
    Dim j As Long, r As Long
    Dim totale As Double, somma As Double, entrateCassa As Double
    Dim usciteCassa As Double, entrateBanca As Double
    Dim usciteBanca As Double, saldoProgressivo As Double
    
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    
    Set wsA = ThisWorkbook.Worksheets("Tabella1")
    Set wsB = ThisWorkbook.Worksheets("Foglio2")
    Set tbl = wsA.ListObjects(1)
    Set dict = CreateObject("Scripting.Dictionary")
    
    For Each cell In tbl.ListColumns(3).DataBodyRange
        If Not IsEmpty(cell) Then
            descrizione = Trim(cell.Value)
            If IsDate(cell.Offset(, -2)) Then
                nomeMese = MonthName(Month(cell.Offset(, -2)), True)
            End If
            items = Array(nomeMese, cell.Offset(, 1).Value, cell.Offset(, 2).Value, cell.Offset(, 3).Value, cell.Offset(, 4).Value)
            If Not dict.Exists(descrizione) Then
                Set coll = New Collection
                coll.Add items
                dict.Add descrizione, coll
            Else
                Set coll = dict(descrizione)
                coll.Add items
            End If
        End If
    Next cell
    
    wsB.Range("B3:V10000").ClearContents
    r = 2
    For Each key In dict.Keys
        totale = 0: somma = 0: entrateCassa = 0: usciteCassa = 0: entrateBanca = 0: usciteBanca = 0
        r = r + 1
        descrizione = key
        wsB.Cells(r, "B").Value = descrizione
        Set coll = dict(descrizione)
        For j = 1 To coll.Count
            items = coll(j)
            nomeMese = items(0)
            c = Application.Match(nomeMese, wsB.Rows(2), 0)
            If Not IsError(c) Then
                somma = items(1) + items(2) + items(3) + items(4)
                wsB.Cells(r, c).Value = wsB.Cells(r, c).Value + somma
                totale = totale + somma
                entrateCassa = entrateCassa + items(1)
                usciteCassa = usciteCassa + items(2)
                entrateBanca = entrateBanca + items(3)
                usciteBanca = usciteBanca + items(4)
            End If
        Next j
        wsB.Cells(r, "O").Value = totale
        wsB.Cells(r, "P").Value = entrateCassa
        wsB.Cells(r, "Q").Value = usciteCassa
        wsB.Cells(r, "R").Value = entrateCassa - usciteCassa
        wsB.Cells(r, "S").Value = entrateBanca
        wsB.Cells(r, "T").Value = usciteBanca
        wsB.Cells(r, "U").Value = entrateBanca - usciteBanca
        saldoProgressivo = saldoProgressivo + (entrateCassa - usciteCassa) + (entrateBanca - usciteBanca)
        wsB.Cells(r, "V").Value = saldoProgressivo
        wsB.Range("O:V").Style = "Currency"
    Next key
    
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    
    MsgBox "Finito!", vbInformation
End Sub
 
Postato : 26/10/2025 09:28
Forum 1
(@tizianoc)
Post: 13
Utente Cliente
Avviatore di Topic
 

Hai ragione avevo messo la colonna Data per riportare i dati dalla Tabella2, ma effettivamente non serve. La riga saldo contabile prende il saldo contabile dell'anno precedente che però deve essere elencata nel mese di gennaio e non di dicembre. La macro funzione bene e ti chiedo se metto il valore valuta mi cambia le cifre senza arrotondare i decimali? Fammi sapere e intanto grazie per la collaborazione.

 
Postato : 26/10/2025 14:59
Forum 3
(@lukereds)
Post: 51
Trusted Member
 

ciao

in C4 inserisci la formula (matriciale, si espande da sola)

=MAP(B4:B13&MESE(1&C2:N2);LAMBDA(x;SOMMA(SE((x=INDIRETTO("Tabella1_1[Descrizione]") &MESE(INDIRETTO("Tabella1_1[Data]")));INDIRETTO("Tabella1_1[[Entrata Cassa]:[Uscita Banca]]")))))

in P2 e trascini a dx di 1 colonna  =Tabella1"D2

in R3  =P3-Q3

in S3 e trascini a dx di 1 colonna =Tabella1!F2

Lascio a te i calcoli per entrate e uscite totali (semplici somme)

 

 

 

 

 

Questo post è stato modificato 1 mese fa 4 tempo da LukeReds
 
Postato : 26/10/2025 20:25
Forum 1
(@tizianoc)
Post: 13
Utente Cliente
Avviatore di Topic
 

Grazie per la risposta, un'ultima cosa la macro la posso lanciare più volte o devo aspettare fine anno ed avere tutte le voci consolidate. Grazie per la risposta e saluti-

 
Postato : 27/10/2025 10:42
Condividi:
My Agile Privacy
Questo sito utilizza cookie tecnici e di profilazione. Cliccando su accetta si autorizzano tutti i cookie di profilazione. Cliccando su rifiuta o la X si rifiutano tutti i cookie di profilazione. Cliccando su personalizza è possibile selezionare quali cookie di profilazione attivare.
Attenzione: alcune funzionalità di questa pagina potrebbero essere bloccate a seguito delle tue scelte privacy