Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Excel: convalida dati con elenco a discesa

    Ciao.
    Volevo capire se e come era possibile fare una cosa.

    Volendo fare una cartella Excel per la gestione delle spese familiari volevo creare delle categorie e delle sottocategorie vincolate alle categorie; per spiegarmi, come succede in vari siti, dove selezionando per esempio la Regione da un menù a discesa, nel menù successivo ti trovi a poter selezionare solo una Provincia della regione selezionata.

    Ora, con la convalida dati, in una cella creo l'elenco a discesa delle spese (Assicurazione, Bollette, Abbigliamento ecc ...).
    E' possibile, nella cella a fianco, avere un altro menù a discesa che, in funzione di cosa ho selezionato nella prima cella, mi dia la possibilità di scegliere tra un dettaglio "coerente"?

    Mi spiego con un esempio:

    Prima cella >> Menù a discesa con possibilità di selezione tra "Assicurazione" e "Abbigliamento".

    - Seconda cella - Caso 1 >> Se nella prima cella ho selezionato "Assicurazione", mi permetta di scegliere tra "Auto", "Casa".
    - Seconda cella - Caso 2 >> Se nella prima cella ho selezionato "Abbigliamento", mi permetta di scegliere tra "Abiti", "Scarpe".

    Grazie mille, Ciao.

  2. #2
    Ammettiamo che in A1 tu abbia una convalida ad elenco che rende possibili solo i valori a, b, c contenuti nelle celle O1, O2, O3.

    Ed ammettiamo anche che i sottovalori di a siano contenuti nelle celle P1, P2, P3, i sottovalori di b nelle celle Q1, Q2, Q3 e i sottovalori di c nelle celle R1, R2, R3.

    Per ottenere, nella cella B1, l'elenco di convalida dipendente da ciò che viene scelto in A1 devi applicare una normale convalida ad elenco alla cella B1 inserendo nella casella 'Origine' questa formula:

    codice:
    =SE(A1="a";P1:P3;SE(A1="b";Q1:Q3;R1:R3))

    In questo modo invece di indicare un intervallo di dati fisso lasci che sia la formula ad indicarlo in base al valore presente in A1.

    Purtroppo il funzionamento di questo meccanismo non è perfetto perché excel controlla la validità dei dati presenti nelle celle solo nel momento in cui cambiano quindi se, dopo aver valorizzato coerentemente le celle A1 e B1, si cambia il valore di A1, B1 continuerà a contenere il suo valore che ora però non sarà più coerente col nuovo valore di A1.
    Purtroppo excel funziona così e, che io sappia, non ci si può fare niente a meno di non passare al VBA, ma quella è tutta un'altra storia.

    Spero di essere stato chiaro.
    Ciao
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  3. #3
    Quote Originariamente inviata da NonCeLaFaccio+ Visualizza il messaggio
    ...
    Purtroppo excel funziona così e, che io sappia, non ci si può fare niente a meno di non passare al VBA, ma quella è tutta un'altra storia.

    Spero di essere stato chiaro.
    Ciao
    Sei stato chiarissimo, grazie. Per il "limite" nell'aggiornamento, non è un problema.
    Piuttosto, scusa se abuso della tua disponibilità, avrei questo problema che sono due ore che ci sto sbattendo la testa ...

    Riprendendo il tuo esempio, volendo inserire per ogni "mese" (quindi per ogni foglio), diverse righe per segnare le varie spese, pensavo che con un copia/incolla, i riferimenti che sono stati scritti nella cella "B1" restassero invariati, come succede per la "A1"; purtroppo il risultato è che, per esempio sulla quinta riga, i riferimenti della cella "B5" si sono modificati in
    codice:
    =SE(A5="a";P5:P7;SE(A5="b";Q5:Q7;SE(A5="c";R5:R7;S5:S7)))
    anche vistando l'opzione "applica tutte le modifiche anche a tutte le altre celle con le stesse impostazioni".

    Spero di essermi perso in un bicchiere d'acqua ... perchè altrimenti dovrei scrivere manualmente le circa trenta righe che pensavo di mettere ...

    Grazie mille, ciao.
    Ultima modifica di Paal; 25-11-2013 a 00:39

  4. #4
    Non funziona neanche provando ad inserire nella "B1"
    codice:
    SE(A1="a";$P$1:$P$3;SE(A1="b";$Q$1:$Q$3;SE(A1="c";$R$1:$R$3;$S$1:$S$3)))

  5. #5
    Quote Originariamente inviata da Paal Visualizza il messaggio
    Non funziona neanche provando ad inserire nella "B1"
    codice:
    SE(A1="a";$P$1:$P$3;SE(A1="b";$Q$1:$Q$3;SE(A1="c";$R$1:$R$3;$S$1:$S$3)))
    Questo è strano perché a me la soluzione con i dollari funziona bene.

    Ricapitolando, nell'origine della convalida delle celle A1 e B1 ho inserito rispettivamente

    codice:
    =$O$1:$O$3
    =SE(A1="a";$P$1:$P$3;SE(A1="b";$Q$1:$Q$3;$R$1:$R$3))

    poi ho copiato e incollato le celle A1/B1 su A2/B2 e i puntamenti ai dati (O1:O3, P1:P3 ecc.) sono rimasti invariati, infatti nella B2 mi ritrovo:

    codice:
    =SE(A2="a";$P$1:$P$3;SE(A2="b";$Q$1:$Q$3;$R$1:$R$3))
    Verifica di aver fatto tutto correttamente perché dovrebbe funzionare, a meno che non si tratti di un bug presente in alcune versioni di excel e non in altre, io sto usando la 2007.
    Ultima modifica di NonCeLaFaccio+; 25-11-2013 a 11:28
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  6. #6
    Devo essere rimbambito ... adesso funziona correttamente.
    Non saprei cosa, ma di sicuro, a questo punto, sbagliavo io qualcosa ... anche se ... boh.
    Sto usando la versione 2010.

    Va bene, grazie infinite.
    Ciao e buone cose.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.