| | Post: 71 | Registrato il: 01/09/2016
| Città: BOMPORTO | Età: 53 | Utente Junior | 2021 | | OFFLINE | |
|
18/03/2019 10:34 | |
Sto cercando una formula che mi estragga da un elenco solo i dati che soddisfino certe condizioni ma soprattutto che mi ignori i dati che non soddisfino tale condizioni.
(ho provato con indice e confronta, ma con risultato negativo :( )
Allego il file, spero sia chiaro (il file corretto è nella risposta successiva, scusate)
Grazie [Modificato da Eso71 18/03/2019 11:35] |
|
| | Post: 3.312 | Registrato il: 03/04/2013
| Utente Master | Excel 2000 - 2013 | | OFFLINE | |
|
18/03/2019 11:08 | |
Ma, le ore di permesso dell'Utente 4 di giovedì 31/01/2019 sono 2, per quale motivo nel tuo esempio le ore sono 6? Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 71 | Registrato il: 01/09/2016
| Città: BOMPORTO | Età: 53 | Utente Junior | 2021 | | OFFLINE | |
|
18/03/2019 11:24 | |
Hai ragione scusa, frutto di un calcolo che ho tolto, mi sono scordato di correggere.
Riallego
|
| | Post: 282 | Registrato il: 15/01/2016
| Città: ROMA | Età: 51 | Utente Junior | 2016 | | OFFLINE |
|
18/03/2019 11:58 | |
Buongiorno a tutti
Per le date
=SE.ERRORE(INDICE($B$7:$B$17;AGGREGA(15;6;RIF.RIGA($A$7:$A$17)/((ANNO($B$7:$B$17)=$N$6)*($A$7:$A$17=$I$6)*($D$7:$D$17="Ore di permesso"))-RIF.RIGA($A$7)+1;RIF.RIGA($A1)));"")
Per gli orari stessa formula cambia l INDICE da $B$7:$B$17 a $F$7:$F$17 |
| | Post: 3.313 | Registrato il: 03/04/2013
| Utente Master | Excel 2000 - 2013 | | OFFLINE | |
|
18/03/2019 12:28 | |
Buona giornata, Danilo; perdonami se intervengo, ma temo che la Funzione "AGGREGA" non sia supportata dalla versione di Excen 2007, che è quella indicata da @Eso71. Credo serva una Formula Matriciale con l'utilizzo della Funzione "PICCOLO"; o mi sbaglio? A disposizione. Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 4.140 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | OFFLINE |
|
18/03/2019 12:44 | |
Ciao a tutti
In attesa di una soluzione con formule propongo questa macro
vb Sub EstraiDati()
Dim ur As Long
Dim lr As Long
Dim rng As Range
Dim cel As Range
ur = Cells(Rows.Count, "a").End(xlUp).Row
Set rng = Range("a7:a" & ur)
Range("I10:L100").ClearContents
For Each cel In rng
lr = Cells(Rows.Count, "i").End(xlUp).Row
If cel.Value = Range("i6").Value And Year(cel.Offset(0, 1).Value) = Range("n6").Value And cel.Offset(0, 5).Value <> "" Then
Cells(lr + 1, "i").Value = cel.Offset(0, 1).Value
Cells(lr + 1, "l").Value = cel.Offset(0, 5).Value
End If
Next cel
End Sub
[Modificato da alfrimpa 18/03/2019 13:24]
Alfredo |
| | Post: 283 | Registrato il: 15/01/2016
| Città: ROMA | Età: 51 | Utente Junior | 2016 | | OFFLINE |
|
18/03/2019 12:46 | |
Buongiorno
Giuseppe non avevo visto la versione
Si si deve fare matriciale con piccolo
|
| | Post: 72 | Registrato il: 01/09/2016
| Città: BOMPORTO | Età: 53 | Utente Junior | 2021 | | OFFLINE | |
|
18/03/2019 14:00 | |
DANILOFIORINI, 18/03/2019 11.58:
Buongiorno a tutti
Per le date
=SE.ERRORE(INDICE($B$7:$B$17;AGGREGA(15;6;RIF.RIGA($A$7:$A$17)/((ANNO($B$7:$B$17)=$N$6)*($A$7:$A$17=$I$6)*($D$7:$D$17="Ore di permesso"))-RIF.RIGA($A$7)+1;RIF.RIGA($A1)));"")
Per gli orari stessa formula cambia l INDICE da $B$7:$B$17 a $F$7:$F$17
Tanto di cappello, funziona! °_°
GRAZIE!!!!
|
| | Post: 73 | Registrato il: 01/09/2016
| Città: BOMPORTO | Età: 53 | Utente Junior | 2021 | | OFFLINE | |
|
18/03/2019 14:01 | |
GiuseppeMN, 18/03/2019 12.28:
Buona giornata, Danilo; perdonami se intervengo, ma temo che la Funzione "AGGREGA" non sia supportata dalla versione di Excen 2007, che è quella indicata da @Eso71.
Credo serva una Formula Matriciale con l'utilizzo della Funzione "PICCOLO"; o mi sbaglio?
A disposizione.
Giuseppe
Ciao Giuseppe La versione Excel che ho è 2016 Business |
| | Post: 74 | Registrato il: 01/09/2016
| Città: BOMPORTO | Età: 53 | Utente Junior | 2021 | | OFFLINE | |
|
18/03/2019 14:02 | |
alfrimpa, 18/03/2019 12.44:
Ciao a tutti
In attesa di una soluzione con formule propongo questa macro
vb Sub EstraiDati()
Dim ur As Long
Dim lr As Long
Dim rng As Range
Dim cel As Range
ur = Cells(Rows.Count, "a").End(xlUp).Row
Set rng = Range("a7:a" & ur)
Range("I10:L100").ClearContents
For Each cel In rng
lr = Cells(Rows.Count, "i").End(xlUp).Row
If cel.Value = Range("i6").Value And Year(cel.Offset(0, 1).Value) = Range("n6").Value And cel.Offset(0, 5).Value <> "" Then
Cells(lr + 1, "i").Value = cel.Offset(0, 1).Value
Cells(lr + 1, "l").Value = cel.Offset(0, 5).Value
End If
Next cel
End Sub
Grazie Alfredo, non sono molto afferrato con le macro... ma provo a testare anche la tua soluzione. Grazie davvero! |
|
|