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.
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
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?
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
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.
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)
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-
