Kako narediti več izbir iz spustnega seznama v Excelu (3 načini) -

  • Deliti To
Hugh West

Glede na okoliščine boste morda morali izbrati več vrednosti v spustnem seznamu. V tem učbeniku vam bomo pokazali, kako narediti več izbir v spustnem seznamu. Za to sejo uporabljamo Excel 2019, lahko pa uporabite tudi želeno različico.

Preden se potopimo v sejo, spoznajmo nabor podatkov, ki je osnova za naše primere.

Tu imamo več elementov za pisarniške potrebščine, s katerimi bomo ustvarili spustni seznam in na njem izbrali več elementov.

Upoštevajte, da gre za preprost nabor podatkov, da bodo stvari enostavne. V praksi lahko naletite na veliko večji in zapleten nabor podatkov.

Praktični delovni zvezek

Na spodnji povezavi si lahko prenesete delovni zvezek za vadbo.

Večkratni izbor iz spustnega seznama.xlsm

Večkratni izbor v spustnem seznamu

Najprej moramo ustvariti spustni seznam na podlagi naših pisarniških zbirk. Hitro ga ustvarimo. Ne oklevajte in si oglejte članek o izdelavi spustnega seznama.

V Potrjevanje podatkov v pogovornem oknu izberite SEZNAM podatkovno vrsto in vstavite območje celic elementov.

B4:B11 je območje, ki vsebuje elemente pisarniških potrebščin. Zdaj boste našli spustni seznam.

Preberite več: Excelov spustni seznam glede na izbor

1. Izberite več elementov (omogoča podvojen izbor)

Na običajnem spustnem seznamu vedno izberete en element. Tukaj lahko vidite, da smo izbrali Pisalo s seznama (spodnja slika).

Če izberemo drug element, recimo Svinčnik

nadomesti prejšnjo vrednost. Samo Svinčnik ostane izbrana.

Če želimo izbrati več elementov, moramo uporabiti VBA koda. Odprite Microsoft Visual Basic za aplikacije okno (pritisnite ALT + F11 da ga odprete).

Zdaj dvakrat kliknite na ime ali številko delovnega lista, v katerem želite izbrati več elementov na spustnem seznamu. Poiskali boste okno kode za ta list.

Tukaj je okno kode za List2 v našem delovnem zvezku (spustni seznam imamo v tem listu).

Ko se odpre okno s kodo, vanj vstavite naslednjo kodo

 Private Sub Worksheet_Change(ByVal Target As Range) Dim Oldvalue As String Dim Newvalue As String On Error GoTo Exitsub If Target.Address = "$D$4" Then If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub Else: If Target.Value = "" Then GoTo Exitsub Else Application.EnableEvents = False Newvalue = Target.Value Application.UndoOldvalue = Target.Value If Oldvalue = "" Then Target.Value = Newvalue Else Target.Value = Oldvalue & ", " & Newvalue End If End If End If End If Application.EnableEvents = True Exitsub: Application.EnableEvents = True End Sub 

Shranite kodo in zdaj poskusite izbrati vrednosti na spustnem seznamu.

Po izbiri Svinčnik , bomo izbrali drug element Beležnica . In videli ste, da smo našli oba predmeta (spodnja slika).

Ta koda nam bo omogočila ponovitev izbire. Recimo, če izberemo Svinčnik ponovno,

bomo element ponovno našli v izbirnem polju.

Razlaga kode

Deklarirali smo dva niza Stara vrednost in . Nova vrednost .

Vidite, da smo spustni seznam v D4 zato je naš ciljni naslov D4 . Poleg tega smo ponovno preverili, ali celica uporablja preverjanje podatkov ali ne, in sicer z uporabo Target.SpecialCells .

Ko je vrednost izbrana, smo izklopili dogodke ( Application.EnableEvents = False ), tako da spremembe ne bodo ponovno sprožile dogodka. Nato shranite izbrani element v Nova vrednost .

Po razveljavitvi spremembe smo nastavili vrednost v Stara vrednost . Nato preverite, ali je Stara vrednost je prazna ali ne. Če je prazna (kar pomeni, da je izbrana samo ena vrednost), vrne Nova vrednost . V nasprotnem primeru združite Stara vrednost in . Nova vrednost .

Pred koncem ponastavite dogodek, da ga lahko po potrebi spremenite.

Preberite več: Več odvisnih spustnih seznamov Excel VBA

2. Izberite več elementov s spustnega seznama (samo edinstven izbor)

V prejšnjem razdelku smo videli več izbir, pri katerih je bilo dovoljeno ponavljanje. Če tega ne želite, sledite temu razdelku.

Zaradi priročnosti smo za to predstavitev uporabili ločen list. Tokrat smo na listu 3. V okno za kodo tega lista zapišite naslednjo kodo.

 Private Sub Worksheet_Change(ByVal Target As Range) Dim Oldvalue As String Dim Newvalue As String Application.EnableEvents = True On Error GoTo Exitsub If Target.Address = "$D$4" Then If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub Else: If Target.Value = "" Then GoTo Exitsub Else Application.EnableEvents = False Newvalue = Target.ValueApplication.Undo Oldvalue = Target.Value If Oldvalue = "" Then Target.Value = Newvalue Else If InStr(1, Oldvalue, Newvalue) = 0 Then Target.Value = Oldvalue & ", " & Newvalue Else: Target.Value = Oldvalue End If End If End If End If Application.EnableEvents = True Exitsub: Application.EnableEvents = True End Sub 

Ali je kakšna razlika v primerjavi s prejšnjo kodo! Poglejte podrobneje, da boste lahko opazili majhno razliko.

Pri tem smo uporabili VBA funkcijo, ki se imenuje INSTR . INSTR funkcija vrne položaj prve pojavitve podreza v nizu. Za več informacij obiščite članek INSTR.

S to logično operacijo z InStr(1, Oldvalue, Newvalue) = 0 smo preverili, ali so vrednosti najdene ali ne. Če logična operacija vrne TRUE (prej ni bilo najdeno), potem je mogoče izbrati element in ga združiti s prejšnjo vrednostjo.

Shranite kodo in zdaj poskusite izbrati element, ki je že bil izbran.

Tu smo že izbrali Svinčnik Če želimo to ponovno izbrati, tega ne moremo storiti, saj ne dovoljuje podvojenih vrednosti.

Preberite več: Kako ustvariti spustni seznam iz drugega lista v Excelu

3. Izberite elemente v novem vrstilcu

Do zdaj smo ugotovili, da so elementi ločeni z vejico. V tem razdelku bomo izbrane elemente uredili z novimi vrsticami.

Zaradi preprostosti združujemo nekaj celic z D4 Če želite to narediti, izberite celice, ki jih želite združiti, in kliknite Združitev & amp; Center iz Uskladitev v razdelku Domov zavihek.

Celica bo pridobila večjo višino.

Zdaj si oglejmo kodo za ločevanje elementov z novo vrstico. Uporabite naslednjo kodo

 Private Sub Worksheet_Change(ByVal Target As Range) Dim Oldvalue As String Dim Newvalue As String Application.EnableEvents = True On Error GoTo Exitsub If Target.Address = "$D$4" Then If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub Else: If Target.Value = "" Then GoTo Exitsub Else Application.EnableEvents = False Newvalue = Target.ValueApplication.Undo Oldvalue = Target.Value If Oldvalue = "" Then Target.Value = Newvalue Else If InStr(1, Oldvalue, Newvalue) = 0 Then Target.Value = Oldvalue & vbNewLine & Newvalue Else: Target.Value = Oldvalue End If End If End If End If Application.EnableEvents = True Exitsub: Application.EnableEvents = True End Sub 

Edina razlika v primerjavi s prejšnjo kodo je, da smo tokrat uporabili vbNewLine vmes OldValue in . NewValue .

vbNewLine med elementoma ustvarite novo vrstico.

Zdaj izberite elemente.

Izberemo element Pisalo ki je prikazan na zgornji sliki. Zdaj izberite še en element.

Ugotovili boste, da sta oba elementa v različnih vrstah.

Tu imamo dve vrednosti, ki sta v dveh različnih vrsticah. Če izberete drugo vrednost, jo boste dodali v drugo vrstico. Vsaka vrednost bo v novi vrstici.

Če želite elemente ločiti z drugim ločilom, ga uporabite v dvojnih narekovajih namesto vbNewline .

Zaključek

To je za danes vse. Navedli smo več pristopov za več izbir na spustnem seznamu. Upam, da vam bo to v pomoč. Če se vam zdi kaj težko razumljivo, lahko komentirate. Sporočite nam morebitne druge metode, ki smo jih tukaj spregledali.

Hugh West je zelo izkušen trener Excela in analitik z več kot 10-letnimi izkušnjami v industriji. Po izobrazbi je diplomirani računovodstvo in finance ter magisterij poslovne administracije. Hugh ima strast do poučevanja in je razvil edinstven pristop k poučevanju, ki ga je enostavno slediti in razumeti. Njegovo strokovno znanje o Excelu je pomagalo na tisoče študentom in strokovnjakom po vsem svetu, da so izboljšali svoje sposobnosti in se izkazali v karieri. Prek svojega bloga Hugh deli svoje znanje s svetom, ponuja brezplačne vadnice za Excel in spletno usposabljanje, ki posameznikom in podjetjem pomaga doseči njihov polni potencial.