In un modulo inserisci questa macro
- Codice: Seleziona tutto
Sub SelezionaDate()
Set Ws1 = Worksheets("Foglio1")
Ws1.Select
UR1 = Ws1.UsedRange.Rows.Count
Rows(2 & ":" & UR1).EntireRow.Hidden = False
AnnoFine = Ws1.Range("C1").Value
MeseFine = Ws1.Range("B1").Value
For RRA = 2 To UR1
If Month(Ws1.Range("A" & RRA).Value) = MeseFine And Year(Ws1.Range("A" & RRA).Value) = AnnoFine Then
URI = RRA
GoTo saltaRRI
End If
Next RRA
saltaRRI:
If URI > 2 Then
Rows(2 & ":" & URI - 1).EntireRow.Hidden = True
End If
For RRA = 2 To UR1
If Month(Ws1.Range("A" & RRA).Value) = MeseFine And Year(Ws1.Range("A" & RRA).Value) = AnnoFine + 3 Then
URF = RRA
GoTo saltaRRF
End If
Next RRA
saltaRRF:
Rows(URF & ":" & UR1).EntireRow.Hidden = True
End Sub
Nel foglio1 (dati) questo codice
- Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$1" And Target.Address <> "$C$1" Then Exit Sub
If Range("B1").Value = "" Or Range("C1").Value = "" Then
UR1 = UsedRange.Rows.Count
Rows(2 & ":" & UR1).EntireRow.Hidden = False
Else
Call SelezionaDate
End If
End Sub
In B1 inserisci il mese
(Con cella settata come Convalida di Elenco con i 12 mesi, e in C1 Convalida Elenco Anni, eviti di digitare)
Ad ogni variazione della cella B1 o C1 visualizzerai solo le righe appartenenti a 3 anni effettivi
Con una delle due celle vuote avrai di nuovo tutte le righe
Allego
questo fileCiao