Ugrás a tartalomra

Válasszon ki több elemet az Excel legördülő listából – teljes útmutató

Az Excel legördülő listái fantasztikus eszközök az adatok konzisztenciájának és egyszerű bevitelének biztosítására. Alapértelmezés szerint azonban csak egy elem kiválasztására korlátozzák. De mi van akkor, ha több elemet kell kiválasztania ugyanabból a legördülő listából? Ez az átfogó útmutató megvizsgálja azokat a módszereket, amelyek segítségével több kijelölést engedélyezhet az Excel legördülő listáiban, kezelheti a duplikációkat, beállíthat egyéni elválasztókat, és meghatározhatja a listák hatókörét.

típus: A következő módszerek alkalmazása előtt győződjön meg arról, hogy előzőleg létrehozott legördülő listákat a munkalapjain. Ha tudni szeretné, hogyan hozhat létre adatellenőrzési legördülő listákat, kövesse az ebben a cikkben található utasításokat: Adatérvényesítési legördülő listák létrehozása Excelben.

Több kijelölés engedélyezése a legördülő listában

Ez a szakasz két módszert kínál az Excel legördülő listában történő több kijelölés engedélyezésére.

VBA kód használata

Ha több kijelölést szeretne engedélyezni a legördülő listában, használhatja Visual Basic alkalmazásokhoz (VBA) Excelben. A szkript módosíthatja a legördülő lista viselkedését, hogy feleletválasztós listává tegye. Kérjük, tegye a következőket.

1. lépés: Nyissa meg a Lap (kód) szerkesztőt
  1. Nyissa meg azt a munkalapot, amely azt a legördülő listát tartalmazza, amelynél engedélyezni kívánja a többszörös kijelölést.
  2. Kattintson a jobb gombbal a lapfülre, és válassza ki Kód megtekintése a helyi menüből.
2. lépés: VBA kód használata

Most másolja ki a következő VBA-kódot, és illessze be a nyitólap (Kód) ablakba.

VBA-kód: Több kijelölés engedélyezése az Excel legördülő listában.

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

Eredmény

Amikor visszatér a munkalaphoz, a legördülő lista lehetővé teszi több lehetőség kiválasztását, lásd az alábbi bemutatót:

Megjegyzések:
A fenti VBA kód:
  • Az aktuális munkalapon található összes adatellenőrzési legördülő listára vonatkozik, mind a meglévőkre, mind a jövőben létrehozottakra.
  • Megakadályozza, hogy ugyanazt az elemet többször válassza ki minden egyes legördülő listából.
  • Vesszőt használ a kijelölt elemek elválasztójaként. Egyéb határolójelek használatához kérjük tekintse meg ezt a részt az elválasztó megváltoztatásához.

A Kutools for Excel használata néhány kattintással

Ha nem elégedett a VBA-val, egy egyszerűbb alternatíva Kutools az Excel számára's Többszörös kiválasztás legördülő lista funkció. Ez a felhasználóbarát eszköz leegyszerűsíti a többszörös kijelölés engedélyezését a legördülő listákban, és különféle hatóköröket kínál, például egy adott tartományt, az aktuális munkalapot, a teljes munkafüzetet vagy az összes megnyitott munkafüzetet. Ezenkívül lehetővé teszi az elválasztó testreszabását és az ismétlődések könnyű kezelését, hogy megfeleljen az Ön különböző igényeinek.

Után a Kutools for Excel telepítése, Menjen a Kutools lapon válassza ki a lehetőséget Legördülő lista > Többszörös kiválasztás legördülő lista. Ezután a következőképpen kell konfigurálnia.

  1. Adja meg, hol szeretné alkalmazni ezt a funkciót a Állítsa be a hatókört szakasz.
  2. Adja meg az elválasztót a kijelölt elemekhez egy cellában.
  3. Döntse el a szöveg irányát.
  4. Kattints OK.
Eredmény

Most, amikor egy legördülő listát tartalmazó cellára kattint, megjelenik mellette egy listamező. Egyszerűen kattintson az elemek melletti "+" gombra, hogy hozzáadja őket a legördülő cellához, és kattintson a "-" gombra a nem kívánt elemek eltávolításához. Tekintse meg az alábbi bemutatót:

Megjegyzések: A funkció alkalmazásához kérjük töltse le és telepítse a Kutools for Excel alkalmazást először.

További műveletek a többszörös kiválasztás legördülő listához

Ez a szakasz azokat a különböző forgatókönyveket gyűjti össze, amelyekre szükség lehet, ha több kijelölést engedélyez az Adatellenőrzés legördülő listában.


Ismétlődő elemek engedélyezése a legördülő listában

Az ismétlődések problémát jelenthetnek, ha egy legördülő listában több kijelölés is engedélyezett. A fenti VBA-kód nem engedélyezi a duplikált elemeket a legördülő listában. Ha meg kell őriznie az ismétlődő elemeket, próbálja ki az ebben a szakaszban található VBA-kódot.

VBA-kód: A duplikációk engedélyezése az adatellenőrzés legördülő listában

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
Eredmény

Mostantól több elemet is kiválaszthat az aktuális munkalap legördülő listáiból. Ha meg szeretne ismételni egy elemet a legördülő lista cellájában, továbbra is válassza ki az adott elemet a listából. Lásd a képernyőképet:


A meglévő elemek eltávolítása a legördülő listából

Miután több elemet kiválasztott egy legördülő listából, előfordulhat, hogy el kell távolítania egy meglévő elemet a legördülő lista cellájából. Ez a szakasz egy másik VBA-kódot tartalmaz, amely segít a feladat végrehajtásában.

VBA-kód: Távolítsa el a meglévő elemeket a legördülő lista cellájából

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
Eredmény

Ez a VBA-kód lehetővé teszi több elem kiválasztását a legördülő listából, és könnyedén eltávolíthatja a már kiválasztott elemeket. Több elem kiválasztása után, ha el szeretne távolítani egy adott elemet, egyszerűen válassza ki újra a listából.


Egyéni elválasztó beállítása

A fenti VBA-kódokban a határoló vesszőként van beállítva. Ezt a változót bármely preferált karakterre módosíthatja, hogy elválasztóként használja a legördülő listában. A következőképpen teheti meg:

Amint láthatja, a fenti VBA-kódok mindegyike a következő sort tartalmazza:

delimiter = ", "

Csak szükség szerint módosítania kell a vesszőt bármilyen elválasztóra. Ha például pontosvesszővel szeretné elválasztani az elemeket, módosítsa a sort a következőre:

delimiter = "; "
Megjegyzés: Ha ezekben a VBA-kódokban a határolót újsor karakterre szeretné módosítani, módosítsa ezt a sort a következőre:
delimiter = vbNewLine

Meghatározott tartomány beállítása

A fenti VBA-kódok az aktuális munkalap összes legördülő listájára vonatkoznak. Ha azt szeretné, hogy a VBA-kódok csak a legördülő listák egy bizonyos tartományára vonatkozzanak, a fenti VBA-kódban a következőképpen adhatja meg a tartományt.

Amint láthatja, a fenti VBA-kódok mindegyike a következő sort tartalmazza:

Set TargetRange = Me.UsedRange

Csak módosítania kell a sort a következőre:

Set TargetRange = Me.Range("C2:C10")
Megjegyzések: Itt C2: C10 az a tartomány, amely a többszörös kijelölésként beállítani kívánt legördülő listát tartalmazza.

Végrehajtás védett munkalapon

Képzelje el, hogy jelszóval védett egy munkalapot "123", és állítsa a legördülő lista celláit ""kártyafüggetlen" a védelem aktiválása előtt, így biztosítva, hogy a többszörös kijelölés funkció a védelem után is aktív maradjon. A fent említett VBA-kódok azonban ebben az esetben nem működnek, és ez a szakasz egy másik VBA-szkriptet ír le, amelyet kifejezetten a többszörös kijelölésű funkciók kezelésére terveztek védett munkalapon.

VBA-kód: Engedélyezze a többszörös kijelölést a legördülő listában ismétlődések nélkül


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
Megjegyzések: A kódban feltétlenül cserélje ki a „a jelszavad” a sorban pswd = "a jelszavad" a munkalap védelméhez használt tényleges jelszóval. Például ha a jelszava "abc123", akkor a vonalnak így kell lennie pswd = "abc123".

Ha engedélyezi a többszörös kijelölést az Excel legördülő listáiban, nagymértékben növelheti a munkalapok funkcionalitását és rugalmasságát. Akár jól érzi magát a VBA-kódolásban, akár egy egyszerűbb megoldást, például a Kutools-t részesíti előnyben, most már lehetősége van arra, hogy szabványos legördülő listáit dinamikus, többszörösen kiválasztható eszközökké alakítsa. Ezekkel a készségekkel most már dinamikusabb és felhasználóbarátabb Excel-dokumentumokat készíthet. Azok számára, akik szeretnének mélyebbre ásni az Excel képességeit, weboldalunk rengeteg oktatóanyagot kínál. Itt találhat további Excel tippeket és trükköket.

A legjobb irodai hatékonyságnövelő eszközök

Népszerű szolgáltatások: Ismétlődések keresése, kiemelése vagy azonosítása   |  Üres sorok törlése   |  Oszlopok vagy cellák kombinálása adatvesztés nélkül   |   Kerek Formula nélkül ...
Szuper keresés: Több kritérium VLookup    Többértékű VLookup  |   VLookup több munkalapon   |   Fuzzy Lookup ....
Speciális legördülő lista: Gyors legördülő lista létrehozása   |  Függő legördülő lista   |  Többszörösen válassza ki a legördülő listát ....
Oszlopkezelő: Adjon meg egy adott számú oszlopot  |  Oszlopok mozgatása  |  Kapcsolja be a Rejtett oszlopok láthatósági állapotát  |  Tartományok és oszlopok összehasonlítása ...
Kiemelt funkciók: Rács fókusz   |  Design nézet   |   Nagy Formula bár    Munkafüzet és lapkezelő   |  Erőforrás-könyvtár (Auto szöveg)   |  Dátumválasztó   |  Kombinálja a munkalapokat   |  Cellák titkosítása/dekódolása    E-mailek küldése listánként   |  Szuper szűrő   |   Speciális szűrő (félkövér/dőlt/áthúzott szűrés...) ...
A 15 legjobb eszközkészlet12 szöveg Eszközök (Szöveg hozzáadása, Karakterek eltávolítása,...)   |   50 + Táblázatos Típusai (Gantt-diagram,...)   |   40+ Praktikus képletek (Számolja ki az életkort a születésnap alapján,...)   |   19 beszúrás Eszközök (Helyezze be a QR-kódot, Kép beszúrása az útvonalból,...)   |   12 Átalakítás Eszközök (Számok szavakig, Valuta átváltás,...)   |   7 Egyesítés és felosztás Eszközök (Haladó kombinált sorok, Hasított sejtek,...)   |   ... és több

Töltsd fel Excel-készségeidet a Kutools for Excel segítségével, és tapasztald meg a még soha nem látott hatékonyságot. A Kutools for Excel több mint 300 speciális funkciót kínál a termelékenység fokozásához és az időmegtakarításhoz.  Kattintson ide, hogy megszerezze a leginkább szükséges funkciót...

kte lap 201905


Az Office lap füles felületet hoz 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!