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

 Hvordan oprettes rullelisten, men viser forskellige værdier i Excel?

I Excel-regneark kan vi hurtigt oprette en rulleliste med datavalideringsfunktionen, men har du nogensinde prøvet at vise en anden værdi, når du klikker på rullelisten? For eksempel har jeg følgende to kolonnedata i kolonne A og kolonne B, nu skal jeg oprette en rulleliste med værdierne i kolonnen Navn, men når jeg vælger navnet fra den oprettede rulleliste, er den tilsvarende værdi i kolonnen Antal vises som følgende skærmbillede vist. Denne artikel introducerer detaljerne til løsning af denne opgave.

doc dropdown forskellige værdier 1

Opret rulleliste, men vis anden værdi i rullelistecelle


Opret rulleliste, men vis anden værdi i rullelistecelle

For at afslutte denne opgave skal du gøre følgende trin for trin:

1. Opret et intervalnavn for de celleværdier, du vil bruge i rullelisten, i dette eksempel vil jeg indtaste rullemenuen i Navn Box, og tryk derefter på Indtast nøgle, se skærmbillede:

doc dropdown forskellige værdier 2

2. Vælg derefter celler, hvor du vil indsætte rullelisten, og klik på data > Datavalidering > Datavalidering, se skærmbillede:

doc dropdown forskellige værdier 3

3. I Datavalidering under dialogboksen Indstillinger fanebladet, vælg Liste fra Tillad drop down, og klik derefter på doc dropdown forskellige værdier 5 for at vælge den navneliste, som du vil bruge som rullemenuer i Kilde tekstboks. Se skærmbillede:

doc dropdown forskellige værdier 4

4. Når du har indsat rullelisten, skal du højreklikke på den aktive arkfane og vælge Vis kode fra genvejsmenuen og i det åbnede Microsoft Visual Basic til applikationer vindue, kopier og indsæt følgende kode i det tomme modul:

VBA-kode: Vis en anden værdi fra rullelisten:

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 forskellige værdier 6

Bemærk: I ovenstående kode, nummeret 5 inden for Hvis Target.Column = 5 Så script er det søjlenummer, som din rulleliste har fundet,, "dropdown" heri selectedNum = Application.VLookup (valgtNa, ActiveSheet.Range ("dropdown"), 2, Falsk) kode er det rækkevidde, du har oprettet i trin 1. Du kan ændre dem til dine behov.

5. Gem derefter og luk denne kode, nu når du vælger et element fra rullelisten, vises en relativ anden værdi i samme celle, se skærmbillede:

doc dropdown forskellige værdier 7


Demo: Opret rulleliste, men vis forskellige værdier i Excel

Kutools til Excel: med mere end 300 praktiske Excel-tilføjelsesprogrammer, gratis at prøve uden begrænsning på 30 dage. Download og gratis prøveversion nu!

 


De bedste Office-produktivitetsværktøjer

Kutools til Excel løser de fleste af dine problemer og øger din produktivitet med 80%

  • Genbruge: Indsæt hurtigt komplekse formler, diagrammer og alt, hvad du har brugt før; Krypter celler med adgangskode Opret postliste og send e-mails ...
  • Super formel bar (let redigere flere linjer med tekst og formel); Læsning Layout (let at læse og redigere et stort antal celler); Indsæt til filtreret rækkevidde...
  • Flet celler / rækker / kolonner uden at miste data; Split celler indhold; Kombiner duplikerede rækker / kolonner... Forhindre duplikerede celler; Sammenlign områder...
  • Vælg Duplicate eller Unique Rækker; Vælg tomme rækker (alle celler er tomme); Super Find og Fuzzy Find i mange arbejdsbøger; Tilfældig valg ...
  • Præcis kopi Flere celler uden at ændre formelreference; Auto Opret referencer til flere ark; Indsæt kugler, Afkrydsningsfelter og mere ...
  • Uddrag tekst, Tilføj tekst, Fjern efter position, Fjern mellemrum; Opret og udskriv personsøgningssubtotaler; Konverter mellem celler indhold og kommentarer...
  • Superfilter (gem og anvend filterskemaer på andre ark); Avanceret sortering efter måned / uge / dag, hyppighed og mere; Specielt filter af fed, kursiv ...
  • Kombiner arbejdsbøger og arbejdsark; Fletabeller baseret på nøglekolonner; Opdel data i flere ark; Batch Konverter xls, xlsx og PDF...
  • Mere end 300 kraftfulde funktioner. Understøtter Office / Excel 2007-2021 og 365. Understøtter alle sprog. Nem implementering i din virksomhed eller organisation. Fuld funktioner 30-dages gratis prøveperiode. 60 dages pengene tilbage garanti.
kte-fane 201905

Fanen Office bringer en grænseflade til et kontor med Office, og gør dit arbejde meget lettere

  • Aktiver redigering og læsning af faner i Word, Excel, PowerPoint, Publisher, Access, Visio og Project.
  • Åbn og opret flere dokumenter i nye faner i det samme vindue snarere end i nye vinduer.
  • Øger din produktivitet med 50 % og reducerer hundredvis af museklik for dig hver dag!
officetab bund

 

Sorter kommentarer efter
Kommentarer (42)
Ingen vurderinger endnu. Vær den første til at bedømme!
Denne kommentar blev minimeret af moderatoren på webstedet
Kan dette gøres på forskellige ark? Jeg mener, på ark1 rullemenuen og på ark2 rækkevidden. Hvordan skal jeg kode dette? Tak på forhånd. Tina.
Denne kommentar blev minimeret af moderatoren på webstedet
Hvad hvis jeg vil gøre mere end én dropdown, der returnerer forskellige værdier på det samme regneark? Kan du vise mig et eksempel på kodning for to eller flere?
Denne kommentar blev minimeret af moderatoren på webstedet
Lee Ann

Hvis du bare kopierer og indsætter koden fra If til EndIf og ændrer kolonne # og tabel, burde det virke:


Sub Worksheet_Change(ByVal Target As Range)
valgtNa = Målværdi
Hvis Target.Column = 5 Så
selectedNum = Application.VLookup (valgtNa, ActiveSheet.Range ("dropdown"), 2, Falsk)
Hvis Ikke ErError(selectedNum) Så
Target.Value = valgtNum
End If
End If
Hvis Target.Column = 9 Så
selectedNum = Application.VLookup(selectedNa, ActiveSheet.Range("dropdown1"), 2, False)
Hvis Ikke ErError(selectedNum) Så
Target.Value = valgtNum
End If
End If
End Sub

Jeg siger ikke, at dette er den rigtige måde, men det virkede på min testversion. Jeg bruger Excel 2013
Denne kommentar blev minimeret af moderatoren på webstedet
Har lige prøvet det. Og det virkede!! Tak skal du have.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej, hjælp, det virker ikke, kan du indsætte al kode til 2 kolonner her?
Denne kommentar blev minimeret af moderatoren på webstedet
Tony: Korrekt, men næste skridt er at undgå at opmuntre til: a) krænkelser af DRY-princippet (og dermed øget: a.1) chancer for fejl og omkostninger til at rette dem og a.2) omkostninger ved potentielle fremtidige ændringer/forbedringer) af ikke tilskynde til "Copy-Paste"-programmering ved at vise, hvordan det kan "refaktoriseres" for at reducere duplikatkode, og b) hårdkodede bogstavelige ("magiske" "tal" / "streng") konstanter ved at erklære og bruge navngivne konstanter, der er meget sværere at skrive forkert uden at udløse en compilerfejl. De eneste ting, der er forskellige mellem de to kopi-indsatte kodeblokke er kolonnen #s og områdenavnene, så så meget som muligt bør alt andet ikke duplikeres, så i stedet skal koden f.eks. være:

' -- BEMÆRK: Erklær "EmptyString" i et globalt deklarationsmodul.
Public Const EmptyString as String = ""

' -- Kolonne #s. BEMÆRK: I praksis vil "Col5Header" f.eks. være "ProductID", og "Col9Header" vil f.eks. være "SalesID".
Private Const Col5HeaderColumnNumber Som heltal = 5
Private Const Col9HeaderColumnNumber Som heltal = 9

' -- Kolonnes rullelistes områdenavne
Private Const Col5HeaderDropDownRangeName as String = "col5HeaderDropDownRangeName"
Private Const Col9HeaderDropDownRangeName as String = "col9HeaderDropDownRangeName"

Underregneark_Ændring _
( _
ByVal-mål som interval _
)

' -- BEGIN For relevante =kolonner skal du trække ID for beskrivelse valgt fra rullelisten.
Dæmp dropDownListRangeName som streng
dropDownListRangeName = EmptyString
Vælg Case Target.Column
Sag Col5HeaderColumnNumber
dropDownListRangeName = Col5HeaderDropDownRangeName
Sag Col9HeaderColumnNumber
dropDownListRangeName = Col9HeaderDropDownRangeName
Afslut Vælg ' -- Sagsmål. Kolonne
If (dropDownListRangeName <> EmptyString) Then
Dæmp valgt id som streng
selectId = Application.VLookup(selectedNa, ActiveSheet.Range(dropDownListRangeName), 2, False)
Hvis Ikke ErError(selectedId) Så
Target.Value = valgtId
End If ' -- Not IsError(selectedId)
End If ' -- (dropDownListRangeName <> EmptyString)
-- SLUT For relevante =kolonner skal du trække ID for beskrivelse valgt fra rullelisten.

End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Der er ikke noget mere frustrerende end at skrive et detaljeret spørgsmål blot for at få det blæst væk. Hvis du indtaster den forkerte 6-cifrede kode for at bekræfte dit menneske, sletter det den postede besked. Vil måske rette op på det. Nu er min kommentar denne: Jeg forsøgte at gøre præcis det samme, som du viste i videoen og de skriftlige instruktioner, og alt, hvad jeg får, er, når jeg vælger et navn på listen, er navnet og ikke nummeret. Også, hvordan fungerer dette overhovedet, da datavalidering kun bør begrænse valgene til det, der er på listen. Hvordan snyder dette systemet? Tidligere har jeg altid skullet tildele vba-kode til knap eller en genvej, hvordan aktiveres denne kode? Hvordan tester du for at sikre, at det virker?
Denne kommentar blev minimeret af moderatoren på webstedet
Hvordan fungerer formlen, når du vil tilføje data på et separat ark i projektmappen? Jeg vil skjule dataene.
Denne kommentar blev minimeret af moderatoren på webstedet
Skift her bro!
selectedNum = Application.VLookup(selectedNa, Worksheets("YourSheetName").Range("dropdown"), 2, False)
Denne kommentar blev minimeret af moderatoren på webstedet
"YourSheetName" henviser til det ark, der indeholder dataområdet eller det ark, hvor jeg vil bruge dropdwon-listen?
Denne kommentar blev minimeret af moderatoren på webstedet
Hvordan fungerer formlen, når du vil angive dataene på et separat ark/faneblad i projektmappen?
Denne kommentar blev minimeret af moderatoren på webstedet
dette virker ikke i nuværende versioner af excel-forældet. Datavalidering så vises listen ikke længere i vba, da et excel-objekt allerede har prøvet flere gange, og det dukker ikke op.
Denne kommentar blev minimeret af moderatoren på webstedet
I dette eksempel, hvad nu hvis du vil have det til at se på en værdi i hver af cellerne i 5, men sætte værdien i den tilstødende celle i 6
Denne kommentar blev minimeret af moderatoren på webstedet
Hvordan skal koden ændres, hvis jeg vil oprette en reference/link i E1 til kilden til rullelisten baseret på den valgte værdi?
Fordelen ville være, at i tilfælde af en ændring i dropdown-kilden (f.eks. "Henrik" => "Hendrik" vil ændringen automatisk blive afspejlet i E1.
Denne kommentar blev minimeret af moderatoren på webstedet
Nogen der ved hvordan man får det til at virke i google sheets?
Denne kommentar blev minimeret af moderatoren på webstedet
Jeg vil vælge flere muligheder fra rullelisten.
resultat som dette: AA1001,BB1002
er det muligt?
Denne kommentar blev minimeret af moderatoren på webstedet
Har du fundet en løsning?
Denne kommentar blev minimeret af moderatoren på webstedet
Hvor er listen over andre data, hvad er det? Tak.
Denne kommentar blev minimeret af moderatoren på webstedet
como buscar un valor hacia la izquierda
Denne kommentar blev minimeret af moderatoren på webstedet
Privat Sub Worksheet_Change (ByVal Target As Range)
valgtNa = Målværdi
Hvis Target.Column = 5 Så

Sheets("Nombre de la hoja en donde esta la list").Aktivér
selectedNum = Application.VLookup (valgtNa, ActiveSheet.Range ("dropdown"), 2, Falsk)
Sheets("Nombre de la hoja en donde estas trabajando").Aktivér
Hvis Ikke ErError(selectedNum) Så
Target.Value = valgtNum
End If
End If
End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Nogen ved, hvordan man søger efter værdien fra højre mod venstre
Denne kommentar blev minimeret af moderatoren på webstedet
Jeg skal bruge den samme dropdown i mere end én kolonne, hvad ville koden være?
Denne kommentar blev minimeret af moderatoren på webstedet
Hej!
Dette er virkelig nyttigt! Tak skal du have!
Jeg kører i den situation, hvor cellen ikke opdateres automatisk, eller når jeg bruger opdateringsfunktionen. Jeg skal klikke i en anden celle og derefter klikke tilbage på cellen i arbejde for at få den til at vise værdien.
Jeg arbejder i øjeblikket med i Office Standard 2019. Er der nogen, der ved, om dette problem er relateret til den version på excel, jeg bruger?
Denne kommentar blev minimeret af moderatoren på webstedet
Hej,
Koden fungerede fint, hvis vi definerer listen og opretter rullemenuen i det samme ark.
Men hvordan kan vi opnå at definere listen over værdier og koder i ét ark og rullemenuen oprettet i et andet ark?
Den samme kode virker ikke, da den vises og fejler i denne linje ("selectedNum = Application.VLookup(selectedNa, ActiveSheet.Range("dropdown"), 2, False)").
Jeg har også et krav som, hvis jeg har flere lister defineret i et ark med ID og navne og flere drop-downs i et andet ark, hvor en drop-down værdi er afhængig af valgt værdi i en anden drop-down.

Håber du forstod min forespørgsel.

Hjælp mig venligst med at løse dette problem.
Denne kommentar blev minimeret af moderatoren på webstedet
Dette hjalp mig utrolig meget, tak. Da mit bord var på et andet ark end min listeboks, tilføjede jeg et par linjer kode for at opnå det og også for at forhindre skærmen i at blinke.

Application.ScreenUpdating = False
Sheets("SheetWithTableOnIt").Aktivér

Sheets("SheetWithDropDownListOnIt").Aktivér
Application.ScreenUpdating = True
Denne kommentar blev minimeret af moderatoren på webstedet
hvor præcist tilføjede du disse koder?
Denne kommentar blev minimeret af moderatoren på webstedet
Jeg får en kompileringsfejl: Syntaksfejl på linjen "If Trarget.Column = 6 Then", når jeg forsøger at bruge koden? Nogen idé om hvorfor?
Denne kommentar blev minimeret af moderatoren på webstedet
Det virker, men når du afslutter en fil og åbner igen, virker den ikke...den kan ikke gemmes som .xls kun som .xlsm er der nogen løsning på det? Tak
Denne kommentar blev minimeret af moderatoren på webstedet
Hej, Marko, Efter at have kopieret og indsat koden i din projektmappe, når du gemmer filen, skal du gemme den som et Excel Macro-Enabled Workbook-format, prøv venligst, tak!
Der er endnu ingen kommentarer her
Load More
Efterlad dine kommentarer
Sender som gæst
×
Bedøm dette indlæg:
0   Tegn
Foreslåede steder

Følg os

Copyright © 2009 - www.extendoffice.com. | Alle rettigheder forbeholdes. Drevet af ExtendOffice. | | Sitemap
Microsoft og Office-logoet er varemærker eller registrerede varemærker tilhørende Microsoft Corporation i USA og / eller andre lande.
Beskyttet af Sectigo SSL