Inoltre e per quanto riguarda la tabella pivot che avevo creato, volevo sapere se fosse possibile, o attraverso il comando della macro, oppure direttamente attraverso una modifica alle impostazioni della stessa che però ignoro, creare un totale progressivo così come l'ho creato io manualmente ma che non migra con gli aggiornamenti rimando bloccato nelle sue posizioni quando espando i campi... questo creandomi difficoltà nella lettura.
Ho interpretato che vuoi costruire un totale progressivo per giorno, ma non sono certo di cosa intendi per "quando espando i campi".
Per quello che io ho capito procederei in questo modo:
(il mio riepilogo e' nelle colonne evidenziate)
In D1 ho calcolato la data massima presente in colonna A con la formula
- Codice: Seleziona tutto
=MAX(A:A)
In D2 invece la data minima, ovviamente con
- Codice: Seleziona tutto
=MIN(A:A)
In D3 e sottostante mi creo la sequenza di date con la formula
- Codice: Seleziona tutto
=D2+1
da copiare verso il basso
In E2 calcolo il progressivo alla prima data con la formula
- Codice: Seleziona tutto
=INFO.DATI.TAB.PIVOT("Valore";$A$1;"Data";D2)
In E3 e sottostanti calcolo il progressivo alla data con la formula
- Codice: Seleziona tutto
=SE(D3<=$D$1;E2+SE.ERRORE(INFO.DATI.TAB.PIVOT("Valore";$A$1;"Data";D3);0);"")
da copiare verso il basso
Nell'esempio il progressivo si ferma alla data 19/2/2018 perche' la tabella non ha dati con Data superiore al 19/2
Non so se e' quello che avevi chiesto...
Infine [...] volevo sapere se fosse possibile evidenziare i dati che a volte e anche retroattivamente, si modificano affinché possa immediatamente verificare il delta e correggere poi le mie contabili con il nuovo dato.
Non ho idea di quale sia il tuo flusso di lavoro. Vedo un file di 4000 righe che contiene circa 350 spedizioni; da questo file con la Sub DayRIEP crei un foglio con la situazione giornaliera; poi vedo una PivotTable.
Non so che cosa vedro' domani e che organizzazione hai dato ai fogli "Giornalieri"
Supponiamo comunque che i foglio "Giornalieri" li esporti in un unico file, che quindi giorno dopo giorno acquista un nuovo foglio.
Supponiamo che il nuovo foglio vada in coda a tutti gli altri (quindi il foglio alla sinistra rappresenta l'eleborazione "giornaliera" del giorno prima.
Possiamo usare questi fogli, cosi' organizzati, per fare dei confronti.
Il confronto puo' evidenziare che una spedizione oggi abbia una valorizzazione diversa da ieri; o questa spedizione ieri non c'era; o una spedizione c'era ieri e oggi non piu'.
Queste sono tutte le condizioni da individuare (ci avevi pensato?)
Possiamo fare il confronto con questa macro:
- Codice: Seleziona tutto
Sub DayCompare()
Dim ySh As Worksheet, I As Long, J As Long
Dim yRan As Range, tdRan As Range, myMatch
Dim LastY As Long, LasTd As Long, cV As Long, cM As Long, cL As Long
'
LastY = Sheets(ActiveSheet.Index - 1).Cells(Rows.Count, 1).End(xlUp).Row
LasTd = Cells(Rows.Count, 1).End(xlUp).Row
'
Set yRan = Sheets(ActiveSheet.Index - 1).Range("A1").Resize(LastY, 1)
Set tdRan = Range("A1").Resize(LasTd, 1)
Range("E:I").ClearContents
For I = 2 To LasTd
myMatch = Application.Match(Cells(I, 1), yRan, 0)
If IsError(myMatch) Then
Cells(I, 5) = "Miss"
cM = cM + 1
Else
If yRan.Cells(myMatch, 3) <> Cells(I, 3) Then
Cells(I, 5) = yRan.Cells(myMatch, 3)
cV = cV + 1
End If
End If
Next I
For I = 2 To LastY
myMatch = Application.Match(yRan.Cells(I, 1), tdRan, 0)
If IsError(myMatch) Then
J = J + 1
yRan.Cells(I, 1).Resize(1, 3).Copy Cells(Rows.Count, 1).End(xlUp).Offset(J, 4)
cL = cL + 1
End If
Next I
MsgBox ("Completato..." & vbCrLf & "Var=" & cV & " Miss=" & cM & " Lost=" & cL)
End Sub
Va messa in un Modulo standard del file in cui, come da ipotesi fatte, accantoni i fogli "giornalieri" (quelli creati con DayRIEP).
Poi si seleziona l'ultimo foglio accodato e si lancia la Sub DayCompare
La macro compara i codici di foglio corrente con quelli del foglio "precedente" (quindi, secondo le ipotesi fatte, relativo al riepilogo giornaliero del giorno prima)
-Se quella spedizione il giorno prima ha una valorizzazione diversa la vecchia valorizzazione sara' riportata in colonna E
-Se quella spedizione il giorno prima non c'e', in colonna E verra' scritto Miss
-Eventuali codici trovati nel foglio precedente ma non presenti nel foglio attuale verranno accodati al contenuto del foglio attuale, nelle colonne E:G
Le colonne E:H del foglio attuale vengono AZZERATE senza preavviso all'avvio della macro.
Spero sia di qualche utilita'.
Ciao