Note: The other languages of the website are Google-translated. Back to English

 Come creare un elenco a discesa ma mostrare valori diversi in Excel?

Nel foglio di lavoro di Excel, possiamo creare rapidamente un elenco a discesa con la funzione Convalida dati, ma hai mai provato a mostrare un valore diverso quando fai clic sull'elenco a discesa? Ad esempio, ho le seguenti due colonne di dati nella colonna A e nella colonna B, ora devo creare un elenco a discesa con i valori nella colonna Nome, ma, quando seleziono il nome dall'elenco a discesa creato, il corrispondente il valore nella colonna Numero viene visualizzato come mostrato nella seguente schermata. Questo articolo introdurrà i dettagli per risolvere questo compito.

doc dropdown valori diversi 1

Crea un elenco a discesa ma mostra un valore diverso nella cella dell'elenco a discesa


Crea un elenco a discesa ma mostra un valore diverso nella cella dell'elenco a discesa

Per completare questa attività, eseguire la procedura seguente:

1. Crea un nome di intervallo per i valori di cella che desideri utilizzare nell'elenco a discesa, in questo esempio, inserirò il nome a discesa nel Nome casellae quindi premere Entra chiave, vedi screenshot:

doc dropdown valori diversi 2

2. Quindi seleziona le celle in cui desideri inserire l'elenco a discesa e fai clic su Sincronizzazione dei > Convalida dati > Convalida dati, vedi screenshot:

doc dropdown valori diversi 3

3. Nel Convalida dati finestra di dialogo, sotto il file Impostazioni profilo scheda, scegliere Lista dal Consentire menu a discesa, quindi fare clic su doc dropdown valori diversi 5 per selezionare l'elenco Nome che si desidera utilizzare come valori a discesa nel file Fonte casella di testo. Vedi screenshot:

doc dropdown valori diversi 4

4. Dopo aver inserito l'elenco a discesa, fare clic con il pulsante destro del mouse sulla scheda del foglio attivo e selezionare Visualizza codice dal menu contestuale e nel file Microsoft Visual Basic per le applicazioni finestra, copia e incolla il seguente codice nel modulo vuoto:

Codice VBA: visualizza un valore diverso dall'elenco a discesa:

Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby Extendoffice
    selectedNa = Target.Value
    If Target.Column = 5 Then
        selectedNum = Application.VLookup(selectedNa, ActiveSheet.Range("dropdown"), 2, False)
        If Not IsError(selectedNum) Then
            Target.Value = selectedNum
        End If
    End If
End Sub

doc dropdown valori diversi 6

Note:: Nel codice sopra, il numero 5 entro Se Target.Column = 5 Then lo script è il numero di colonna in cui si trova l'elenco a discesa,, il "discesa" in questo selectedNum = Application.VLookup (selectedNa, ActiveSheet.Range ("dropdown"), 2, False) codice è il nome dell'intervallo che hai creato nel passaggio 1. Puoi cambiarli secondo le tue necessità.

5. Quindi salva e chiudi questo codice, ora, quando selezioni un elemento dall'elenco a discesa, nella stessa cella viene visualizzato un valore relativo diverso, vedi screenshot:

doc dropdown valori diversi 7


Demo: crea un elenco a discesa ma mostra valori diversi in Excel

Kutools for Excel: con più di 300 utili componenti aggiuntivi di Excel, liberi di provare senza limitazioni in 30 giorni. Scarica e prova gratuita ora!

 


I migliori strumenti per la produttività in ufficio

Kutools per Excel risolve la maggior parte dei tuoi problemi e aumenta la tua produttività dell'80%

  • Riutilizzo: Inserisci rapidamente formule complesse, grafici e tutto ciò che hai usato prima; Crittografa celle con password; Crea mailing list e invia email ...
  • Bar Super Formula (modifica facilmente più righe di testo e formula); Layout di lettura (leggi e modifica facilmente un gran numero di celle); Incolla su intervallo filtrato...
  • Unisci celle / righe / colonne senza perdere dati; Contenuto delle celle divise; Combina righe / colonne duplicate... Impedisci celle duplicate; Confronta intervalli...
  • Seleziona Duplica o Unico Righe; Seleziona Righe vuote (tutte le celle sono vuote); Super Find e Fuzzy Find in molte cartelle di lavoro; Selezione casuale ...
  • Copia esatta Più celle senza modificare il riferimento della formula; Riferimenti di creazione automatica a più fogli; Inserisci punti elenco, Caselle di controllo e altro ...
  • Estrai testo, Aggiungi testo, Rimuovi per posizione, Rimuovi spazio; Creare e stampare totali parziali di paging; Converti contenuto e commenti tra celle...
  • Super filtro (salva e applica schemi di filtri ad altri fogli); Ordinamento avanzato per mese / settimana / giorno, frequenza e altro; Filtro speciale in grassetto, corsivo ...
  • Combina cartelle di lavoro e fogli di lavoro; Unisci tabelle in base a colonne chiave; Suddividi i dati in più fogli; Conversione in batch xls, xlsx e PDF...
  • Più di 300 potenti funzionalità. Supporta Office / Excel 2007-2019 e 365. Supporta tutte le lingue. Facile distribuzione nella tua azienda o organizzazione. Funzionalità complete Prova gratuita di 30 giorni. Garanzia di rimborso di 60 giorni.
scheda kte 201905

Scheda Office porta l'interfaccia a schede a Office e semplifica notevolmente il lavoro

  • Abilita la modifica e la lettura a schede in Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Apri e crea più documenti in nuove schede della stessa finestra, piuttosto che in nuove finestre.
  • Aumenta la produttività del 50% e riduce centinaia di clic del mouse ogni giorno!
fondo officetab

 

Commenti (40)
Ancora nessuna valutazione. Puoi essere il primo a votare!
Questo commento è stato fatto dal moderatore sul sito
Si può fare su fogli diversi? Voglio dire, sul foglio1 il menu a discesa e sul foglio2 l'intervallo. Come devo codificare questo? Grazie in anticipo. Tina.
Questo commento è stato fatto dal moderatore sul sito
Cosa succede se voglio eseguire più di un menu a discesa che restituisce valori diversi sullo stesso foglio di lavoro? Puoi mostrarmi un esempio della codifica per due o più?
Questo commento è stato fatto dal moderatore sul sito
Lee Ann

Se copi e incolli semplicemente il codice da If a EndIf e modifichi la colonna # e Table, dovrebbe funzionare:


Sub Worksheet_Change(ByVal Target As Range)
selezionatoNa = Valore.destinazione
Se Target.Column = 5 Then
selectedNum = Application.VLookup (selectedNa, ActiveSheet.Range ("dropdown"), 2, False)
If Not IsError (selectedNum) Allora
Target.Value = selezionatoNum
End If
End If
Se Target.Column = 9 Then
selectNum = Application.VLookup(selectedNa, ActiveSheet.Range("dropdown1"), 2, False)
If Not IsError (selectedNum) Allora
Target.Value = selezionatoNum
End If
End If
End Sub

Non sto dicendo che questo sia il modo corretto, ma ha funzionato sulla mia versione di prova. Sto usando Excel 2013
Questo commento è stato fatto dal moderatore sul sito
Appena provato. E ha funzionato!! Grazie.
Questo commento è stato fatto dal moderatore sul sito
Ciao, aiuto, non funziona, puoi incollare qui tutto il codice per 2 colonne?
Questo commento è stato fatto dal moderatore sul sito
Niente di più frustrante che digitare una domanda dettagliata solo per farla esplodere. Se digiti il ​​codice a 6 cifre sbagliato per verificare il tuo essere umano, il messaggio pubblicato viene cancellato. Potrebbe voler risolvere il problema. Ora il mio commento è questo: ho provato a fare esattamente la stessa cosa che hai mostrato nel video e nelle istruzioni scritte e tutto ciò che ottengo è quando seleziono un nome nell'elenco è il nome e non il numero. Inoltre, come funziona anche questo dato che la convalida dei dati dovrebbe limitare le scelte solo a ciò che è nell'elenco. In che modo questo inganna il sistema? In passato ho sempre dovuto assegnare il codice vba a un pulsante o a una scorciatoia, come si attiva questo codice? Come si esegue il test per assicurarsi che funzioni?
Questo commento è stato fatto dal moderatore sul sito
Come funziona la formula quando si desidera aggiungere i dati su un foglio separato nella cartella di lavoro? Voglio nascondere i dati.
Questo commento è stato fatto dal moderatore sul sito
Cambia qui fratello!
selectNum = Application.VLookup(selectedNa, Worksheets("YourSheetName").Range("dropdown"), 2, False)
Questo commento è stato fatto dal moderatore sul sito
"YourSheetName" fa riferimento al foglio che contiene l'intervallo di dati o al foglio in cui voglio utilizzare l'elenco dropdwon?
Questo commento è stato fatto dal moderatore sul sito
Come funziona la formula quando si desidera elencare i dati su un foglio/scheda separato nella cartella di lavoro?
Questo commento è stato fatto dal moderatore sul sito
questo non funziona nelle versioni attuali di excel-obsoleto. La convalida dei dati quindi l'elenco non viene più visualizzato in vba poiché un oggetto Excel ha già provato più volte e non viene visualizzato.
Questo commento è stato fatto dal moderatore sul sito
In questo esempio, cosa succede se si desidera guardare un valore in ciascuna delle celle in 5, ma inserire il valore nella cella adiacente in 6
Questo commento è stato fatto dal moderatore sul sito
In che modo il codice deve essere modificato se volessi creare un riferimento/collegamento in E1 all'origine dell'elenco a discesa in base al valore selezionato?
Il vantaggio sarebbe che in caso di modifica nella sorgente a discesa (ad esempio "Henrik" => "Hendrik" la modifica si rifletterebbe automaticamente in E1.
Questo commento è stato fatto dal moderatore sul sito
Qualcuno sa come farlo funzionare nei fogli di Google?
Questo commento è stato fatto dal moderatore sul sito
Voglio selezionare più opzioni dall'elenco a discesa.
risultato in questo modo: AA1001,BB1002
è possibile?
Questo commento è stato fatto dal moderatore sul sito
Hai trovato una soluzione?
Questo commento è stato fatto dal moderatore sul sito
Se i dati della lista sono stati inseriti in un altro hoja, quale sería el código? Grazia.
Questo commento è stato fatto dal moderatore sul sito
come buscar un valor hacia la izquierda
Questo commento è stato fatto dal moderatore sul sito
Private Sub Worksheet_Change (ByVal Target As Range)
selezionatoNa = Valore.destinazione
Se Target.Column = 5 Then

Fogli("Nombre de la hoja en donde esta la lista").Attiva
selectedNum = Application.VLookup (selectedNa, ActiveSheet.Range ("dropdown"), 2, False)
Fogli("Nombre de la hoja en donde estas trabajando").Attiva
If Not IsError (selectedNum) Allora
Target.Value = selezionatoNum
End If
End If
End Sub
Questo commento è stato fatto dal moderatore sul sito
Qualcuno sa come cercare il valore da destra a sinistra
Questo commento è stato fatto dal moderatore sul sito
Devo usare lo stesso menu a discesa in più di una colonna, quale sarebbe il codice?
Questo commento è stato fatto dal moderatore sul sito
Ciao!
Questo è davvero utile! Grazie!
Sono in esecuzione nella situazione in cui la cella non si aggiorna automaticamente o quando si utilizza la funzione di aggiornamento. Devo fare clic in un'altra cella e quindi fare nuovamente clic sulla cella in lavoro per visualizzare il valore.
Attualmente sto lavorando con Office Standard 2019. Qualcuno sa se questo problema è correlato alla versione su Excel che sto usando?
Questo commento è stato fatto dal moderatore sul sito
Ciao,
Il codice funzionava correttamente se stiamo definendo l'elenco e creando il menu a discesa nello stesso foglio.
Ma come possiamo arrivare a definire l'elenco di valori e codici in un foglio e il menu a tendina creato in un altro foglio?
Questo stesso codice non funziona in quanto viene visualizzato ed errore in questa riga ("selectedNum = Application.VLookup(selectedNa, ActiveSheet.Range("dropdown"), 2, False)").
Inoltre, ho un requisito del tipo, se ho più elenchi definiti in un foglio con ID e nomi e più menu a discesa in un altro foglio in cui un valore a discesa dipende dal valore selezionato in un altro menu a discesa.

Spero che tu abbia capito la mia domanda.

Per favore aiutami a risolvere questo problema.
Questo commento è stato fatto dal moderatore sul sito
Questo mi ha aiutato immensamente, grazie. Poiché la mia tabella si trovava su un foglio diverso rispetto alla mia casella di riepilogo, ho aggiunto un paio di righe di codice per farlo e anche per evitare che lo schermo lampeggi.

Application.ScreenUpdating = False
Fogli("SheetWithTableOnIt").Attiva

Fogli("SheetWithDropDownListOnIt").Attiva
Application.ScreenUpdating = True
Questo commento è stato fatto dal moderatore sul sito
dove esattamente hai aggiunto questi codici?
Questo commento è stato fatto dal moderatore sul sito
Ricevo un errore di compilazione: errore di sintassi sulla riga "If Trarget.Column = 6 Then" quando provo a utilizzare il codice? Qualche idea sul perché?
Questo commento è stato fatto dal moderatore sul sito
Funziona ma quando esci da un file e lo riapri non funziona ... non può essere salvato come .xls solo come .xlsm c'è qualche soluzione per questo? Grazie
Questo commento è stato fatto dal moderatore sul sito
Ciao, Marko, dopo aver copiato e incollato il codice nella tua cartella di lavoro, quando salvi il file, dovresti salvarlo come un formato di cartella di lavoro abilitato per macro di Excel, per favore prova, grazie!
Non ci sono ancora commenti pubblicati qui
Carica Altre
Lasciate i vostri commenti
Pubblicazione come ospite
×
Valuta questo post:
0   Personaggi
Posizioni suggerite