Ako vykonať viacnásobný výber z rozbaľovacieho zoznamu v programe Excel (3 spôsoby) -

  • Zdieľajte To
Hugh West

V závislosti od okolností môžete potrebovať vybrať viacero hodnôt v rozbaľovacom zozname. V tomto návode vám ukážeme, ako vykonať viacnásobný výber v rozbaľovacom zozname. Na tomto stretnutí používame program Excel 2019, pokojne použite svoju preferovanú verziu.

Skôr ako sa ponoríme do relácie, oboznámime sa so súborom údajov, ktorý je základom našich príkladov.

Tu máme niekoľko kancelárskych prvkov, pomocou ktorých vytvoríme rozbaľovací zoznam a vyberieme v ňom viacero položiek.

Všimnite si, že ide o jednoduchý súbor údajov, aby sa veci zjednodušili. V praktickom scenári sa môžete stretnúť s oveľa väčším a zložitejším súborom údajov.

Cvičebnica pre prax

Cvičebnicu si môžete stiahnuť z nižšie uvedeného odkazu.

Urobiť viacnásobný výber z rozbaľovacieho zoznamu.xlsm

Viacnásobný výber v rozbaľovacom zozname

Najskôr musíme vytvoriť rozbaľovací zoznam na základe našich stacionárnych položiek. Poďme ho rýchlo vytvoriť. Neváhajte navštíviť článok týkajúci sa tvorby rozbaľovacieho zoznamu.

V Overovanie údajov v dialógovom okne vyberte ZOZNAM dátového typu a vložte rozsah buniek položiek.

B4:B11 je rozsah, v ktorom sa nachádzajú kancelárske prvky. Teraz nájdete rozbaľovací zoznam.

Prečítajte si viac: Rozbaľovací zoznam programu Excel v závislosti od výberu

1. Výber viacerých položiek (umožňuje duplicitný výber)

Bežný rozbaľovací zoznam vždy vyberá jednu položku. Tu vidíte, že sme vybrali Pero zo zoznamu (obrázok nižšie).

Ak teraz vyberieme inú položku, povedzme Ceruzka

potom nahradí predchádzajúcu hodnotu. Ceruzka zostane vybraný.

Ak chceme vybrať viacero položiek, musíme použiť príkaz VBA kód. Otvorte Microsoft Visual Basic pre aplikácie okno (stlačte ALT + F11 na jej otvorenie).

Teraz dvakrát kliknite na názov alebo číslo pracovného hárka, v ktorom chcete vybrať viacero položiek v rámci rozbaľovacieho zoznamu. Zobrazí sa okno kódu pre daný hárok.

Tu je okno kódu pre List2 v našom zošite (v tomto liste máme rozbaľovací zoznam).

Po otvorení okna kódu doň vložte nasledujúci kód

 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 Application.EnableEvents = True Exitsub: Application.EnableEvents = True End Sub 

Uložte kód a teraz skúste vybrať hodnoty v rozbaľovacom zozname.

Po výbere Ceruzka , vyberieme ďalšiu položku Notebook A ako vidíte, našli sme obe položky (obrázok nižšie).

Tento kód nám umožní opakovať výber. Povedzme, že ak vyberieme Ceruzka opäť,

položku opäť nájdeme vo výberovom poli.

Vysvetlenie kódu

Deklarovali sme dva reťazce Stará hodnota a Newvalue .

Môžete vidieť, že sme vytvorili rozbaľovací zoznam v D4 preto je naša cieľová adresa D4 . A okrem toho sme opätovne skontrolovali, či bunka používa overovanie údajov alebo nie pomocou Target.SpecialCells .

Po výbere hodnoty sme vypli udalosti ( Application.EnableEvents = False ), aby zmeny nespúšťali udalosť znova. Potom uložte vybranú položku do Newvalue .

Po zrušení zmeny sme nastavili hodnotu do Stará hodnota Potom skontrolujte, či Stará hodnota je prázdna alebo nie. Ak je prázdna (znamená, že je vybraná len jedna hodnota), potom sa vráti Newvalue . V opačnom prípade spojte Stará hodnota a Newvalue .

Pred ukončením resetujte udalosť, aby sme ju mohli v prípade potreby zmeniť.

Prečítajte si viac: Viacnásobný závislý rozbaľovací zoznam Excel VBA

2. Výber viacerých položiek z rozbaľovacieho zoznamu (iba jedinečný výber)

V predchádzajúcej časti sme videli viacnásobné výbery, pri ktorých bolo povolené opakovanie. Ak to nechcete, postupujte podľa tejto časti.

Pre pohodlie sme na túto ukážku použili samostatný hárok. Tentoraz sme na hárku 3. Do okna kódu tohto hárku napíšte nasledujúci kód.

 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 

Je tam nejaký rozdiel v porovnaní s predchádzajúcim kódom! Pozrite sa bližšie, budete môcť spozorovať malý rozdiel.

Tu sme použili VBA funkcia s názvom INSTR . INSTR funkcia vracia pozíciu prvého výskytu podreťazca v reťazci. Ďalšie informácie nájdete v tomto článku INSTR.

Pomocou tejto logickej operácie s InStr(1, Oldvalue, Newvalue) = 0 sme skontrolovali, či sú hodnoty nájdené alebo nie. Ak logická operácia vráti TRUE (nenájdená skôr), potom umožňuje vybrať položku a spojiť ju s predchádzajúcou hodnotou.

Uložte kód a teraz skúste vybrať položku, ktorá už bola vybraná.

Tu sme už vybrali Ceruzka , ak to chceme vybrať znova, nemôžeme. Neumožňuje to duplicitné hodnoty.

Prečítajte si viac: Ako vytvoriť rozbaľovací zoznam z iného hárku v programe Excel

3. Vyberte položky v novom riadku

Doteraz sme zistili, že položky sú oddelené čiarkou. V tejto časti usporiadame vybrané položky do nových riadkov.

Pre zjednodušenie spájame niekoľko buniek s D4 Ak to chcete urobiť, vyberte bunky, ktoré chcete zlúčiť, a kliknite na tlačidlo Zlúčenie & Centrum z Zarovnanie časť Domov tab.

Bunka získa väčšiu výšku.

Teraz sa pozrime na kód na oddeľovanie položiek pomocou nového riadku. Použite nasledujúci kód

 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 

Jediný rozdiel oproti predchádzajúcemu kódu je, že tentoraz sme použili vbNewLine medzi nimi OldValue a NewValue .

vbNewLine poskytuje nový riadok medzi položkami.

Teraz vyberte položky.

Vyberieme položku Pero ktorý je zobrazený na obrázku vyššie. Teraz vyberte ďalší prvok.

Zistíte, že tieto dve položky sú v rôznych riadkoch.

Tu máme dve hodnoty, ktoré sú v dvoch rôznych riadkoch. Výberom ďalšej hodnoty ju pridáte do iného riadku. Každá hodnota bude v novom riadku.

Všimnite si, že ak chcete položky oddeliť iným oddeľovačom, použite ho v dvojitých úvodzovkách namiesto vbNewline .

Záver

To je pre dnešok všetko. Uviedli sme niekoľko prístupov, ako vykonať viacero výberov v rozbaľovacom zozname. Dúfam, že vám to bude užitočné. Ak sa vám zdá niečo zložité na pochopenie, pokojne to komentujte. Dajte nám vedieť o ďalších metódach, ktoré sme tu vynechali.

Hugh West je veľmi skúsený tréner a analytik Excelu s viac ako 10-ročnými skúsenosťami v tomto odvetví. Má bakalársky titul v odbore účtovníctvo a financie a magisterský titul v odbore Business Administration. Hugh má vášeň pre vyučovanie a vyvinul jedinečný vyučovací prístup, ktorý sa dá ľahko sledovať a pochopiť. Jeho odborné znalosti Excelu pomohli tisíckam študentov a profesionálov na celom svete zlepšiť svoje zručnosti a vyniknúť vo svojej kariére. Hugh sa prostredníctvom svojho blogu delí o svoje znalosti so svetom a ponúka bezplatné výukové programy Excelu a online školenia, ktoré jednotlivcom a firmám pomôžu naplno využiť ich potenciál.