Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

FOGLIO PRESENZE EXCEL

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

FOGLIO PRESENZE EXCEL

Postdi dblz » 05/02/13 12:16

Salve a tutti, sono una nuova iscritta, innanzitutto complimentoni per il forum (è davvero magnifico!) mi è stato utilissimo in diverse occasioni! Vi scrivo perchè ho un problema che non riesco a risolvere in nessun modo. Ho un file excel dove ho realizzato un foglio presenze così strutturato: da B2 a AF2 ci sono i giorni dall'1 al 31 e da B3 a AF3 ci sono i giorni della settimana dal lunedì alla domenica. Ho inserito una formula che mi metta un trattino in corrispondenza del sabato e della domenica in quanto non lavorativi per l'azienda ed ho già inserito tutte le formule ma sto avendo problemi con il mese di febbraio in quanto mi compila anche se non dovrebbe le colonne dal 29 al 31 con errore #valore!. Come posso risolverlo??dove sbaglio?? Le formule usate sono le seguenti: SE(MESE(AC2+1)=MESE(A1);AC2+1;"") per i giorni della settimana e SE(MESE(AC2+1)=MESE(A1);AC2+1;"") dal giorno 29 al 31 e SE(GIORNO.SETTIMANA(C14;2)<6;"";"-") per inserire il trattino. Grazie in anticipo!!
dblz
Utente Junior
 
Post: 22
Iscritto il: 05/02/13 11:54

Sponsor
 

Re: FOGLIO PRESENZE EXCEL

Postdi wallace&gromit » 05/02/13 13:40

ciao dblz,
nella tua formula mancano i riferimenti fissi con il "$": copiando la formula alla cella successiva a una vuota il riferimento salta,
prova con:
Codice: Seleziona tutto
=SE(MESE($AC2+1)=MESE($A1);$AC2+1;"")
in quanto all'eleganza di tale formulazione avrei da ridire, però visto che funziona...
stato 2014: Office2003/2013 su win7
Avatar utente
wallace&gromit
Utente Senior
 
Post: 1421
Iscritto il: 16/01/12 14:21

Re: FOGLIO PRESENZE EXCEL

Postdi dblz » 05/02/13 17:37

Ti ringrazio per la pronta risposta, ho risolto con febbraio ma ora il problema dei trattini al sabato e alla domenica rimane per i mesi di 30 gg. Esempio in giugno 2013 ci sono giorno 29 e giorno 30 che cadono di sabato e domenica e quindi mi dovrebbe mettere i trattini ma non me li mette... li ho fino alla penultima settimana ma all'ultima niente....T_T in pratica ho la funzione che funge fino al 28 di ogni mese...è possibile sommare funzioni SE partendo dalle funzioni che ho già? Grazie
dblz
Utente Junior
 
Post: 22
Iscritto il: 05/02/13 11:54

Re: FOGLIO PRESENZE EXCEL

Postdi Flash30005 » 05/02/13 21:28

Ciao Dblz e benvenuta nel Forum

Sinceramente vedo un po' di confusione nell'esposizione del quesito
pubblichi delle formule senza dire cosa hai inserito in alcune celle richiamate es.: A1 e AC2 e addirittura poi parli di C14 :?:

Si può avere un'immagine del tuo foglio dati, tanto per vedere come è stato ideato questo calendario?

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: FOGLIO PRESENZE EXCEL

Postdi Anthony47 » 05/02/13 23:46

Certamente hai in mente uno schema preciso, ma mi permetto di suggerire un cambio...
Io in B2:AF2 non scriverei 1, 2, 3, ... ma metterei la data completa, dal primo all' ultimo del mese. Se ad esempio in A1 tu gia' scrivi la data di inizio periodo, es 1-feb-2013 per il mese di febbraio puoi ottenere la data usando in B2 la formula
Codice: Seleziona tutto
=SE(MESE($A$1+RIF.COLONNA(A1)-1)=MESE($A$1);$A$1+RIF.COLONNA(A1)-1;"")
Poi copia fino ad AF2
In B3 inserirai il giorno della settimana oppure "-" con la formula
Codice: Seleziona tutto
=SE(VAL.NUMERO(B2);SE(GIORNO.SETTIMANA(B2;2)<6;TESTO(B2;"ggg");"-");"")
Poi copiala fino a AF3

Spero che questi spunti possano essere di tuo interesse.

Se invece devi insistere col tuo modello allora, come anche suggerito da Flash, puo' essere utile avere un' immagine completa, o tramite un file oppure (se lo schema e' semplice da descrivere e da replicare) uno screenshot; per come fare guarda qui: viewtopic.php?f=26&t=80395

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13895
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: FOGLIO PRESENZE EXCEL

Postdi dblz » 06/02/13 12:06

Ciao e grazie ad entrambi per la risposta!Anthony ho provato a modificare le celle con le formule che mi hai scritto ma stranamente il conteggio dei giorni del mese inizia da 10!!O_o x quanto riguarda il mio modello dopo varie modifiche effettivamente i valori sono cambiati ecco perchè c'era il c14!!Scusate... :oops: :oops: il modello ora è questo:[img][IMG]http://img19.imageshack.us/img19/6209/immaginegv.png[/img]
Grazie ancora!!!
dblz
Utente Junior
 
Post: 22
Iscritto il: 05/02/13 11:54

Re: FOGLIO PRESENZE EXCEL

Postdi Flash30005 » 06/02/13 13:00

Procediamo per passi
Non sapendo dove hai inserito il mese e l'anno ho considerato l'inserimento in A12 dove inserirai 01/06/2013 con formattazione "mmmm aaaa"
Nella cella D13 inserisci questa formula (Attenzione inseriscila in D13 non B13 poi la copierai anche in C e B)
Codice: Seleziona tutto
=SE(RIF.COLONNA()<5;$A12+RIF.COLONNA()-2;SE(GIORNO($A12+RIF.COLONNA()-2)<GIORNO(A13);"";$A12+RIF.COLONNA()-2))

Trascina fino a AF

In B14 inserisci questa formula
Codice: Seleziona tutto
=SE(B13="";"";GIORNO.SETTIMANA($A12+RIF.COLONNA()-2))

Trascini fino ad AF

Ora noto un'anomalia nella tabella perché se inserisci una formula per vedere i trattini chiaramente non potrai scriverci nulla a meno che non vada a cancellare la formula quindi opterei per una formattazione condizionale dove saranno colorate le celle (arancio) nei giorni di sabato e domenica quindi in formattazione condizionale dalla cella B15 alla cella AF fino dove vuoi come riga inserisci questa formula
Codice: Seleziona tutto
=SE(SE(B$13="";0;GIORNO.SETTIMANA($A$12+RIF.COLONNA()-2,2))>5;1;0)

Formato fondo colore arancio o rosso

Per maggior chiarezza allego questo file

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: FOGLIO PRESENZE EXCEL

Postdi Anthony47 » 06/02/13 15:09

Vedi suggerimento di Flash, sopra.
Ma perche' suggerire di usare formule che contengono errori, anche se danno il risultato corretto? (vedere la formula in B13 e C13).
La formula che avevo suggerito, nell' ipotesi che la data di inizio mese sia in A12, in B13 diventa
Codice: Seleziona tutto
=SE(MESE($A$12+RIF.COLONNA(A12)-1)=MESE($A$12);$A$12+RIF.COLONNA(A1)-1;"")
poi copia B13 verso destra fino ad AF13

Se vuoi visualizzare Lun-Mar,... oppure "-", la formula che avevo gia' dato da mettere in B14 diventa
Codice: Seleziona tutto
=SE(VAL.NUMERO(B15);SE(GIORNO.SETTIMANA(B15;2)<6;TESTO(B15;"ggg");"-");"")
poi copia verso destra fino ad AF14.
Interessante invece il suggerimento di applicare la formattazione condizionale all' area B14:AFxx, come suggerito da Flash.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13895
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: FOGLIO PRESENZE EXCEL

Postdi dblz » 07/02/13 11:28

Flash30005 ha scritto:Procediamo per passi
Non sapendo dove hai inserito il mese e l'anno ho considerato l'inserimento in A12 dove inserirai 01/06/2013 con formattazione "mmmm aaaa"
Nella cella D13 inserisci questa formula (Attenzione inseriscila in D13 non B13 poi la copierai anche in C e B)
Codice: Seleziona tutto
=SE(RIF.COLONNA()<5;$A12+RIF.COLONNA()-2;SE(GIORNO($A12+RIF.COLONNA()-2)<GIORNO(A13);"";$A12+RIF.COLONNA()-2))

Trascina fino a AF

In B14 inserisci questa formula
Codice: Seleziona tutto
=SE(B13="";"";GIORNO.SETTIMANA($A12+RIF.COLONNA()-2))

Trascini fino ad AF

Ora noto un'anomalia nella tabella perché se inserisci una formula per vedere i trattini chiaramente non potrai scriverci nulla a meno che non vada a cancellare la formula quindi opterei per una formattazione condizionale dove saranno colorate le celle (arancio) nei giorni di sabato e domenica quindi in formattazione condizionale dalla cella B15 alla cella AF fino dove vuoi come riga inserisci questa formula
Codice: Seleziona tutto
=SE(SE(B$13="";0;GIORNO.SETTIMANA($A$12+RIF.COLONNA()-2,2))>5;1;0)

Formato fondo colore arancio o rosso

Per maggior chiarezza allego questo file


grazie per la risposta!!!non si può fare una formattazione condizionale che mi inserisca anzichè i colori (che per la stampa in bianco e nero non servono) il famoso trattino...anche perchè effettivamente l'azienda non lavora quasi mai di sabato e mai di domenica!!
dblz
Utente Junior
 
Post: 22
Iscritto il: 05/02/13 11:54

Re: FOGLIO PRESENZE EXCEL

Postdi Flash30005 » 07/02/13 12:48

La formattazione condizionale può modificare appunto solo la formattazione (fondo e contenuto cella) non può aggiungere un trattino o altro.

Se inserisci un colore e stampi in bianco e nero ottieni, a secondo del colore usato, una tonalità di grigio e rimangono evidenti i giorni festivi essendo il foglio bianco.

Come dicevo, le formule non sono indicate per il tuo schema perché se c'è una formula non potrai scrivere nulla senza cancellare la formula. a questo punto forse è meglio una macro che ti permetterebbe ad ogni cambio del mese di avere il reset della tabella e l'inserimento dei trattini nei giorni di sabato e domenica.

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: FOGLIO PRESENZE EXCEL

Postdi dblz » 07/02/13 16:33

Avevo pensato anche io ad una macro ma nn sono assolutamente in grado di farla in quanto principiante... :roll: tornando al mio file ho fatto un passo avanti aggiungendo nelle colonne da AD a AF la seguente formula: SE(VAL.ERRORE(AD14);"";SE(AD14="";"";"-")) così facendo mi mette i trattini fino al 31..il problema è che me li mette anche se non sono girni che cadono di sabato o domenica. :cry: Spiego che questo file deve essere per forza strutturato così in quanto è un format datoci e da consegnare al commercialista..io lo sto personalizzando per non dovermi inserire ogni volta tutti i dati compreso i trattini... :cry: :cry: quindi se riusciste a darmi una mano senza modificare nulla (anche perchè mi salvo tutto in pdf) :P ve ne sarei eternamente grata! Approfitto per ringraziare anche per l'altra soluzione postatami prima da Anthony47!(scasa per non averlo fatto prima ma ero presa dal problema!!) :D
dblz
Utente Junior
 
Post: 22
Iscritto il: 05/02/13 11:54

Re: FOGLIO PRESENZE EXCEL

Postdi Flash30005 » 07/02/13 17:35

Avendo i dati disposti secondo il foglio inviato con i giorni settimanali nella riga 14 da B ad AF
puoi usare questa macro (copiala per intero e inseriscila in un modulo)
Codice: Seleziona tutto
Public Agg As Integer
Sub SegnaF()
UR = Worksheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row
If Agg = 0 Then Range("B15:AF1000").Clear
For RR = 15 To UR
For CC = 2 To 32
If Cells(14, CC).Value <> "" Then
If Weekday(Cells(14, CC).Value, 2) = 6 Or Weekday(Cells(14, CC).Value, 2) = 7 Then
Application.EnableEvents = False
Cells(RR, CC).Value = "-"
Cells(RR, CC).HorizontalAlignment = xlCenter
Application.EnableEvents = True
End If
End If
Next CC
Next RR
End Sub

Per accedere all'editor del Vba premi il tasto Alt+F11
Inserisci un modulo (dal Menu Inserisci)
e incolli la macro nel frame di destra.
Inoltre per automatizzare la macro dovrai inserire il seguente codice nel vba del foglio1 (dove c'è la tabella)
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Area1 = "A12"
Area2 = "A15:A100"
If Application.Intersect(Target, Range(Area1)) Is Nothing Then GoTo SaltaA1
Agg = 0
SegnaF
SaltaA1:
If Application.Intersect(Target, Range(Area2)) Is Nothing Then Exit Sub
Agg = 1
SegnaF
End Sub


Cambiando il mese in A12 avrai il reset dei dati in tabella, quindi attenzione a farlo con dati inseriti
Aggiungendo un dipendente nella colonna A avrai l'inserimento dei trattini, nella riga aggiunta, in corrispondenza del weekend, senza la cancellazione dei dati già inseriti nelle righe suoeriori

Allego questo file test

A questo punto, se va bene la macro, a cosa serve avere delle formule?
con aggiunta di qualche riga codice (che ho già sviluppato) si possono inserire sia i giorni del mese sia i giorni della settimana
Fammi sapere se ti occorre, così ti posto la nuova macro

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: FOGLIO PRESENZE EXCEL

Postdi dblz » 08/02/13 10:44

Grazieeeeeeeeeee!!Ti sarò eternamente grata per cio' che hai fatto!! :P Un'ultima domanda:se io volessi cambiare il mese e mettere come il format in j12 come devo procedere??Ancora, grazie mille!! :)
dblz
Utente Junior
 
Post: 22
Iscritto il: 05/02/13 11:54

Re: FOGLIO PRESENZE EXCEL

Postdi dblz » 08/02/13 11:12

Ho notato che se cambio i mesi mi cancella i bordi alle celle..come mai?O_o
dblz
Utente Junior
 
Post: 22
Iscritto il: 05/02/13 11:54

Re: FOGLIO PRESENZE EXCEL

Postdi Flash30005 » 08/02/13 11:20

Devi solo cambiare (nel codice vba foglio non modulo) la variabile Area1
Private Sub Worksheet_Change(ByVal Target As Range) '<<< esistente
Area1 = "J12" '<<< modificare così
'...

Mentre se vuoi, come dicevo, far creare il calendario dalla macro allora nel modulo inserisci (sostituendo macro precedenti)
queste macro
Codice: Seleziona tutto
Sub Calendario()
Range("B13:AF1000").ClearContents
For GG = 1 To 31
If Month(DateSerial(Year([J12]), Month([J12]), GG)) <> Month([J12]) Then GoTo esci
Application.EnableEvents = False
Cells(13, GG + 1).Value = DateSerial(Year([J12]), Month([J12]), GG)
Cells(14, GG + 1).Value = Format(Weekday(DateSerial(Year([J12]), Month([J12]), GG), 1), "ddd")
Application.EnableEvents = True
Next GG
esci:
SegnaF
End Sub

Sub SegnaF()
UR = Worksheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row
For RR = 15 To UR
For CC = 2 To 32
If Cells(14, CC).Value <> "" Then
If Weekday(Cells(13, CC).Value, 2) = 6 Or Weekday(Cells(13, CC).Value, 2) = 7 Then
Application.EnableEvents = False
Cells(RR, CC).Value = "-"
Cells(RR, CC).HorizontalAlignment = xlCenter
Application.EnableEvents = True
End If
End If
Next CC
Next RR
End Sub

Mentre nel Vba del foglio
inserirai questo codice
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Area1 = "J12"
Area2 = "A15:A100"
If Application.Intersect(Target, Range(Area1)) Is Nothing Then GoTo SaltaA1
Calendario
SaltaA1:
If Application.Intersect(Target, Range(Area2)) Is Nothing Then Exit Sub
SegnaF
End Sub


download file

-------
Ho visto che hai scritto mentre inviavo il mio messaggio quindi (la nuova macro non cancella i bordi)
nella precedente devi modificare questa riga codice così
Codice: Seleziona tutto
If Agg = 0 Then Range("B15:AF1000").ClearContents

(invece che solo clear)
Avevo messo clear in quanto facevo inserire i trattini con allineamento centrale, nel reset ripristinavo l'allineamento standard.

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: FOGLIO PRESENZE EXCEL

Postdi dblz » 08/02/13 16:20

Grazie infinite per la tua pronta risposta!!!Sei grande!!Oramai avevo perso le speranze!! :) Grande forum ma soprattutto grandi persone che lo popolano!!XD
dblz
Utente Junior
 
Post: 22
Iscritto il: 05/02/13 11:54


Torna a Applicazioni Office Windows


Topic correlati a "FOGLIO PRESENZE EXCEL":


Chi c’è in linea

Visitano il forum: alfrimpa e 20 ospiti