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

 Cum se creează o listă derulantă, dar se afișează valori diferite în Excel?

În foaia de lucru Excel, putem crea rapid o listă derulantă cu funcția de validare a datelor, dar ați încercat vreodată să afișați o altă valoare când faceți clic pe lista derulantă? De exemplu, am următoarele două date de coloană în Coloana A și Coloana B, acum trebuie să creez o listă derulantă cu valorile din coloana Nume, dar, când selectez numele din lista verticală creată, valoarea din coloana Număr este afișată după cum se arată în următoarea captură de ecran. Acest articol va introduce detaliile pentru a rezolva această sarcină.

derulant doc valori diferite 1

Creați o listă derulantă, dar afișați o valoare diferită în celula listei derulante


Creați o listă derulantă, dar afișați o valoare diferită în celula listei derulante

Pentru a finaliza această sarcină, vă rugăm să efectuați următorul pas cu pas:

1. Creați un nume de interval pentru valorile celulei pe care doriți să le utilizați în lista derulantă; în acest exemplu, voi introduce meniul derulant în Cutie de nume, apoi apăsați Intrați tasta, vezi captura de ecran:

derulant doc valori diferite 2

2. Apoi selectați celulele în care doriți să inserați lista derulantă și faceți clic pe Date > Data validarii > Data validarii, vezi captura de ecran:

derulant doc valori diferite 3

3. În Data validarii caseta de dialog, sub setări cont fila, alegeți Listă de la Permite derulează, apoi faceți clic pe derulant doc valori diferite 5 pentru a selecta lista de nume pe care doriți să o utilizați ca valori derulante în Sursă casetă de text. Vedeți captura de ecran:

derulant doc valori diferite 4

4. După inserarea listei derulante, faceți clic dreapta pe fila de foaie activă și selectați Afișați codul din meniul contextual și în meniul deschis Microsoft Visual Basic pentru aplicații fereastră, copiați și lipiți următorul cod în modulul gol:

Cod VBA: afișați valori diferite din lista derulantă:

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

derulant doc valori diferite 6

notițe: În codul de mai sus, numărul 5 în Dacă Target.Column = 5 Atunci scriptul este numărul coloanei pe care ați localizat-o lista derulantă, „drop-down" in acest selectedNum = Application.VLookup (selectedNa, ActiveSheet.Range ("dropdown"), 2, False) codul este numele zonei pe care l-ați creat la pasul 1. Puteți să le schimbați la cel necesar.

5. Apoi salvați și închideți acest cod, acum, când selectați un element din lista derulantă, o valoare relativ diferită este afișată în aceeași celulă, vedeți captura de ecran:

derulant doc valori diferite 7


Demo: creați o listă derulantă, dar afișați valori diferite în Excel

Kutools pentru Excel: cu mai mult de 300 de programe de completare Excel la îndemână, încercați fără limitări în 30 de zile. Descărcați și proba gratuită acum!

 


Cele mai bune instrumente de productivitate Office

Kutools pentru Excel vă rezolvă majoritatea problemelor și vă crește productivitatea cu 80%

  • reutilizarea: Introduceți rapid formule complexe, diagrame și orice ai folosit anterior; Criptați celulele cu parola; Creați o listă de corespondență și trimiteți e-mailuri ...
  • Super Formula Bar (editați cu ușurință mai multe linii de text și formulă); Layout de citire (citiți și editați cu ușurință un număr mare de celule); Lipiți la interval filtrat...
  • Merge celule / rânduri / coloane fără a pierde date; Conținut de celule divizate; Combinați rânduri / coloane duplicate... Prevenirea celulelor duplicate; Comparați gamele...
  • Selectați Duplicat sau Unic Rânduri; Selectați Rânduri goale (toate celulele sunt goale); Super Find și Fuzzy Find în multe cărți de lucru; Selectare aleatorie ...
  • Copie exactă Mai multe celule fără modificarea referinței formulelor; Creați automat referințe la foi multiple; Introduceți gloanțe, Casete de selectare și multe altele ...
  • Extrageți textul, Adăugați text, eliminați după poziție, Eliminați spațiul; Creați și imprimați subtotaluri de paginare; Convertiți conținutul dintre celule și comentarii...
  • Super Filtru (salvați și aplicați scheme de filtrare altor foi); Sortare avansată după lună / săptămână / zi, frecvență și multe altele; Filtru special cu bold, italic ...
  • Combinați cărți de lucru și foi de lucru; Merge Tables pe baza coloanelor cheie; Împărțiți datele în mai multe foi; Conversia în loturi xls, xlsx și PDF...
  • Peste 300 de funcții puternice. Suportă Office / Excel 2007-2021 și 365. Acceptă toate limbile. Implementare ușoară în întreprinderea sau organizația dvs. Funcții complete Probă gratuită de 30 de zile. Garanție de returnare a banilor de 60 de zile.
fila kte 201905

Fila Office aduce interfața cu file în Office și vă face munca mult mai ușoară

  • Activați editarea și citirea cu file în Word, Excel, PowerPoint, Publisher, Access, Visio și Project.
  • Deschideți și creați mai multe documente în filele noi ale aceleiași ferestre, mai degrabă decât în ​​ferestrele noi.
  • Vă crește productivitatea cu 50% și reduce sute de clicuri de mouse pentru dvs. în fiecare zi!
fundul officetab

 

Comentarii (42)
Încă nu există evaluări. Fii primul care evaluează!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Se poate face acest lucru pe foi diferite? Adică, pe sheet1 dropdown-ul și pe sheet2 gama. Cum trebuie să codific asta? Mulțumesc anticipat. Tina.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Ce se întâmplă dacă vreau să fac mai multe liste derulante care returnează valori diferite pe aceeași foaie de lucru? Îmi puteți arăta un exemplu de codificare pentru două sau mai multe?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Lee Ann

Dacă doar copiați și lipiți codul din If în EndIf și schimbați coloana # și Tabelul ar trebui să funcționeze:


Sub Worksheet_Change(ByVal Target As Range)
selectatNa = Target.Value
Dacă Target.Column = 5 Atunci
selectedNum = Application.VLookup (selectedNa, ActiveSheet.Range ("dropdown"), 2, False)
If Not IsError(selectedNum) Atunci
Target.Value = selectatNum
Final, dacă
Final, dacă
Dacă Target.Column = 9 Atunci
selectedNum = Application.VLookup(selectedNa, ActiveSheet.Range("dropdown1"), 2, False)
If Not IsError(selectedNum) Atunci
Target.Value = selectatNum
Final, dacă
Final, dacă
End Sub

Nu spun că acesta este modul corect, dar a funcționat la versiunea mea de testare. Folosesc Excel 2013
Acest comentariu a fost redus la minimum de moderatorul de pe site
Tocmai am încercat. Și a funcționat!! Mulțumesc.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, ajutor, nu funcționează, puteți lipi aici tot codul pentru 2 coloane?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Tony: Corect, dar următorul pas este să evitați încurajarea: a) încălcărilor Principiului DRY (și, prin urmare, a crescut: a.1) șansele de erori și costurile pentru remedierea acestora și a.2) costurile potențialelor modificări / îmbunătățiri viitoare) prin nu încurajează programarea „Copy-Paste” prin arătarea modului în care poate fi „refactorizat” pentru a reduce codul duplicat și b) constante literale codificate („magic” „număr” / „șir”) prin declararea și utilizarea constantelor numite care sunt mult mai greu de scris greșit fără a declanșa o eroare de compilator. Singurele lucruri diferite dintre cele două blocuri de cod copiate-lipite sunt coloanele #-urile și numele intervalelor, așa că, pe cât posibil, orice altceva nu ar trebui să fie duplicat, deci, în schimb, codul ar trebui, de exemplu, să fie:

' -- NOTĂ: Declarați „EmptyString” într-un modul de declarații globale.
Public Const EmptyString ca șir = ""

' -- Coloana #s. NOTĂ: În practică, de exemplu, „Col5Header” ar fi, de exemplu, „ProductID”, iar „Col9Header” ar fi, de exemplu, „SalesID”.
Private Const Col5HeaderColumnNumber Ca întreg = 5
Private Const Col9HeaderColumnNumber Ca întreg = 9

' -- Nume de intervale din listele drop-down pentru coloane
Private Const Col5HeaderDropDownRangeName ca șir = „col5HeaderDropDownRangeName”
Private Const Col9HeaderDropDownRangeName ca șir = „col9HeaderDropDownRangeName”

Sub Foaia de lucru_Modificare _
( _
ByVal Target As Range _
)

' -- BEGIN Pentru =coloanele aplicabile, introduceți ID-ul pentru descrierea selectată din listele derulante.
Dim dropDownListRangeName ca șir
dropDownListRangeName = EmptyString
Selectați Case Target.Column
Cazul Col5HeaderColumnNumber
dropDownListRangeName = Col5HeaderDropDownRangeName
Cazul Col9HeaderColumnNumber
dropDownListRangeName = Col9HeaderDropDownRangeName
End Select ' -- Case Target.Column
Dacă (dropDownListRangeName <> EmptyString) Atunci
Dim selectedId ca șir
selectedId = Application.VLookup(selectedNa, ActiveSheet.Range(dropDownListRangeName), 2, False)
If Not IsError(selectedId) Atunci
Target.Value = selectId
End If ' -- Not IsError(selectedId)
End If ' -- (dropDownListRangeName <> EmptyString)
-- END Pentru coloanele = aplicabile, introduceți ID-ul pentru descrierea selectată din listele derulante.

End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Nimic mai frustrant decât să tastezi o întrebare detaliată doar pentru a o răpi. Dacă introduceți greșit codul de 6 cifre pentru a vă verifica persoana, acesta șterge mesajul postat. Poate doriți să remediați asta. Acum comentariul meu este următorul: am încercat să fac exact același lucru pe care l-ați arătat în videoclip și în instrucțiunile scrise și tot ce primesc este că atunci când selectez un nume din listă este numele și nu numărul. De asemenea, cum funcționează acest lucru, deoarece validarea datelor ar trebui să limiteze opțiunile doar la ceea ce este în listă. Cum păcălește asta sistemul? În trecut, a trebuit întotdeauna să atribui un cod vba unui buton sau unei comenzi rapide, cum este activat acest cod? Cum testați pentru a vă asigura că funcționează?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Cum funcționează formula atunci când doriți să adăugați datele pe o foaie separată în registrul de lucru? Vreau să ascund datele.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Schimba-te aici frate!
selectedNum = Application.VLookup(selectedNa, Worksheets("YourSheetName").Range("dropdown"), 2, False)
Acest comentariu a fost redus la minimum de moderatorul de pe site
„YourSheetName” face referire la foaia care conține intervalul de date sau foaia în care vreau să folosesc lista dropdwon?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Cum funcționează formula atunci când doriți să enumerați datele pe o foaie/filă separată în registrul de lucru?
Acest comentariu a fost redus la minimum de moderatorul de pe site
acest lucru nu funcționează în versiunile actuale de excel- învechit. Validarea datelor, apoi lista nu mai apare în vba, deoarece un obiect Excel a încercat deja de mai multe ori și nu apare.
Acest comentariu a fost redus la minimum de moderatorul de pe site
În acest exemplu, ce se întâmplă dacă doriți să se uite la o valoare în fiecare dintre celulele din 5, dar puneți valoarea în celula adiacentă din 6
Acest comentariu a fost redus la minimum de moderatorul de pe site
Cum ar trebui să se schimbe codul dacă aș vrea să creez o referință/link în E1 la sursa listei derulante pe baza valorii selectate?
Beneficiul ar fi că, în cazul unei modificări a sursei drop-down (de exemplu, „Henrik” => „Hendrik”, modificarea se va reflecta automat în E1.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Știe cineva cum să facă asta să funcționeze în foi de calcul Google?
Acest comentariu a fost redus la minimum de moderatorul de pe site
vreau să selectez mai multe opțiuni din lista derulantă.
rezultat astfel: AA1001,BB1002
este posibil?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Ai găsit o soluție?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Si los datos de la lista están en otra hoja, cuál ar fi codul? Multumesc.
Acest comentariu a fost redus la minimum de moderatorul de pe site
cómo buscar un valor hacia la izquierda
Acest comentariu a fost redus la minimum de moderatorul de pe site
Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
selectatNa = Target.Value
Dacă Target.Column = 5 Atunci

Sheets("Nombre de la hoja en donde esta la lista").Activate
selectedNum = Application.VLookup (selectedNa, ActiveSheet.Range ("dropdown"), 2, False)
Sheets("Nombre de la hoja en donde estas trabajando").Activate
If Not IsError(selectedNum) Atunci
Target.Value = selectatNum
Final, dacă
Final, dacă
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Cineva știe cum să caute valoarea de la dreapta la stânga
Acest comentariu a fost redus la minimum de moderatorul de pe site
Trebuie să folosesc același meniu derulant în mai multe coloane, care ar fi codul?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună!
Acest lucru este cu adevărat util! Mulțumesc!
Eu rulez în situația în care celula nu se actualizează automat sau când folosesc funcția de reîmprospătare. Trebuie să dau clic într-o altă celulă și apoi să dau clic înapoi pe celula în lucru pentru ca aceasta să afișeze valoarea.
În prezent lucrez cu Office Standard 2019. Știe cineva dacă această problemă este legată de versiunea pe Excel pe care o folosesc?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,
Codul funcționa bine dacă definim lista și creăm meniul drop-down în aceeași foaie.
Dar cum putem reuși să definim lista de valori și coduri într-o foaie și drop-down-ul creat într-o altă foaie?
Același cod nu funcționează așa cum se arată și eroare în această linie ("selectedNum = Application.VLookup(selectedNa, ActiveSheet.Range("dropdown"), 2, False)").
De asemenea, am o cerință cum ar fi, dacă am mai multe liste definite într-o singură foaie cu ID și Nume și mai multe drop-down-uri într-o altă foaie în care o valoare drop-down depinde de valoarea selectată într-un alt drop-down.

Sper că ai înțeles întrebarea mea.

Va rog sa ma ajutati in rezolvarea acestei probleme.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Acest lucru m-a ajutat enorm, mulțumesc. Deoarece tabelul meu era pe o foaie diferită de caseta mea cu listă, am adăugat câteva linii de cod pentru a realiza acest lucru și, de asemenea, pentru a împiedica ecranul să clipească.

Application.ScreenUpdating = Fals
Sheets("SheetWithTableOnIt").Activate

Sheets("SheetWithDropDownListOnIt").Activate
Application.ScreenUpdating = Adevărat
Acest comentariu a fost redus la minimum de moderatorul de pe site
unde ai adaugat mai exact aceste coduri?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Primesc o eroare de compilare: eroare de sintaxă pe linia „Dacă Trarget.Column = 6 Then” când încerc să folosesc codul? Aveti idee de ce?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Funcționează, dar când părăsiți un fișier și deschideți din nou, nu funcționează... nu poate fi salvat ca .xls doar ca .xlsm. Există vreo soluție pentru asta? Mulțumiri
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Marko, După ce ați copiat și lipit codul în registrul de lucru, atunci când salvați fișierul, ar trebui să îl salvați ca format Excel Macro-Enabled Workbook, vă rugăm să încercați, vă mulțumesc!
Nu există comentarii postate aici încă
Încărcați mai
Lăsa comentarii
Postare ca invitat
×
Evaluează această postare:
0   Caractere
Locații sugerate

Urmărește-ne

Copyright © 2009 - www.extendoffice.com. | Toate drepturile rezervate. Cu sprijinul ExtendOffice. | Harta site-ului
Microsoft și sigla Office sunt mărci comerciale sau mărci comerciale înregistrate ale Microsoft Corporation în Statele Unite și / sau în alte țări.
Protejat de Sectigo SSL