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

 Hur skapar man rullgardinsmeny men visar olika värden i Excel?

I Excel-kalkylblad kan vi snabbt skapa en rullgardinslista med funktionen Data Validation, men har du någonsin försökt visa ett annat värde när du klickar på rullgardinsmenyn? Till exempel har jag följande två kolumndata i kolumn A och kolumn B, nu måste jag skapa en rullgardinsmeny med värdena i kolumnen Namn, men när jag väljer namnet från den skapade rullgardinslistan, motsvarar värdet i kolumnen Antal visas som följande skärmdump visas. Denna artikel kommer att presentera detaljerna för att lösa denna uppgift.

listrutor för doc olika värden 1

Skapa rullgardinsmeny men visa annat värde i rullgardinsmenyn


Skapa rullgardinsmeny men visa annat värde i rullgardinsmenyn

För att slutföra denna uppgift, gör följande steg för steg:

1. Skapa ett intervallnamn för de cellvärden som du vill använda i listrutan, i det här exemplet kommer jag att ange rullgardinsmenyn i Namn Box, och tryck sedan på ange nyckel, se skärmdump:

listrutor för doc olika värden 2

2. Välj sedan celler där du vill infoga listrutan och klicka Data > Datagransknings > Datagransknings, se skärmdump:

listrutor för doc olika värden 3

3. I Datagransknings under dialogrutan Inställningar fliken, välj Lista från Tillåt och klicka sedan på listrutor för doc olika värden 5 för att välja namnlistan som du vill använda som rullgardinsvärden i källa textruta. Se skärmdump:

listrutor för doc olika värden 4

4. När du har infogat rullgardinsmenyn, vänligen högerklicka på fliken aktivt ark och välj Visa kod från snabbmenyn och i den öppnade Microsoft Visual Basic för applikationer fönster, kopiera och klistra in följande kod i den tomma modulen:

VBA-kod: Visa annat värde från listrutan:

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

listrutor för doc olika värden 6

Anmärkningar: I ovanstående kod, numret 5 inom Om Target.Column = 5 Då skriptet är det kolumnummer som din rullgardinsmeny hittade,, "falla ner" i denna selectedNum = Application.VLookup (selectedNa, ActiveSheet.Range ("dropdown"), 2, False) kod är det intervallnamn du skapade i steg 1. Du kan ändra dem efter behov.

5. Spara och stäng sedan den här koden, när du väljer ett objekt i listrutan visas ett relativt annat värde i samma cell, se skärmdump:

listrutor för doc olika värden 7


Demo: Skapa rullgardinsmeny men visa olika värden i Excel

Kutools för Excel: med mer än 300 praktiska Excel-tillägg, gratis att prova utan begränsning på 30 dagar. Ladda ner och testa gratis nu!

 


De bästa Office-produktivitetsverktygen

Kutools för Excel löser de flesta av dina problem och ökar din produktivitet med 80%

  • återanvändning: Sätt snabbt i komplexa formler, diagram och allt som du har använt tidigare; Kryptera celler med lösenord; Skapa e-postlista och skicka e-post ...
  • Super Formula Bar (enkelt redigera flera rader med text och formel); Läslayout (enkelt läsa och redigera ett stort antal celler); Klistra in i filtrerat intervall...
  • Sammanfoga celler / rader / kolumner utan att förlora data; Delat cellinnehåll; Kombinera duplicerade rader / kolumner... Förhindra duplicerade celler; Jämför intervall...
  • Välj Duplicera eller Unikt Rader; Välj tomma rader (alla celler är tomma); Super Find och Fuzzy Find i många arbetsböcker; Slumpmässigt val ...
  • Exakt kopia Flera celler utan att ändra formelreferens; Skapa referenser automatiskt till flera ark; Sätt in kulor, Kryssrutor och mer ...
  • Extrahera text, Lägg till text, ta bort efter position, Ta bort mellanslag; Skapa och skriva ut personsökningstalsatser; Konvertera mellan celler innehåll och kommentarer...
  • Superfilter (spara och tillämpa filterscheman på andra ark); Avancerad sortering efter månad / vecka / dag, frekvens och mer; Specialfilter av fet, kursiv ...
  • Kombinera arbetsböcker och arbetsblad; Sammanfoga tabeller baserat på nyckelkolumner; Dela data i flera ark; Batchkonvertera xls, xlsx och PDF...
  • Mer än 300 kraftfulla funktioner. Stöder Office / Excel 2007-2021 och 365. Stöder alla språk. Enkel implementering i ditt företag eller organisation. Fullständiga funktioner 30 dagars gratis provperiod. 60 dagars pengarna tillbaka-garanti.
kte-flik 201905

Fliken Office ger ett flikgränssnitt till Office och gör ditt arbete mycket enklare

  • Aktivera flikredigering och läsning i Word, Excel, PowerPoint, Publisher, Access, Visio och Project.
  • Öppna och skapa flera dokument i nya flikar i samma fönster, snarare än i nya fönster.
  • Ökar din produktivitet med 50 % och minskar hundratals musklick för dig varje dag!
officetab botten

 

Sortera kommentarer efter
Kommentarer (42)
Inga betyg än. Bli först med att betygsätta!
Denna kommentar minimerades av moderatoren på webbplatsen
Kan detta göras på olika ark? Jag menar, på ark1 rullgardinsmenyn och på ark2 intervallet. Hur måste jag koda detta? Tack på förhand. Tina.
Denna kommentar minimerades av moderatoren på webbplatsen
Vad händer om jag vill göra mer än en rullgardinsmeny som returnerar olika värden på samma kalkylblad? Kan du visa mig ett exempel på kodning för två eller fler?
Denna kommentar minimerades av moderatoren på webbplatsen
lee ann

Om du bara kopierar och klistrar in koden från If till EndIf och ändrar kolumnen # och Tabell bör det fungera:


Sub Worksheet_Change(ByVal Target As Range)
valdNa = Målvärde
Om Target.Column = 5 Då
selectedNum = Application.VLookup (selectedNa, ActiveSheet.Range ("dropdown"), 2, False)
Om inte IsError(selectedNum) Då
Target.Value = valtNum
End If
End If
Om Target.Column = 9 Då
selectedNum = Application.VLookup(selectedNa, ActiveSheet.Range("dropdown1"), 2, False)
Om inte IsError(selectedNum) Då
Target.Value = valtNum
End If
End If
End Sub

Jag säger inte att detta är rätt sätt men det fungerade på min testversion. Jag använder Excel 2013
Denna kommentar minimerades av moderatoren på webbplatsen
Testade det precis. Och det funkade!! Tack.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, hjälp, det fungerar inte, kan du klistra in all kod för 2 kolumner här?
Denna kommentar minimerades av moderatoren på webbplatsen
Tony: Rätt, men nästa steg är att undvika att uppmuntra: a) kränkningar av DRY-principen (och därmed ökade: a.1) risken för fel och kostnader för att åtgärda dem och a.2) kostnaderna för potentiella framtida ändringar/förbättringar) av inte uppmuntra "Copy-Paste"-programmering genom att visa hur det kan "refaktoreras" för att minska dubblettkod, och b) hårdkodade bokstavliga ("magiska" "nummer" / "sträng") konstanter genom att deklarera och använda namngivna konstanter som är mycket svårare att skriva fel utan att utlösa ett kompilatorfel. Det enda som skiljer sig mellan de två kopieringsklistrade kodblocken är kolumnen #s och intervallnamnen, så så mycket som möjligt ska allt annat inte dupliceras, så istället ska koden t.ex. vara:

' -- OBS: Deklarera "EmptyString" i en global deklarationsmodul.
Public Const EmptyString as String = ""

' -- Kolumn #s. OBS: I praktiken skulle t.ex. "Col5Header" vara t.ex. "ProductID" och "Col9Header" skulle vara t.ex. "SalesID".
Private Const Col5HeaderColumnNumber Som heltal = 5
Private Const Col9HeaderColumnNumber Som heltal = 9

' -- Kolumnernas rullgardinslistor intervallnamn
Private Const Col5HeaderDropDownRangeName as String = "col5HeaderDropDownRangeName"
Private Const Col9HeaderDropDownRangeName as String = "col9HeaderDropDownRangeName"

Underarbetsblad_Ändra _
( _
ByVal Target As Range _
)

' -- BEGIN För tillämpliga =kolumner, dra in ID för beskrivning vald från rullgardinslistor.
Dimma dropDownListRangeName som sträng
dropDownListRangeName = EmptyString
Välj Case Target.Column
Fall Col5HeaderColumnNumber
dropDownListRangeName = Col5HeaderDropDownRangeName
Fall Col9HeaderColumnNumber
dropDownListRangeName = Col9HeaderDropDownRangeName
Avsluta Välj ' -- Case Target.Column
If (dropDownListRangeName <> EmptyString) Then
Dimma valt ID som sträng
selectId = Application.VLookup(selectedNa, ActiveSheet.Range(dropDownListRangeName), 2, False)
Om inte IsError(selectedId) Då
Target.Value = valt ID
End If ' -- Not IsError(selectedId)
End If ' -- (dropDownListRangeName <> EmptyString)
-- END För tillämpliga =kolumner, dra in ID för beskrivning vald från rullgardinslistor.

End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Inget mer frustrerande än att skriva in en detaljerad fråga bara för att få den bortblåst. Om du skriver fel 6-siffrig kod för att verifiera din människa, raderas det upplagda meddelandet. Kanske vill fixa det. Nu är min kommentar denna: Jag försökte göra exakt samma sak som du visade i videon och de skriftliga instruktionerna och allt jag får är när jag väljer ett namn i listan är namnet och inte numret. Dessutom, hur fungerar detta ens eftersom datavalidering bör begränsa valen till bara det som finns i listan. Hur lurar detta systemet? Tidigare har jag alltid behövt tilldela vba-kod till knapp eller en genväg, hur aktiveras denna kod? Hur testar man för att se till att det fungerar?
Denna kommentar minimerades av moderatoren på webbplatsen
Hur fungerar formeln när du vill lägga till data på ett separat ark i arbetsboken? Jag vill dölja datan.
Denna kommentar minimerades av moderatoren på webbplatsen
Byt här brorsan!
selectedNum = Application.VLookup(selectedNa, Worksheets("YourSheetName").Range("dropdown"), 2, False)
Denna kommentar minimerades av moderatoren på webbplatsen
"YourSheetName" hänvisar till arket som innehåller dataintervallet eller arket där jag vill använda dropdwon-listan?
Denna kommentar minimerades av moderatoren på webbplatsen
Hur fungerar formeln när du vill lista data på ett separat blad/flik i arbetsboken?
Denna kommentar minimerades av moderatoren på webbplatsen
detta fungerar inte i nuvarande versioner av excel-föråldrade. Datavalidering visas inte längre i vba eftersom ett excel-objekt redan har försökt flera gånger och det dyker inte upp.
Denna kommentar minimerades av moderatoren på webbplatsen
I det här exemplet, tänk om du vill att den ska titta på ett värde i var och en av cellerna i 5, men sätta värdet i den intilliggande cellen i 6
Denna kommentar minimerades av moderatoren på webbplatsen
Hur skulle koden behöva ändras om jag ville skapa en referens/länk i E1 till källan till rullgardinslistan baserat på det valda värdet?
Fördelen skulle vara att i händelse av en ändring i dropdown-källan (t.ex. "Henrik" => "Hendrik" skulle ändringen automatiskt återspeglas i E1.
Denna kommentar minimerades av moderatoren på webbplatsen
Någon som vet hur man får detta att fungera i google sheets?
Denna kommentar minimerades av moderatoren på webbplatsen
Jag vill välja flera alternativ från rullgardinsmenyn.
resultat så här: AA1001,BB1002
är det möjligt?
Denna kommentar minimerades av moderatoren på webbplatsen
Hittade du en lösning?
Denna kommentar minimerades av moderatoren på webbplatsen
Finns det en otra hoja, cuál sería el código? Tack.
Denna kommentar minimerades av moderatoren på webbplatsen
cómo buscar un valor hacia la izquierda
Denna kommentar minimerades av moderatoren på webbplatsen
Privata delarkivsförändring (ByVal-mål som område)
valdNa = Målvärde
Om Target.Column = 5 Då

Sheets("Nombre de la hoja en donde esta la lista").Aktivera
selectedNum = Application.VLookup (selectedNa, ActiveSheet.Range ("dropdown"), 2, False)
Sheets("Nombre de la hoja en donde estas trabajando").Aktivera
Om inte IsError(selectedNum) Då
Target.Value = valtNum
End If
End If
End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Någon vet hur man söker efter värdet från höger till vänster
Denna kommentar minimerades av moderatoren på webbplatsen
Jag måste använda samma rullgardinsmeny i mer än en kolumn, vad skulle koden vara?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej!
Det här är verkligen användbart! Tack!
Jag kör i situationen där cellen inte uppdateras automatiskt eller när jag använder uppdateringsfunktionen. Jag måste klicka i en annan cell och sedan klicka tillbaka på cellen i arbete för att få den att visa värdet.
Jag arbetar för närvarande med i Office Standard 2019. Är det någon som vet om det här problemet är relaterat till den version på excel jag använder?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej,
Koden fungerade bra om vi definierar listan och skapar rullgardinsmenyn i samma ark.
Men hur kan vi uppnå att definiera listan med värden och koder i ett ark och rullgardinsmenyn som skapas i ett annat ark?
Samma kod fungerar inte som den visas och fel i den här raden ("selectedNum = Application.VLookup(selectedNa, ActiveSheet.Range("dropdown"), 2, False)").
Jag har också ett krav som, om jag har flera listor definierade i ett blad med ID och namn och flera rullgardinsmenyer i ett annat blad där ett rullgardinsvärde är beroende av valt värde i en annan rullgardinsmeny.

Hoppas du förstod min fråga.

Snälla hjälp mig att lösa det här problemet.
Denna kommentar minimerades av moderatoren på webbplatsen
Detta hjälpte mig oerhört, tack. Eftersom mitt bord var på ett annat ark än min listbox lade jag till ett par rader kod för att åstadkomma det och även för att hålla skärmen från att blinka.

Application.ScreenUpdating = False
Sheets("SheetWithTableOnIt").Aktivera

Sheets("SheetWithDropDownListOnIt").Aktivera
Application.ScreenUpdating = True
Denna kommentar minimerades av moderatoren på webbplatsen
exakt var lade du till dessa koder?
Denna kommentar minimerades av moderatoren på webbplatsen
Jag får ett kompileringsfel: Syntaxfel på raden "If Trarget.Column = 6 Then" när jag försöker använda koden? Någon idé om varför?
Denna kommentar minimerades av moderatoren på webbplatsen
Den fungerar men när du avslutar en fil och öppnar den igen fungerar den inte...den kan inte sparas som .xls bara som .xlsm finns det någon lösning på det? Tack
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, Marko, Efter att ha kopierat och klistrat in koden i din arbetsbok, när du sparar filen, bör du spara den som ett Excel Macro-Enabled Workbook-format, försök, tack!
Det finns inga kommentarer här ännu
Ladda fler
Lämna dina kommentarer
Postar som gäst
×
Betygsätt detta inlägg:
0   Tecken
Föreslagna platser

Följ oss

Copyright © 2009 - www.extendoffice.com. | Alla rättigheter förbehållna. Drivs av ExtendOffice. | | Sitemap
Microsoft och Office-logotypen är varumärken eller registrerade varumärken som tillhör Microsoft Corporation i USA och / eller andra länder.
Skyddad av Sectigo SSL