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

 Hogyan hozhatunk létre legördülő listát, de különböző értékeket jeleníthetünk meg az Excelben?

Az Excel munkalapon gyorsan létrehozhatunk egy legördülő listát az Adatellenőrzés funkcióval, de próbált-e már más értéket mutatni, amikor a legördülő listára kattint? Például a következő két oszlopadattal rendelkezem az A és B oszlopban, most létre kell hoznom egy legördülő listát a Név oszlopban szereplő értékekkel, de amikor a nevet kiválasztom a létrehozott legördülő listából, a megfelelő oszlopot A Szám oszlop értéke a következő képernyőképen jelenik meg. Ez a cikk bemutatja a feladat megoldásának részleteit.

doc legördülő menü különböző értékek 1

Létrehozó lista létrehozása, de a legördülő lista cellájában más értéket mutasson


Létrehozó lista létrehozása, de a legördülő lista cellájában más értéket mutasson

A feladat befejezéséhez tegye a következőket lépésről lépésre:

1. Hozzon létre egy tartománynevet a legördülő listában használni kívánt cellaértékekhez, ebben a példában a név legördülő listát a név Box, majd nyomja meg a gombot belép kulcs, lásd a képernyőképet:

doc legördülő menü különböző értékek 2

2. Ezután válassza ki azokat a cellákat, ahová be akarja illeszteni a legördülő listát, majd kattintson a gombra dátum > adatok ellenőrzése > adatok ellenőrzése, lásd a képernyőképet:

doc legördülő menü különböző értékek 3

3. Az adatok ellenőrzése párbeszédpanel alatt beállítások lapot választani Lista tól Hagyjuk legördülő menüből, majd kattintson a gombra doc legördülő menü különböző értékek 5 gombbal válassza ki a Név listát, amelyet legördülő értékként szeretne használni a forrás szövegdoboz. Lásd a képernyőképet:

doc legördülő menü különböző értékek 4

4. A legördülő lista beszúrása után kattintson a jobb gombbal az aktív lap fülre, és válassza a lehetőséget Kód megtekintése a helyi menüből és a megnyitottból Microsoft Visual Basic alkalmazásokhoz ablakba másolja és illessze be a következő kódot az üres modulba:

VBA kód: Különböző érték megjelenítése a legördülő listából:

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 legördülő menü különböző értékek 6

Megjegyzések: A fenti kódban a szám 5 belül Ha Target.Column = 5 Akkor szkript az oszlop száma, amelyet a legördülő listában talált, alegördülő" ebben selectedNum = Application.VLookup (selectedNa, ActiveSheet.Range ("legördülő menü"), 2, hamis) a kód az 1. lépésben létrehozott tartománynév. Megváltoztathatja őket a kívántra.

5. Ezután mentse és zárja be ezt a kódot, most, amikor kiválaszt egy elemet a legördülő listából, egy viszonylag eltérő érték jelenik meg ugyanabban a cellában, lásd a képernyőképet:

doc legördülő menü különböző értékek 7


Bemutató: Hozzon létre legördülő listát, de mutasson különböző értékeket az Excelben

Kutools az Excel számára: több mint 300 praktikus Excel-bővítménnyel, ingyenesen, korlátozás nélkül, 30 nap alatt kipróbálható. Töltse le és ingyenes próbaverziót most!

 


A legjobb irodai termelékenységi eszközök

A Kutools for Excel megoldja a legtöbb problémát, és 80% -kal növeli a termelékenységet

  • újrafelhasználás: Gyorsan helyezze be összetett képletek, diagramok és bármi, amit korábban használt; Cellák titkosítása jelszóval; Levelezőlista létrehozása és e-maileket küldeni ...
  • Szuper Formula Bár (könnyedén szerkeszthet több szöveget és képletet); Olvasás elrendezés (könnyen olvasható és szerkeszthető nagyszámú cella); Beillesztés a Szűrt tartományba...
  • Cellák / sorok / oszlopok egyesítése az adatok elvesztése nélkül; Osztott cellák tartalma; Kombinálja a duplikált sorokat / oszlopokat... megakadályozza az ismétlődő cellákat; Hasonlítsa össze a tartományokat...
  • Válassza a Másolat vagy az Egyedi lehetőséget Sorok; Válassza az Üres sorok lehetőséget (az összes cella üres); Super Find és Fuzzy Find sok munkafüzetben; Véletlenszerű kiválasztás ...
  • Pontos másolás Több cella a képletreferencia megváltoztatása nélkül; Automatikus referenciák létrehozása több lapra; Helyezze be a golyókat, Jelölőnégyzetek és még sok más ...
  • Kivonat szöveg, Szöveg hozzáadása, Eltávolítás pozíció szerint, Hely eltávolítása; Hozz létre és nyomtasson személyhívó részösszegeket; Konvertálás a cellatartalom és a megjegyzések között...
  • Szuper szűrő (mentse el és alkalmazza a szűrősémákat más lapokra); Haladó rendezés hónap / hét / nap, gyakoriság és egyebek szerint; Speciális szűrő félkövér, dőlt betűvel ...
  • Kombinálja a munkafüzeteket és a munkalapokat; Táblázatok egyesítése kulcsoszlopok alapján; Az adatok felosztása több lapra; Kötegelt konvertálás xls, xlsx és PDF...
  • Több mint 300 hatékony funkció. Támogatja az Office / Excel 2007-2021 és 365 verziókat. Minden nyelvet támogat. Könnyű üzembe helyezés vállalatában vagy szervezetében. Teljes funkciók 30 napos ingyenes próbaverzió. 60 napos pénzvisszafizetési garancia.
kte lap 201905

Az Office fül a füles felületet hozza az Office-ba, és sokkal könnyebbé teszi a munkáját

  • Füles szerkesztés és olvasás engedélyezése Wordben, Excelben és PowerPointban, Publisher, Access, Visio és Project.
  • Több dokumentum megnyitása és létrehozása ugyanazon ablak új lapjain, mint új ablakokban.
  • 50% -kal növeli a termelékenységet, és naponta több száz kattintással csökkenti az egér kattintását!
officetab alja

 

A megjegyzések rendezése szerint
Hozzászólások (42)
Még nincs értékelés. Legyen Ön az első, aki értékel!
A weboldal moderátora ezt a megjegyzést minimalizálta
Meg lehet ezt csinálni különböző lapokon? Mármint az 1. lapon a legördülő menü, a 2. lapon pedig a tartomány. Hogyan kell ezt kódolni? Előre is köszönöm. Tina.
A weboldal moderátora ezt a megjegyzést minimalizálta
Mi a teendő, ha egynél több legördülő listát szeretnék létrehozni, amely különböző értékeket ad vissza ugyanazon a munkalapon? Tudnál példát mutatni kettő vagy több kódolására?
A weboldal moderátora ezt a megjegyzést minimalizálta
Lee Ann

Ha csak másolja és illessze be a kódot az If-ből az EndIf-be, és módosítja az oszlopszámot és a táblázatot, akkor működnie kell:


Almunkalap_módosítás (ByVal Target As Range)
selectNa = Cél.Érték
Ha Target.Column = 5 Akkor
selectedNum = Application.VLookup (selectedNa, ActiveSheet.Range ("legördülő menü"), 2, hamis)
Ha nem IsError(selectedNum) Akkor
Target.Value = kiválasztottNum
Ha véget
Ha véget
Ha Target.Column = 9 Akkor
selectedNum = Application.VLookup(selectedNa, ActiveSheet.Range("legördülő1"), 2, False)
Ha nem IsError(selectedNum) Akkor
Target.Value = kiválasztottNum
Ha véget
Ha véget
End Sub

Nem azt mondom, hogy ez a helyes módszer, de az én tesztverziómon működött. Excel 2013-at használok
A weboldal moderátora ezt a megjegyzést minimalizálta
Csak próbáltam. És működött!! Köszönöm.
A weboldal moderátora ezt a megjegyzést minimalizálta
Szia, segítség, nem működik, be tudod illeszteni ide az összes kódot 2 oszlophoz?
A weboldal moderátora ezt a megjegyzést minimalizálta
Tony: Helyes, de a következő lépés az, hogy ne ösztönözze: a) a DRY elv megsértését (és ezáltal megnövekedett: a.1) a hibák esélyét és a javításukra fordított költségeket, valamint a.2) a lehetséges jövőbeni változtatások/fejlesztések költségeit) nem ösztönzi a "Másolás-Beillesztés" programozást azzal, hogy megmutatja, hogyan lehet "újrafaktorálni" a duplikált kódok csökkentése érdekében, és b) keményen kódolt literális ("varázslatos" "szám" / "karakterlánc") konstansok névvel ellátott konstansok deklarálásával és használatával, amelyek sokkal nehezebb félregépelni anélkül, hogy fordítói hibát okozna. A két másolás-beillesztett kódblokk között csak a #s oszlopok és a tartománynevek különböznek, tehát amennyire csak lehetséges, minden más ne duplikálódjon, ezért a kódnak pl.

' -- MEGJEGYZÉS: Az "EmptyString" deklarálása a globális deklarációs modulban.
Public Const EmptyString mint karakterlánc = ""

' -- Oszlopok. MEGJEGYZÉS: A gyakorlatban például a "Col5Header" pl. "ProductID" lenne, a "Col9Header" pedig pl.: "SalesID".
Privát Const Col5HeaderColumnNumber As Integer = 5
Privát Const Col9HeaderColumnNumber As Integer = 9

' -- Az oszlopok legördülő listáinak tartománynevei
Private Const Col5HeaderDropDownRangeName as String = "col5HeaderDropDownRangeName"
Private Const Col9HeaderDropDownRangeName as String = "col9HeaderDropDownRangeName"

Almunkalap_Változás _
(_
ByVal Target As Range _
)

' -- BEGIN Az alkalmazandó =oszlopokhoz húzza be az azonosítót a legördülő listákból kiválasztott leíráshoz.
Dim dropDownListRangeName karakterláncként
dropDownListRangeName = EmptyString
Válassza a Case Target.Column lehetőséget
Case Col5HeaderColumnNumber
dropDownListRangeName = Col5HeaderDropDownRangeName
Case Col9HeaderColumnNumber
dropDownListRangeName = Col9HeaderDropDownRangeName
Végkiválasztás ' -- Case Target.Column
If (dropDownListRangeName <> EmptyString) Akkor
Dim selectedId karakterláncként
selectId = Application.VLookup(selectedNa, ActiveSheet.Range(dropDownListRangeName), 2, False)
Ha nem IsError(selectedId) Akkor
Target.Value = kiválasztottId
Vége, ha ' -- Not IsError(selectedId)
End If ' -- (legördülő listaTartománynév <> EmptyString)
-- VÉGE Az alkalmazandó =oszlopokhoz húzza be az azonosítót a legördülő listákból kiválasztott leíráshoz.

End Sub
A weboldal moderátora ezt a megjegyzést minimalizálta
Semmi sem frusztrálóbb, mint beírni egy részletes kérdést, hogy elsodorja. Ha rossz 6 számjegyű kódot ír be az ember igazolásához, az eltünteti a kiküldött üzenetet. Lehet, hogy meg akarja javítani. Most a megjegyzésem a következő: Pontosan ugyanazt próbáltam megcsinálni, amit a videóban és az írásos utasításokban mutattál, és csak annyit kapok, hogy amikor kiválasztok egy nevet a listából, az a név és nem a szám. Továbbá, hogyan működik ez, mivel az adatellenőrzésnek csak a listán szereplőkre kell korlátoznia a választási lehetőségeket. Hogyan csapja be ez a rendszert? Korábban mindig vba kódot kellett hozzárendelnem egy gombhoz vagy egy parancsikonhoz, hogyan aktiválódik ez a kód? Hogyan teszteli, hogy megbizonyosodjon arról, hogy működik?
A weboldal moderátora ezt a megjegyzést minimalizálta
Hogyan működik a képlet, ha az adatokat egy külön lapon szeretné felvenni a munkafüzetbe? El akarom rejteni az adatokat.
A weboldal moderátora ezt a megjegyzést minimalizálta
Válts itt tesó!
selectedNum = Application.VLookup(selectedNa, Worksheets("YourSheetName").Tartomány("legördülő lista"), 2, False)
A weboldal moderátora ezt a megjegyzést minimalizálta
A "YourSheetName" az adattartományt tartalmazó lapra hivatkozik, vagy arra a lapra, ahol a legördülő listát szeretném használni?
A weboldal moderátora ezt a megjegyzést minimalizálta
Hogyan működik a képlet, ha a munkafüzetben egy külön lapon/fülön szeretné felsorolni az adatokat?
A weboldal moderátora ezt a megjegyzést minimalizálta
ez nem működik az excel- outdated jelenlegi verzióiban. Az adatellenőrzés, majd a lista már nem jelenik meg a vba-ban, mivel egy excel objektum már többször próbálkozott, és nem jelenik meg.
A weboldal moderátora ezt a megjegyzést minimalizálta
Ebben a példában mi van akkor, ha azt szeretné, hogy az 5-ös cellák mindegyikében egy értéket nézzen meg, de a szomszédos cellába helyezze az értéket a 6-ba
A weboldal moderátora ezt a megjegyzést minimalizálta
Hogyan kellene módosítani a kódot, ha hivatkozást/hivatkozást szeretnék létrehozni az E1-ben a legördülő lista forrásához a kiválasztott érték alapján?
Az előny az lenne, hogy a legördülő forrás megváltoztatása esetén (pl. "Henrik" => "Hendrik") a változás automatikusan tükröződne az E1-ben.
A weboldal moderátora ezt a megjegyzést minimalizálta
Tudja valaki, hogyan lehet ezt működésre bírni a google táblázatokban?
A weboldal moderátora ezt a megjegyzést minimalizálta
Több lehetőséget szeretnék kiválasztani a legördülő listából.
ilyen eredmény: AA1001,BB1002
lehetséges?
A weboldal moderátora ezt a megjegyzést minimalizálta
Találtál megoldást?
A weboldal moderátora ezt a megjegyzést minimalizálta
Si los datos de la lista están en otra hoja, cuál sería el código? Gracias.
A weboldal moderátora ezt a megjegyzést minimalizálta
cómo buscar un valor hacia la izquierda
A weboldal moderátora ezt a megjegyzést minimalizálta
Private Sub Worksheet_Change (ByVal Target mint Range)
selectNa = Cél.Érték
Ha Target.Column = 5 Akkor

Sheets ("Nombre de la hoja en donde esta la lista"). Aktiválja
selectedNum = Application.VLookup (selectedNa, ActiveSheet.Range ("legördülő menü"), 2, hamis)
Sheets ("Nombre de la hoja en donde estas trabajando"). Aktiválás
Ha nem IsError(selectedNum) Akkor
Target.Value = kiválasztottNum
Ha véget
Ha véget
End Sub
A weboldal moderátora ezt a megjegyzést minimalizálta
Valaki tudja, hogyan kell keresni az értékben jobbról balra
A weboldal moderátora ezt a megjegyzést minimalizálta
Ugyanazt a legördülő listát több oszlopban kell használnom, mi lenne a kód?
A weboldal moderátora ezt a megjegyzést minimalizálta
Hi!
Ez nagyon hasznos! Köszönöm!
Olyan helyzetben futok, amikor a cella nem frissül automatikusan, vagy amikor a frissítési funkciót használom. Be kell kattintanom egy másik cellába, majd vissza kell kattintanom a működő cellára, hogy megjelenítse az értéket.
Jelenleg az Office Standard 2019-ben dolgozom. Tudja valaki, hogy ez a probléma az általam használt Excel-verzióhoz kapcsolódik-e?
A weboldal moderátora ezt a megjegyzést minimalizálta
Szia,
A kód jól működött, ha ugyanazon a lapon definiáljuk a listát és létrehozzuk a legördülő listát.
De hogyan érhetjük el, hogy az egyik lapon definiáljuk az értékek és kódok listáját, egy másik lapon pedig a legördülő listát?
Ugyanez a kód nem működik, mivel megjelenik, és hiba van ebben a sorban ("selectedNum = Application.VLookup(selectedNa, ActiveSheet.Range("dropdown"), 2, False)").
Ezenkívül van egy olyan követelményem, mint például, ha több listát definiálok egy lapon azonosítókkal és nevekkel, és több legördülő menüvel egy másik lapon, ahol az egyik legördülő érték a másik legördülő menüben kiválasztott értéktől függ.

Remélem megértetted a kérdésem.

Segítsen nekem a probléma megoldásában.
A weboldal moderátora ezt a megjegyzést minimalizálta
Ez nagyon sokat segített, köszönöm. Mivel a táblázatom más lapon volt, mint a listamezőm, hozzáadtam néhány sor kódot, hogy ezt megvalósítsam, és hogy a képernyő ne villogjon.

Application.ScreenUpdating = Hamis
Sheets("SheetWithTableOnIt"). Aktiválja

Sheets("SheetWithDropDownListOnIt"). Aktiválja
Application.ScreenUpdating = Igaz
A weboldal moderátora ezt a megjegyzést minimalizálta
pontosan hova adtad ezeket a kódokat?
A weboldal moderátora ezt a megjegyzést minimalizálta
Fordítási hibaüzenetet kapok: Szintaktikai hiba az "If Trarget.Column = 6 Then" sorban, amikor megpróbálom használni a kódot? Valami ötlet, hogy miért?
A weboldal moderátora ezt a megjegyzést minimalizálta
Működik, de ha kilép egy fájlból és újra megnyit, nem működik... nem lehet .xls-ként csak .xlsm-ként menteni van erre valami megoldás? Kösz
A weboldal moderátora ezt a megjegyzést minimalizálta
Helló, Marko! A kód munkafüzetébe másolása és beillesztése után mentse el a fájlt Excel Macro-Enabled Workbook formátumban, próbálja meg, köszönöm!
Még senki sem írt megjegyzést
Több ingatlan
Hagyja meg észrevételeit
Feladás vendégként
×
Értékeld ezt a bejegyzést:
0   Karakterek
Javasolt helyek

Kövess minket

Copyright © 2009 - www.extendoffice.com. | Minden jog fenntartva. Powered by ExtendOffice. | Oldaltérkép
A Microsoft és az Office logó a Microsoft Corporation védjegyei vagy bejegyzett védjegyei az Egyesült Államokban és / vagy más országokban.
Sectigo SSL védi