Ciao Valerio,
Buongiorno, non so se la mia domanda può risultare curiosa ma qui nella community ho sempre trovato persone competenti quindi vado tranquillo...
per gestire una matrice turni con aggiunta delle festività in calendario, ho utilizzato sulla matrice in mio possesso una formattazione condizionale, sinceramente essendo a digiuno di formule di questo tipo, ho utilizzato una formula tratta da alcuni file
di esempio e anche se non ne ho capito completamente il senso, sembra comunque funzionare per quella che è la mia esigenza:
=NON(VAL.NON.DISP(CERCA.VERT(H$4;FESTE;1;0)))
La formula
CERCA.VERT(H$4;FESTE;1;0)
Nel caso che il valore della cella H4 non fosse compresa nell'intervallo noninato Feste, questa formula restituirebbe il risultato # N/D e la formula
VAL.NON.DISP(CERCA.VERT(H$4;FESTE;1;0))
restituirebbe il risultato VERO. Quindi la formula intera
=NON(VAL.NON.DISP(CERCA.VERT(H$4;FESTE;1;0)))
restituirebbe FALSO se la data non fosse una festa oppure VERO se la data fosse una festa. Pertanto. la formula può eaasere utilizzata per la formattione condizionale per evidenziare le feste.
ho creato un foglio a parte in cui ho inserito le date che voglio formattare ma se qualcuno mi fa anche la gentilezza di spiegarmi il significato della stringa sopra ne sarei contento in modo da usarla con più dimestichezza in futuro... :)
A parte questo la mia reale domanda è un'altra:
dopo questa formattazione mi servirebbe un modo per indicare sulla specifica data di che evento si tratti, e quindi ho immaginato che si possa utilizzare una funzione (o macro) che ...se è presente quella data ad esempio 01/01/2017, mi aggiunga un commento
automatico con l'indicazione "primo dell'anno" oppure che mi possa popolare una cella da me definita con tale indicazione, per me sarebbe lo stesso.
Spero di essere stato chiaro, ma se vi sarà bisogno di delucidazioni sono a disposizione.
Ipotizzo che accanto alle date nell'intervallo Feste ci siano le desrcizione volute come, ad esempio:

In tal caso, prova quanto segue:
- Fai clic dx sulla linguetta del foglio
- Seleziona l'opzione Visualizza Codice dal ****
menu contestuale risultante
- Incolla il seguente codice:
'=========>>
Option Explicit
'--------->>
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, rngFeste As Range, rCell As Range
Dim Res As Variant
Dim aName As Name
Dim arrFeste As Variant
Dim myComment As Comment
Dim sStr As String
Dim i As Long
Dim bFesta As Boolean
Const myCell As String = "H4:J4"
Set aName = ThisWorkbook.Names("Feste")
Set rngFeste = aName.RefersToRange
arrFeste = Application.Transpose(rngFeste.Value)
Set Rng = Intersect(Me.Range(myCell), Target)
If Not Rng Is Nothing Then
For Each rCell In Rng.Cells
With rCell
On Error Resume Next
.Comment.Delete
On Error GoTo 0
For i = LBound(arrFeste) To UBound(arrFeste)
bFesta = CDate(arrFeste(i)) = rCell.Value
If bFesta Then
sStr = rngFeste.Cells(i).Offset(0, 1).Value
Set myComment = .AddComment
myComment.Text Text:=sStr
Exit For
End If
Next i
End With
Next rCell
End If
End Sub
'<<=========
- Alt+Q per chiudere l'editor di VBA e tornare a Excel.
- Salva il file con l'estensione xlsm.
Potresti scaricare il mio file di prova Valerio20160324.xlsm a:
https://www.dropbox.com/s/1t1le0j1g1o7qon/Valerioi20160324.xlsm?dl=0
Per quanto riguarda il mio file di prova, l'intervallo Feste
potrebbe anche esssere su su un altro foglio del file
===
Regards,
Norman