Buongiorno
di errori nell'adattamento ce ne stava più di uno provo a descriverla
pratica mente sono due formule separate che metto dentro SCEGLI per farne una sola nel file che allego metto le formule separate sulla destra per capire gli step...
Lo scopo è estrarre i nominativi e gli altri dati in funzione di una data ora nell'esempio questa data la troviamo in G9
quindi ci interessa estrarre i dati da G10 a G1000 che siano diversi da vuoto la formula sarebbe
=INDICE('Elenco DIP'!$E$10:$E$1000;PICCOLO(SE('Elenco DIP'!$G$10:$G$1000<>"";RIF.RIGA($E$10:$E$1000)-RIF.RIGA($E$10)+1);RIF.RIGA($A1)))
che mi estrae i nominativi ('Elenco DIP'!$E$10:$E$1000)
su questa base devo rendere dinamico il range del criterio cioè
'Elenco DIP'!$G$10:$G$1000<>""
questo range me lo creo cosi
INDIRETTO("'Elenco DIP'!"&INDIRIZZO(10;CONFRONTA($B$1;'Elenco DIP'!$F$9:$NG$9;0)+5)&":"&INDIRIZZO(1000;CONFRONTA($B$1;'Elenco DIP'!$F$9:$NG$9;0)+5))
se lo evidenzi e fai F9 vedi che trovi i dati di colonna Gdel primo foglio
ora sostituisco questo range dinamico nella formula
nella prima lo metto solo nella parte del criterio in quanto l'indice è fisso (dove stanno i nominativi) mentre nella seconda lo metto anche come matrice dell'indice in quanto questo sarà variabile quindi le 2 formule sono
=INDICE('Elenco DIP'!$E$10:$E$1000;PICCOLO(SE(INDIRETTO("'Elenco DIP'!"&INDIRIZZO(10;CONFRONTA($B$1;'Elenco DIP'!$F$9:$NG$9;0)+5)&":"&INDIRIZZO(1000;CONFRONTA($B$1;'Elenco DIP'!$F$9:$NG$9;0)+5))<>"";RIF.RIGA($E$10:$E$1000)-RIF.RIGA($E$10)+1);RIF.RIGA($A1)))
per i nominativo e
=INDICE(INDIRETTO("'Elenco DIP'!"&INDIRIZZO(10;CONFRONTA($B$1;'Elenco DIP'!$F$9:$NG$9;0)+5)&":"&INDIRIZZO(1000;CONFRONTA($B$1;'Elenco DIP'!$F$9:$NG$9;0)+5));PICCOLO(SE(INDIRETTO("'Elenco DIP'!"&INDIRIZZO(10;CONFRONTA($B$1;'Elenco DIP'!$F$9:$NG$9;0)+5)&":"&INDIRIZZO(1000;CONFRONTA($B$1;'Elenco DIP'!$F$9:$NG$9;0)+5))<>"";RIF.RIGA($E$10:$E$1000)-RIF.RIGA($E$10)+1);RIF.RIGA($A1)))
per gli altri dati
per fare una formula unica li metto dentro SCEGLI
la funzione scegli ha un indice che va da 1 a 255 il numero dell'indice o lo scrivo a mano oppure me lo ricavo con una formula quindi sarebbe
=SCEGLI(RIF.COLONNA(A$1);prima formula;seconda formula)
cosi nella prima cella dove metti la formula il RIF.COLONNA(A$1) restituisce 1 e fa lavorare la formula1 trascinando a destra diventa 2 facendo lavorare la formula2 poi mettiamo tutte dentro un SE.ERRORE per ottenere vuoto in caso di errore
La formula finale da mettere in D2 da attivare con CTRL+SHIFT+INVIO e trascinare a destra e poi in basso
=SE.ERRORE(SCEGLI(RIF.COLONNA(A$1);INDICE('Elenco DIP'!$E$10:$E$1000;PICCOLO(SE(INDIRETTO("'Elenco DIP'!"&INDIRIZZO(10;CONFRONTA($B$1;'Elenco DIP'!$F$9:$NG$9;0)+5)&":"&INDIRIZZO(1000;CONFRONTA($B$1;'Elenco DIP'!$F$9:$NG$9;0)+5))<>"";RIF.RIGA($E$10:$E$1000)-RIF.RIGA($E$10)+1);RIF.RIGA($A1)));INDICE(INDIRETTO("'Elenco DIP'!"&INDIRIZZO(10;CONFRONTA($B$1;'Elenco DIP'!$F$9:$NG$9;0)+5)&":"&INDIRIZZO(1000;CONFRONTA($B$1;'Elenco DIP'!$F$9:$NG$9;0)+5));PICCOLO(SE(INDIRETTO("'Elenco DIP'!"&INDIRIZZO(10;CONFRONTA($B$1;'Elenco DIP'!$F$9:$NG$9;0)+5)&":"&INDIRIZZO(1000;CONFRONTA($B$1;'Elenco DIP'!$F$9:$NG$9;0)+5))<>"";RIF.RIGA($E$10:$E$1000)-RIF.RIGA($E$10)+1);RIF.RIGA($A1))));"")[Modificato da DANILOFIORINI 09/04/2020 11:00]