Condividi:        

Excel, conteggio giornaliero mantenendo i dati storici

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Excel, conteggio giornaliero mantenendo i dati storici

Postdi fantina » 14/02/17 13:36

Ciaooo! :)
ho un file excel condiviso sul quale registriamo l'andamento di svariate pratiche tutte messe in elenco; la colonna che mi interessa monitorare è la colonna T, che risponde a svariati status, Open, In Process, Closed etc, ma a me interessa solo lo status In Process. Vorrei che tutti i giorni la formula mi calcolasse quanti In Process ci sono quel giorno, e fin qui ci arrivo, ma vorrei che mentre aggiorna i giorni successivi non perda il dato dei giorni precedenti, che deve rimanere congelato: questo per vedere l'andamento giornaliero del lavoro. Immagino che dovrò inserire nel foglio una specie di calendario (???) Essendo un file modificabile in condivisione una macro potrebbe creare problemi? Si puo' fare solo con le formule?

Grazie mille! :)
fantina
Utente Senior
 
Post: 491
Iscritto il: 05/03/07 15:24

Sponsor
 

Re: Excel, conteggio giornaliero mantenendo i dati storici

Postdi wallace&gromit » 14/02/17 17:53

Ciao Fantina,
penso che il tuo sia un caso di "pivotfobia" recidiva!
eppure mi sembrava che ad un certo punto ne eri uscita e ti eri quasi convinta delle loro potenzialità, ma se occorre iniziamo una nuova terapia, o meglio, se risolvi da sola questo caso (con una pivot, appunto) sei sulla via della guarigione :lol:
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: Excel, conteggio giornaliero mantenendo i dati storici

Postdi fantina » 14/02/17 19:18

Ciao Wallace! :)
Ma tu dici che mi devo fare una tabella pivot tutti i giorni per ogni giorno? Non puo' fare tutto excel? :-?
fantina
Utente Senior
 
Post: 491
Iscritto il: 05/03/07 15:24

Re: Excel, conteggio giornaliero mantenendo i dati storici

Postdi wallace&gromit » 14/02/17 20:49

A meno che ho capito male l'impostazione del tuo file, di pivot ne fai una sola e ogni giorno ti basta aggiornarla e ti aggiunge la nuova data nella lista
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: Excel, conteggio giornaliero mantenendo i dati storici

Postdi wallace&gromit » 14/02/17 21:35

Ma forse ho capito male : se lo stato di un determinato processo varia nel tempo la pivot perde l'informazione precedente. In questo caso non vedo altra soluzione che una macro che fissa ogni giorno lo stato attuale.
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: Excel, conteggio giornaliero mantenendo i dati storici

Postdi fantina » 15/02/17 00:31

Ma no, in reatà hai capito bene, solo che anzichè fare il solito report periodico, magari settimanale, con tanto di media di durata, avrei voluto un calcolatore giornaliero con immagazzinamento dei dati storici. Non sono una pelandrona, è che ho troppo da fare!!!
:aaah
fantina
Utente Senior
 
Post: 491
Iscritto il: 05/03/07 15:24

Re: Excel, conteggio giornaliero mantenendo i dati storici

Postdi Anthony47 » 15/02/17 01:48

Bentornata...
Le macro possono benissimo essere inserite nel file prima di renderlo disponibile per la condivisione.
Per l'elenco delle limitazioni vedere l'help on line di Excel alla voce "Utilizzare una cartella condivisa per la collaborazione", paragrafo Caratteristiche non supportate in una cartella di lavoro condivisa.

Il mio suggerimento pertanto e' questo:
1) aggiungi un foglio (prima della condivisione) e chiamalo mettiamo StatusLog; sara' quello che conterra' la situazione giorno dopo giorno
In riga 1, inserisci le seguenti intestazioni a partire da colonna A:
Codice: Seleziona tutto
Data, Stato1, Stato2, Stato3, etc
Come Stato1-2-3-etc usa esattamente le stesse stringhe con cui gli stati compaiono in colonna T del foglio Dati, dei soli stati che ti interessa conteggiare.
2) supponiamo che i dati da monitorare siano nel foglio chiamato fantasiosamente "Dati"

3) Inserisci in un Modulo standard del vba, es Modulo1, questa macro:
Codice: Seleziona tutto
Sub CheckStats()
Dim LastA As Long, LastLog As Long, Logger As String, tabDati As String
'
tabDati = "Dati"            '<<< Il foglio con i dati da esaminare
Logger = "StatusLog"        '<<< Il foglio con il riepilogo degli stati giornalieri
'
LastLog = Sheets(tabDati).Cells(Rows.Count, "T").End(xlUp).Row
With ThisWorkbook.Sheets(Logger)
'set today date
    LastA = .Cells(.Rows.Count, 1).End(xlUp).Row
    If TypeName(.Cells(LastA, 1).Value) = "Date" Then
        If .Cells(LastA, 1).Value <> Int(Now) Then
            LastA = LastA + 1
            .Cells(LastA, 1).Value = Int(Now)
        End If
    Else
        .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0) = Int(Now)
    End If
'riepilogo di stati:
    For I = 2 To .Cells(1, .Columns.Count).End(xlToLeft).Column
        .Cells(LastA, I) = Evaluate("COUNTIF(" & tabDati & "!T1:T" & LastLog & ", """ & .Cells(1, I).Value & """)")
    Next I
End With
End Sub

Modifica le righe marcate <<< se i nomi dei fogli differiscono da quanto io ho ipotizzato.

4) Nel modulo Questa_cartella_di_lavoro inserisci questo codice:
Codice: Seleziona tutto
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Call CheckStats
End Sub

Private Sub Workbook_Open()
    Call CheckStats
End Sub

5) Infine nel modulo di codice vba del foglio StatusLog (se non sai identificarlo al volo: tasto dx sul tab col nome foglio, scegli Visualizza codice) inserisci questo codice:
Codice: Seleziona tutto
Private Sub Worksheet_Activate()
    Call CheckStats
End Sub

A questo punto se salvi il file, nel foglio StatusLog dovrebbe essere aggiunta (la prima volta, o comunque se manca) la data corrente e, per ogni stato indicato da B1 verso destra, il conteggio corrente.
Questo ricalcolo avverra' anche tutte le volte che il file viene salvato e tutte le volte che il foglio StatusLog viene attivato.

Ho testato la cosa su un file condiviso tra due utenti su uno stesso Pc, ma non in una reale situazione di condivisione tra piu' utenti; questo test lo devi fare tu.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel, conteggio giornaliero mantenendo i dati storici

Postdi fantina » 15/02/17 18:02

Ben trovato Anthony :)

La tua pozione magica sembra funzionare perfettamente! Ora devo solo capire cosa succede con la condivisione....

Intanto.... graaziee!! :)

E grazie a tutti voi!
fantina
Utente Senior
 
Post: 491
Iscritto il: 05/03/07 15:24

Re: Excel, conteggio giornaliero mantenendo i dati storici

Postdi fantina » 16/02/17 21:06

Ciao Anthony,
ad oggi tutto gira perfettamente, cioè al primo lancio non proprio, ma dopo tutto preciso. La condivisione per ora non fa le bizze :)
Che dirti... grazie! siccome ho altri file di monitoraggio con la stessa struttura proverò ad applicare la macro di qua e di la, insomma un grandissimo aiuto, come sempre. L'azienda ringrazia :D e fantina pure
fantina
Utente Senior
 
Post: 491
Iscritto il: 05/03/07 15:24

Re: Excel, conteggio giornaliero mantenendo i dati storici

Postdi fantina » 08/05/17 12:40

Anthonyyyyyy!! :D

Nuovi sviluppi: nello stesso file ho inserito un altro foglio per il quale devo attivare il medesimo controllo, si chiama BankChange e la colonna con gli status sarà la E. A questo punto creo un altro foglio StatusLog per avere i conteggi anche di questa attività ma se ripeto i codici come me li hai dati sono certa che le macro si picchieranno fra di loro..... o no? :roll:
fantina
Utente Senior
 
Post: 491
Iscritto il: 05/03/07 15:24

Re: Excel, conteggio giornaliero mantenendo i dati storici

Postdi Anthony47 » 08/05/17 16:58

Allora, vediamo...
La Sub CheckStats aveva due istruzioni che dichiaravano su quali fogli si doveva lavorare:
Codice: Seleziona tutto
tabDati = "Dati"            '<<< Il foglio con i dati da esaminare
Logger = "StatusLog"        '<<< Il foglio con il riepilogo degli stati giornalieri

Quindi:
-crea un nuovo foglio StatusLog2 (o altro nome a piacere)
-crea una copia della Sub CheckStats che chiamerai Sub CheckStats2, nel cui codice modifichi queste due dichiarazioni.

Modifica che due macro presenti nel modulo Questa_cartella_di_lavoro, in modo da aggiungere alla Call CheckStats presente anche la riga
Codice: Seleziona tutto
Call CheckStats2

Infine nel modulo di codice vba del foglio StatusLog2 (se non sai identificarlo al volo: tasto dx sul tab col nome foglio, scegli Visualizza codice) inserisci questo codice:
Codice: Seleziona tutto
Private Sub Worksheet_Activate()
    Call CheckStats2
End Sub

Dovrebbe essere tutto...

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel, conteggio giornaliero mantenendo i dati storici

Postdi fantina » 08/05/17 20:28

Anthony, Sub CheckStats2 deve stare in modulo 1 insieme all'altra o devo inserire modulo 2?
fantina
Utente Senior
 
Post: 491
Iscritto il: 05/03/07 15:24

Re: Excel, conteggio giornaliero mantenendo i dati storici

Postdi Anthony47 » 08/05/17 23:45

L'importante e' che non sia messa nel "modulo di codice di un Foglio di lavoro"; quindi andra' bene Modulo1 cosi' che Sub CheckStats e Sub CheckStats2 si possano tenere compagnia :D

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel, conteggio giornaliero mantenendo i dati storici

Postdi fantina » 09/05/17 09:44

Perfetto Anthony, grazie!!!
fantina
Utente Senior
 
Post: 491
Iscritto il: 05/03/07 15:24


Torna a Applicazioni Office Windows


Topic correlati a "Excel, conteggio giornaliero mantenendo i dati storici":


Chi c’è in linea

Visitano il forum: Nessuno e 58 ospiti