|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 416
|
Excel--> Formattazione condizionata HELP
Ciao a tutti,
esiste un modo per ottenere una formattazione condizionata (colorazione di una cella) nel caso in cui non si rispettino 11h di intervallo? Per capirci tra due celle devono trascorrere 11 ore di intervallo, nel caso in cui non trascorrano esistono delle regole per colorare la cella in cui non non sono rispettate le 11 ore cella A1: 18.00-22.00 cella A2: 08.00-12.00 non trascorrono le 11 ore come è possibile colorar la cella in automatico? |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1092
|
Secondo me ti conviene usare due colonne, una per l'orario iniziale e una per quello finale, impostando il formato delle celle come personalizzato h.mm.
A questo punto usi la funzione ora es. =ora(ora_fine - ora_inizio) A questo punto dal menù formato applichi la formattazione condizionale con le condizioni minore di 11.00 e maggiore o uguale a 11.00 ciao. ![]() |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 416
|
Quote:
buona idea... però poi mi sorge il problema di unire le due celle con un separatore (-) come si fa? |
|
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Cioè : [Cella A1] [18.00-22.00] >> 22-18=4 quindi se questa differenza è <11 lo sfondo-cella diventa "rosso" ? Una cosa del genere ? |
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1092
|
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 416
|
Quote:
si scusami la differenza è tra le due celle (anche perchè nella stessa cella la differenza è sempre 4) cella A1: 18.00-22.00 cella A2: 08.00-12.00 tra i due turni di lavoro non trascorrono 11 ore |
|
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Diciamo che hai 2 colonne : Colonna A:A "Orario1" Colonna B:B "Orario2" in A1 mettiamo "18.00-22.00" in B1 mettiamo "08.00-12.00" Così puoi incolonnare tutti gli orari che vuoi. Le ore sono sempre "secche", ossia niente 18:30 ad esempio... Può andare ? |
|
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 416
|
Quote:
![]() ![]() ![]() ![]() |
|
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
![]() La seconda è questa : Devi aprire l'editor VBA ( Visual Basic... ) di Excel e mettere questo codice in "Foglio1" : Codice:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim diff As Integer Dim R As Range For Each R In Sheets("Foglio1").Range("A:A") On Error Resume Next If R.Value = "" Then Exit For diff = CInt(Mid(Range("B" & R.Row).Value, 1, 2)) - CInt(Mid(R.Value, 7, 2)) + 24 If diff >= 11 Then Range("A" & R.Row & ":B" & R.Row).Interior.ColorIndex = xlNone Else Range("A" & R.Row & ":B" & R.Row).Interior.ColorIndex = 3 End If Next R End Sub ![]() |
|
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 416
|
Quote:
thanks stasera provo!! |
|
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 416
|
|
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
|
![]() |
![]() |
![]() |
#13 | |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 416
|
Quote:
" diff = CInt(Mid(Range("B" & R.Row).Value, 1, 2)) - CInt(Mid(R.Value, 7, 2)) + 24" ho excel 2007 |
|
![]() |
![]() |
![]() |
#14 | |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Io l'ho fatta/testata su Excel 2003. In Excel 2007 non ci son santi, deve andare... Pensavo tu avessi Office '97 o giù di lì... ![]() 1. Ti da errore forse perchè non rispetti il formato della data : devi mettere in colonna A il primo orario [18.00-22.00] in QUESTO formato esatto. E in colonna B il secondo orario. Se un orario ha un numero solo ( 8.00 ) devi metterci lo "0" per rispettare il formato ( 08.00 ). La routine prende gli orari a coppie ( intervallo B1-A1 / intervallo B2-A2 ecc... ). 2. Comunque, sei sicuro di aver installato anche il VBA ? Per sviluppare su Office, il VBA va installato espressamente. E' nelle opzioni iniziali del setup, in "Componenti di Office", o qualcosa di simile... |
|
![]() |
![]() |
![]() |
#15 | |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 416
|
Quote:
ok il formato data è uguale ora mi sorge il dubbio sul VBA devo recuperare il dvd di installazione........ |
|
![]() |
![]() |
![]() |
#16 | |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Codice:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim diff As Integer Dim R As Range For Each R In Sheets("Foglio1").Range("A:A") On Error Resume Next If R.Value = "" Then Exit For diff = CInt(Mid(Range("B" & R.Row).Value, 1, 2)) - CInt(Mid(R.Value, 7, 2)) If diff < 0 Then diff = diff + 24 If diff >= 11 Then Range("A" & R.Row & ":B" & R.Row).Interior.ColorIndex = xlNone Else Range("A" & R.Row & ":B" & R.Row).Interior.ColorIndex = 3 End If Next R End Sub Ultima modifica di MarcoGG : 05-10-2007 alle 12:14. |
|
![]() |
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 416
|
ok
appena installo VBA provo anche quello |
![]() |
![]() |
![]() |
#18 |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Provato ora anche su Excel 2007. A me funziona perfettamente.
Excel2007.jpg Usa l'ultima routine che ho postato. ![]() |
![]() |
![]() |
![]() |
#19 | |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 416
|
Quote:
funziona anche a me.... solo che (ora mi odierai e mi f@ncul1zz3r@1 ihihih) servirebbe che funzionasse anche al cambio della giornata per esempio, finisco al lavoro alle 24.00 e il giorno dopo ho un turno con ingresso alle 8 :-D (son 8 ore e non 11), quindi anche da notturno a diurno.... quindi le coppie che danno gli errori sono x-21.00 ---------- 08.00-x x-21.30 ---------- 08.30-x x-22.00 ---------- 09.00-x x-22.30 ---------- 09.30-x x-23.00 ---------- 10.00-x x-23.30 ---------- 10.30-x x-24.00 ---------- 11.00-x x-24.30 ---------- 11.30-x e anche che la verifica fosse fatta su tutto il foglio e non solo sulle colonne A e B |
|
![]() |
![]() |
![]() |
#20 | |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
![]() 2. Guarda che il mio codice funziona GIA' come dici tu. Ma queste ore di differenza tra un turno e l'altro devono essere almeno 8 o almeno 11 ? ![]() 3. Quindi gestire anche le mezz'ore ? Ma non potevi dirlo prima ? ![]() 3. "Su tutto il foglio" in che senso ? Devi cercare di essere più chiaro e preciso... Non si capisce una mazza. ![]() Menomale che non sei un mio cliente ! ![]() |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:51.