Condividi:        

[EXCEL] Calendario Presenze

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] Calendario Presenze

Postdi Dylan666 » 26/06/12 08:34

Buongiorno a tutti, chiedo aiuto a chi più eseperto di me nel mondo di Excel in cui sono un novellino! :D :lol:
Avrei un foglio presenze (Foglio 1) in cui nella colonna B (a partire da B2) è indicata una data di arrivo e nella colonna C (a partire da C2) è indicata una data di partenza.

Su un altro foglio (Foglio 2) ho indicato nella colonna A i nomi dei mesi e nelle colonne successive per ciascun mese i giorni da 1 a 31.

Vorrei capire come fare su questo foglio a far comparire sotto ciascun giorno quante persone erano presenti secondo i dati del foglio 1

Per chiarezza allego un file Excel basato sui soli mesi Aprile/Maggio/Giugno:

http://www.filedropper.com/presenze

Grazie in anticpo per l'aiuto che mi darete! :)
Avatar utente
Dylan666
Moderatore
 
Post: 39988
Iscritto il: 18/11/03 16:46

Sponsor
 

Re: [EXCEL] Calendario Presenze

Postdi Flash30005 » 26/06/12 09:07

Questa macro dovrebbe risolvere il problema**
Codice: Seleziona tutto
Sub CalcolaPresenze()
Application.ScreenUpdating = False
Application.Calculation = xlManual
Set Ws1 = Worksheets("Arrivi-Partenza")
Set Ws2 = Worksheets("Calendario")
Ws2.Range("B3:AF3,B5:AF5,B7:AF7,B9:AF9,B11:AF11,B13:AF13,B15:AF15,B17:AF17,B19:AF19,B21:AF21,B23:AF23,B25:AF25").ClearContents
UR1 = Ws1.Range("A" & Rows.Count).End(xlUp).Row
For RR1 = 2 To UR1
    DataA = Ws1.Range("B" & RR1).Value
    DataP = Ws1.Range("C" & RR1).Value
    NP = Val(Replace(Ws1.Range("D" & RR1).Value, "+CANE", ""))
    For Pre = DataA To DataP
        MP = Month(Pre)
        GP = Day(Pre)
        Ws2.Cells(1 + MP * 2, GP + 1).Value = Ws2.Cells(1 + MP * 2, GP + 1).Value + NP
    Next Pre
Next RR1
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub


** Per comodità ho esteso a tutto l'anno il calendario, ho rinominato il foglio dati in "Arrivi-Partenza" (togliendo l'anno) per rendere il file utilizzabile anche negli anni successivi.

Nota: ci sono due date in "Data arrivo" con anno 2011 credo sia un errore, l'ho modificato in 2012

Allego il file

Prova e fai sapere
Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [EXCEL] Calendario Presenze

Postdi Dylan666 » 26/06/12 09:38

Mi pare assolutamente perfetto!
Giustissime le correzioni degli anni e del nome del foglio e complimenti per il codice veramente sintetico e pulito.
Quando mi avventuro io a fare cose simile vengono delle pecionate incredibili!
Se non altro il mio margine di miglioramento è alto :lol:

Grazie ancora!
Avatar utente
Dylan666
Moderatore
 
Post: 39988
Iscritto il: 18/11/03 16:46

Re: [EXCEL] Calendario Presenze

Postdi Dylan666 » 26/06/12 13:24

Dunque, sapete come si dice, l'appetito vien mangiando quindi.... Avrei un piccola richiesta aggiuntiva! :P
Sarebbe possibile aggiungere una ulteriore riga per ogni mese e metterci dentro le presenze dei veicoli?
Ovviamente ogni cella della colonna A del Foglio 1 rappresente 1 veicolo.

Inoltre se mettissimo in una nuova colonna l'orario di uscita sarebbe possibile calcolare la presenza di quel giorno solo se tale orario è successivo alle 13:00?

Grazie immensamente
Avatar utente
Dylan666
Moderatore
 
Post: 39988
Iscritto il: 18/11/03 16:46

Re: [EXCEL] Calendario Presenze

Postdi Flash30005 » 27/06/12 00:12

Macro con riporto del veicolo nella riga successiva alle presenze
Ma ho forti dubbi riguardo alla possibilità di avere più auto su giorni che si accavallano es.:
CAMPER 06-apr-12 9-apr-12
BARCA 06-apr-12 9-apr-12
In un camping ci sono più posti auto, camper, barca ma nello schema di excel così impostato si ha un solo posto (una sola cella) per giorno quindi prevarrà l'ultima riga processata, in questo caso risulterà solo la Barca.
Codice: Seleziona tutto
Sub CalcolaPresenze()
Application.ScreenUpdating = False
Application.Calculation = xlManual
Set Ws1 = Worksheets("Arrivi-Partenza")
Set Ws2 = Worksheets("Calendario")
Ws2.Range("B3:AF4,B6:AF7,B9:AF10,B12:AF13,B15:AF16,B18:AF19,B21:AF22,B24:AF25,B27:AF28,B30:AF31,B33:AF34,B36:AF37").ClearContents
UR1 = Ws1.Range("A" & Rows.Count).End(xlUp).Row
For RR1 = 2 To UR1
    DataA = Ws1.Range("B" & RR1).Value
    DataP = Ws1.Range("C" & RR1).Value
    NP = Val(Replace(Ws1.Range("D" & RR1).Value, "+CANE", ""))
    Veic = Ws1.Range("A" & RR1).Value
    For Pre = DataA To DataP
        MP = Month(Pre)
        GP = Day(Pre)
        Ws2.Cells(MP * 3, GP + 1).Value = Ws2.Cells(MP * 3, GP + 1).Value + NP
        Ws2.Cells(1 + MP * 3, GP + 1).Value = Veic
    Next Pre
Next RR1
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub


Chiaramente dovrai aggiungere una riga ad ogni mese e formattarla coerentemente al mese di appartenenza.

E' sicuramente possibile controllare l'orario di uscita e assegnare o no il giorno di presenza (questa è una cosa più sensata rispetto al veicolo) ;)

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-


Torna a Applicazioni Office Windows


Topic correlati a "[EXCEL] Calendario Presenze":


Chi c’è in linea

Visitano il forum: Nessuno e 35 ospiti