La consultazione del forum è libera per tutti.
Per poter porre un quesito è invece necessario essere un utente registrato (clicca qui se non lo sei).
Tutti gli utenti che richiedono un supporto, come da REGOLAMENTO, sono caldamente invitati ad allegare un file di esempio con l'indicazione di quello che si desidera ottenere.
Buongiorno a tutti!
Sono un nuovo utente di questo bel sito dedicato ad Excel.
Ho questo problema: in un foglio ho diverse zone di immissione con convalida dati. In queste zone può essere immesso uno dei valori del menu a tendina prelevati dalle celle $AE$8:$AE$37 solamente se il contenuto della cella che funge da intestazione della zona di immissione contiene il testo “Allievo”. Poiché queste zone di immissione occupano tante zone del foglio sia in direzione orizzontale che verticale, per potere ricopiare le zone liberamente ho sfruttato alcune funzioni per avere indirizzi di cella dinamici. Ri_x_Sett = 8, dice quante righe è alta la zona di immissione.
Questa è la formula inserita nel campo Origine nell’impostazione dei criteri di convalida nella colonna C:
=SE(INDIRETTO(INDIRIZZO(RIF.RIGA()-RESTO(RIF.RIGA()-1;Ri_x_Sett);RIF.COLONNA(C$1);2))="Allievo";SCARTO($AE$8;0;0;CONTA.SE($AE$8:$AE$37;">""")+1;1);$AE$1)
Risultato: non funziona. Dove sbaglio?
Notare che se nella zona di convalida inserisco tutta la formula ad esclusione del SE, tutto funziona (ma ovviamente non serve a niente).
Invece, se creo una colonna di supporto in D (riferito alla C indicata nella formula sopra), contenente questa formula:
INDIRIZZO(RIF.RIGA()-RESTO(RIF.RIGA()-1;Ri_x_Sett);RIF.COLONNA(C$1);2)
ho come risultato C$9 in D9, C$9 in D10, C$9 in D11 e così via fino a D16. Perfetto, C$9 è l’indirizzo di cella in cui verificare se è presente il testo “Allievo”.
Poi, inserisco nel campo Origine nell’impostazione dei criteri di convalida nella colonna C la seguente formula:
=SE(INDIRETTO(D9)="Allievo";SCARTO($AE$8;0;0;CONTA.SE($AE$8:$AE$37;">""")+1;1);$AE$1)
la convalida dati funziona perfettamente.
Eppure l’indirizzo in D9 viene ricostruito con le medesime funzioni INDIRIZZO; RIF.RIGA e RIF.COLONNA.
Dove sbaglio?
Chiedo scusa se non ho allegato il file, ma in questi giorni non riesco ad accedere al PC dove è contenuto. Ho riscritto qui le formule che ho imparato a memoria da quanto ci ho sbattuto la testa.
Grazie a chi vorrà aiutarmi.
Spero in futuro di potere essere di aiuto anch’io.
V.
ciao
il >"" del conta se lascia perplessi
metti
"<>"&""
senza file difficile rispondere
allora se C1= Allievo
usi scarto
giusto?
Anzitutto, grazie della risposta.
Il CONTA.SE con >"" l'ho provato in realtà in tanti altri modi compreso quello che indichi tu, ma senza risultato.
Esatto: se la cella puntata dall'insieme delle funzioni annidate INDIRETTO(INDIRIZZO(RIF.RIGA etc. è = "Allievo", eseguo SCARTO.
Grazie dell'interessamento.
V.
ciao
l'ho provata su un file esempio
funziona
=SE(INDIRETTO(INDIRIZZO(RIF.RIGA()-RESTO(RIF.RIGA()-1;8);RIF.COLONNA(C$1);2))="Allievo";SCARTO($AE$8;0;0;CONTA.SE($AE$8:$AE$37;"<>"&"")+1;1);$AE$1)
ma la devi mettere su una colonna
in una convalida non funziona
la convalida con elenco deve avere un range
se la metti in colonna Q per esempio
poi la convalida sarà
=SCARTO(Q5;0;0;CONTA.SE(Q5:Q40;"<>"&""))
e ti renderà 0 oppure la lista
e funzionerà
Grazie ad un vecchio file di supporto, sono riuscito a ricostruire la parte del file con le convalide dati, oggetto della discussione, che allego.
Ho inserito i due tipi di convalida, uno non funziona (guardacaso quello che farebbe al caso mio), l'altro sì.
Credo che sia una mia interpretazione sbagliata delle funzioni INDIRETTO(INDIRIZZO(RIF.RIGA();RIF.COLONNA() etc.
Buon divertimento.
Grazie.
V.
ciao
non riesco ascaricare il file
The service is unavailable.
niente aspetto
vediamo se si sblocca
ciao
a me funziona tutto
comunque non è più semplice
metti la convalida in C10 e confermala.
=SE(C$9="Allievo";SCARTO($AE$8;;;CONTA.SE($AE$8:$AE$38;"?*")+1;1);$AE$1)
poi selezioni le due celle C10-D10
le trascini a destra e in basso.
hai il risultato che vuoi.
Grazie.
Questa era la convalida dati in origine che avevo assegnato a tutte le celle per l'immissione:
=SE(C$9="Allievo";SCARTO($AE$8;0;0;CONTA.SE($AE$8:$AE$37;">""")+1;1);$AE$1)
Come vedi è molto simile alla tua. Ovviamente in ciascun gruppo di righe era da aggiornare il riferimento assoluto in SE. Finchè lo schema era semplice come quello del file di esempio, tutto bene. I problemi sono sorti quando questo schema ha dovuto essere replicato decine di volte nel foglio (in direzione verticale); questo mi costringe a ripassare ogni volta le convalide di tutte le celle di immissione di una nuovo gruppo copiato.
Teoricamente, credevo di avere risolto con le convalide che sono delle aree rosa e fuxia del file che hoi postato, gli indirizzi delle celle avrebbero dovuto aggiornarsi automaticamente. Ma non è così. Almeno, sul mio PC non è così. Provando la convalida a blocchi separati, funziona tutto, ma una volta radunati in un'unica formula, funziona se inserita in una singola cella come formula, ma non funziona assolutamente se utilizzata come convalida dati.
Se sul file PROVA.XLS che ho postato, sul tuo PC funzionano sia le convalide delle zone rosa che quelle delle zone verdi, mi viene il sospetto che esista un problema sul mio Office.
Cosa ne pensi?
Grazie.
V.
ciao
per scrupolo ho ricontrollato
funzionano tutte le convalide
non so se è la versione che usi o cosa
metto questo nella formula drl conta se
ti elimina tutti gli spazi vuoti della convalida
$8:$AE$38;"?*")
Ho provato ad inserire "?*" al posto di ">""" o "<>"&"" nella formula, ma non c'è verso, nelle zone rosa e fuxia non funziona.
Se da te funziona tutto, visto che la costante è il file PROVA.XLS è certo che il problema è sul mio Office o Excel.
Grazie.
V.
ciao
quello che ti ho detto di cambiare nella formula
serve solo a non vedere gli spazi bianchi
ora riprovo per scaramanzia il tuo file
ciao
è assurdo
da me il file funziona
ma se provo a ricopiare la stessa formula sulla convalida
della stessa cella mi da errore.
ho provato a ricopiarlo anche nel mio file
e mi da errore.
vediamo se scopro il perchè
Forse è un problema di compatibilità della funzione SE con INDIRETTO(INDIRIZZO(RIF:RIGA( etc..
Grazie.
V.