Vælg flere elementer i Excel-rullelisten – fuld vejledning
Excel-rullelister er et fantastisk værktøj til at sikre datakonsistens og nem indtastning. Men som standard begrænser de dig til kun at vælge ét element. Men hvad hvis du har brug for at vælge flere elementer fra den samme rulleliste? Denne omfattende vejledning vil udforske metoder til at aktivere flere valg i Excel-rullelister, administrere dubletter, indstille brugerdefinerede separatorer og definere omfanget af disse lister.
- Tillad dublerede elementer
- Fjernelse af eksisterende elementer
- Indstilling af en brugerdefineret separator
- Indstilling af et specificeret område
- Udførelse i et beskyttet regneark
Aktivering af flere valg på rullelisten
Dette afsnit indeholder to metoder til at hjælpe dig med at aktivere flere valg på rullelisten i Excel.
Brug af VBA-kode
For at tillade flere valg i rullelisten, kan du bruge Visual Basic til applikationer (VBA) i Excel. Scriptet kan ændre adfærden for en rulleliste for at gøre den til en flervalgsliste. Gør venligst som følger.
Trin 1: Åbn arkeditoren (kode).
- Åbn regnearket, der indeholder den rulleliste, som du vil aktivere flere valg for.
- Højreklik på arkfanen og vælg Vis kode fra kontekstmenuen.
Trin 2: Brug VBA-kode
Kopier nu følgende VBA-kode og indsæt den i åbningsarket (Kode) vinduet.
VBA-kode: Aktiver flere valg i rullelisten i Excel.
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
Dim xRng As Range
Dim xValue1 As String
Dim xValue2 As String
Dim delimiter As String
Dim TargetRange As Range
Set TargetRange = Me.UsedRange ' Users can change target range here
delimiter = ", " ' Users can change the delimiter here
If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub
On Error Resume Next
Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
If xRng Is Nothing Then Exit Sub
Application.EnableEvents = False
xValue2 = Target.Value
Application.Undo
xValue1 = Target.Value
Target.Value = xValue2
If xValue1 <> "" And xValue2 <> "" Then
If Not (xValue1 = xValue2 Or _
InStr(1, xValue1, delimiter & xValue2) > 0 Or _
InStr(1, xValue1, xValue2 & delimiter) > 0) Then
Target.Value = xValue1 & delimiter & xValue2
Else
Target.Value = xValue1
End If
End If
Application.EnableEvents = True
On Error GoTo 0
End Sub
Resultat
Når du vender tilbage til regnearket, vil rullelisten give dig mulighed for at vælge flere muligheder, se demoen nedenfor:
Ovenstående VBA-kode:
- Gælder for alle rullelister for datavalidering i det aktuelle regneark, både eksisterende og dem, der oprettes i fremtiden.
- Forhindrer dig i at vælge det samme emne mere end én gang i hver rulleliste.
- Bruger komma som separator for de valgte elementer. For at bruge andre afgrænsninger, venligst se dette afsnit for at ændre separatoren.
Brug af Kutools til Excel med et par klik
Hvis du ikke er fortrolig med VBA, er et lettere alternativ Kutools til Excel's Multivælg rulleliste funktion. Dette brugervenlige værktøj forenkler muligheden for flere valg i rullelister, så du kan tilpasse separatoren og håndtere dubletter uden besvær for at opfylde dine forskellige behov.
Efter installation af Kutools til ExcelGå til Kutools fanebladet, vælg Rulleliste > Multivælg rulleliste. Derefter skal du konfigurere som følger.
- Angiv det område, der indeholder rullelisten, hvorfra du skal vælge flere elementer.
- Angiv separatoren for de valgte elementer i rullelistens celle.
- Klik OK for at fuldføre indstillingerne.
Resultat
Når du nu klikker på en celle med en rulleliste i det angivne område, vises en liste ved siden af den. Du skal blot klikke på knappen "+" ud for elementerne for at tilføje dem til rullemenuen, og klik på knappen "-" for at fjerne elementer, du ikke ønsker længere. Se demoen herunder:
- Tjek Ombryd tekst efter indsættelse af en separator mulighed, hvis du vil vise de valgte elementer lodret i cellen. Hvis du foretrækker en vandret liste, skal du lade denne mulighed være umarkeret.
- Tjek Aktivér søgning mulighed, hvis du vil tilføje en søgelinje til din rulleliste.
- For at anvende denne funktion, venligst download og installer Kutools til Excel først.
Flere handlinger for multi-selektion rulleliste
Dette afsnit samler de forskellige scenarier, der kan være nødvendige, når du aktiverer flere valg på rullelisten Datavalidering.
Tillad dublerede elementer i rullelisten
Dubletter kan være et problem, når flere valg er tilladt i en rulleliste. VBA-koden ovenfor tillader ikke duplikerede elementer i rullelisten. Hvis du har brug for at beholde duplikerede elementer, så prøv VBA-koden i dette afsnit.
VBA-kode: Tillad dubletter i rullelisten for datavalidering
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
Dim xRng As Range
Dim xValue1 As String
Dim xValue2 As String
Dim delimiter As String
Dim TargetRange As Range
Set TargetRange = Me.UsedRange ' Users can change target range here
delimiter = ", " ' Users can change the delimiter here
If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub
On Error Resume Next
Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
If xRng Is Nothing Then Exit Sub
Application.EnableEvents = False
xValue2 = Target.Value
Application.Undo
xValue1 = Target.Value
Target.Value = xValue2
If xValue1 <> "" And xValue2 <> "" Then
Target.Value = xValue1 & delimiter & xValue2
End If
Application.EnableEvents = True
On Error GoTo 0
End Sub
Resultat
Nu kan du vælge flere elementer fra rullelisterne i det aktuelle regneark. For at gentage et element i en rullelistecelle, fortsæt med at vælge det element fra listen. Se skærmbillede:
Fjernelse af eksisterende elementer fra rullelisten
Efter at have valgt flere elementer fra en rulleliste, kan du nogle gange være nødt til at fjerne et eksisterende element fra rullelistens celle. Dette afsnit indeholder endnu et stykke VBA-kode for at hjælpe dig med at udføre denne opgave.
VBA-kode: Fjern eventuelle eksisterende elementer fra rullelistens celle
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
Dim xRngDV As Range
Dim TargetRange As Range
Dim oldValue As String
Dim newValue As String
Dim delimiter As String
Dim allValues As Variant
Dim valueExists As Boolean
Dim i As Long
Dim cleanedValue As String
Set TargetRange = Me.UsedRange ' Set your specific range here
delimiter = ", " ' Set your desired delimiter here
If Target.CountLarge > 1 Then Exit Sub
' Check if the change is within the specific range
If Intersect(Target, TargetRange) Is Nothing Then Exit Sub
On Error Resume Next
Set xRngDV = Target.SpecialCells(xlCellTypeAllValidation)
If xRngDV Is Nothing Or Target.Value = "" Then
' Skip if there's no data validation or if the cell is cleared
Application.EnableEvents = True
Exit Sub
End If
On Error GoTo 0
If Not Intersect(Target, xRngDV) Is Nothing Then
Application.EnableEvents = False
newValue = Target.Value
Application.Undo
oldValue = Target.Value
Target.Value = newValue
' Split the old value by delimiter and check if new value already exists
allValues = Split(oldValue, delimiter)
valueExists = False
For i = LBound(allValues) To UBound(allValues)
If Trim(allValues(i)) = newValue Then
valueExists = True
Exit For
End If
Next i
' Add or remove value based on its existence
If valueExists Then
' Remove the value
cleanedValue = ""
For i = LBound(allValues) To UBound(allValues)
If Trim(allValues(i)) <> newValue Then
If cleanedValue <> "" Then cleanedValue = cleanedValue & delimiter
cleanedValue = cleanedValue & Trim(allValues(i))
End If
Next i
Target.Value = cleanedValue
Else
' Add the value
If oldValue <> "" Then
Target.Value = oldValue & delimiter & newValue
Else
Target.Value = newValue
End If
End If
Application.EnableEvents = True
End If
End Sub
Resultat
Denne VBA-kode giver dig mulighed for at vælge flere elementer fra en rulleliste og nemt fjerne ethvert element, du allerede har valgt. Efter at have valgt flere elementer, hvis du vil fjerne et bestemt, skal du blot vælge det igen fra listen.
Indstilling af en brugerdefineret separator
Afgrænsningstegnet er sat som komma i ovenstående VBA-koder. Du kan ændre denne variabel til et hvilket som helst foretrukket tegn, der skal bruges som separator for valg i rullelisten. Sådan kan du gøre:
Som du kan se, at ovenstående VBA-koder alle har følgende linje:
delimiter = ", "
Du skal blot ændre kommaet til en hvilken som helst separator, som du har brug for. Hvis du f.eks. vil adskille elementerne med semikolon, skal du ændre linjen til:
delimiter = "; "
delimiter = vbNewLine
Indstilling af et specificeret område
Ovenstående VBA-koder gælder for alle rullelister i det aktuelle regneark. Hvis du kun ønsker, at VBA-koderne skal gælde for et bestemt udvalg af rullelister, kan du angive intervallet i ovenstående VBA-kode som følger.
Som du kan se, at ovenstående VBA-koder alle har følgende linje:
Set TargetRange = Me.UsedRange
Du skal bare ændre linjen til:
Set TargetRange = Me.Range("C2:C10")
Udførelse i et beskyttet regneark
Forestil dig, at du har beskyttet et regneark med adgangskoden "123" og indstil rullelistens celler til "Unlocked" før aktivering af beskyttelsen, og dermed sikres, at multi-select-funktionen forbliver aktiv efter beskyttelsen. VBA-koderne nævnt ovenfor kan dog ikke fungere i dette tilfælde, og dette afsnit beskriver et andet VBA-script, der er specifikt designet til at håndtere multi-select-funktionalitet i et beskyttet arbejdsark.
VBA-kode: Aktiver flere valg i rullelisten uden dubletter
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
Dim xRng As Range
Dim xValue1 As String
Dim xValue2 As String
Dim delimiter As String
Dim TargetRange As Range
Dim isProtected As Boolean
Dim pswd As Variant
Set TargetRange = Me.UsedRange ' Set your specific range here
delimiter = ", " ' Users can change the delimiter here
If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub
' Check if sheet is protected
isProtected = Me.ProtectContents
If isProtected Then
' If protected, temporarily unprotect. Adjust or remove the password as needed.
pswd = "yourPassword" ' Change or remove this as needed
Me.Unprotect Password:=pswd
End If
On Error Resume Next
Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
If xRng Is Nothing Then
If isProtected Then Me.Protect Password:=pswd
Exit Sub
End If
Application.EnableEvents = False
xValue2 = Target.Value
Application.Undo
xValue1 = Target.Value
Target.Value = xValue2
If xValue1 <> "" And xValue2 <> "" Then
If Not (xValue1 = xValue2 Or _
InStr(1, xValue1, delimiter & xValue2) > 0 Or _
InStr(1, xValue1, xValue2 & delimiter) > 0) Then
Target.Value = xValue1 & delimiter & xValue2
Else
Target.Value = xValue1
End If
End If
Application.EnableEvents = True
On Error GoTo 0
' Re-protect the sheet if it was protected
If isProtected Then
Me.Protect Password:=pswd
End If
End Sub
Ved at aktivere flere valg i Excel-rullelister kan du i høj grad forbedre funktionaliteten og fleksibiliteten af dine regneark. Uanset om du er fortrolig med VBA-kodning eller foretrækker en mere ligetil løsning som Kutools, har du nu muligheden for at transformere dine standard rullelister til dynamiske, multi-select værktøjer. Med disse færdigheder er du nu rustet til at skabe mere dynamiske og brugervenlige Excel-dokumenter. For dem, der er ivrige efter at dykke dybere ned i Excels muligheder, kan vores hjemmeside prale af et væld af selvstudier. Find flere tips og tricks til Excel her.
Relaterede artikler
Autofuldfør, når du skriver i rullelisten i Excel
Hvis du har en datavalideringsrulleliste med store værdier, skal du rulle ned på listen bare for at finde den rigtige eller skrive hele ordet direkte i listeboksen. Hvis der er en metode til at tillade automatisk udfyldning, når du skriver det første bogstav i rullelisten, bliver alt lettere. Denne vejledning giver metoden til at løse problemet.
Opret rullelisten fra en anden projektmappe i Excel
Det er ret nemt at oprette en rulleliste med datavalidering blandt regneark i en projektmappe. Men hvis de listedata, du har brug for til datavalidering, findes i en anden projektmappe, hvad ville du gøre? I denne vejledning lærer du, hvordan du opretter en drop fown-liste fra en anden projektmappe i Excel i detaljer.
Opret en søgbar rulleliste i Excel
For en rulleliste med mange værdier er det ikke let at finde en ordentlig. Tidligere har vi introduceret en metode til automatisk udfyldelse af rullelisten, når du indtaster det første bogstav i rullemenuen. Udover funktionen autofuldførelse kan du også gøre rullelisten søgbar for at forbedre arbejdseffektiviteten ved at finde korrekte værdier i rullelisten. For at gøre rullelisten søgbar, prøv metoden i denne vejledning.
Udfyld automatisk andre celler, når du vælger værdier i rullelisten i Excel
Lad os sige, at du har oprettet en rulleliste baseret på værdierne i celleområde B8: B14. Når du vælger en hvilken som helst værdi i rullelisten, ønsker du, at de tilsvarende værdier i celleområde C8: C14 automatisk udfyldes i en valgt celle. Til løsning af problemet vil metoderne i denne vejledning gøre dig en tjeneste.
Bedste kontorproduktivitetsværktøjer
Overlad dine Excel-færdigheder med Kutools til Excel, og oplev effektivitet som aldrig før. Kutools til Excel tilbyder over 300 avancerede funktioner for at øge produktiviteten og spare tid. Klik her for at få den funktion, du har mest brug for...
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!
Indholdsfortegnelse
- Aktivering af flere valg
- Brug af VBA-kode
- Brug af Kutools til Excel med et par klik
- Flere operationer
- Tillad dublerede elementer
- Fjernelse af eksisterende elementer
- Indstilling af en brugerdefineret separator
- Indstilling af et specificeret område
- Udførelse i et beskyttet regneark
- Relaterede artikler
- De bedste Office-produktivitetsværktøjer
- Kommentarer