Odaberite više stavki s padajućeg popisa u Excelu

Jedan od mojih kolega pitao me je li moguće napraviti više odabira na padajućem popisu u Excelu.

Prilikom stvaranja padajućeg popisa možete odabrati samo jedan odabir. Ako odaberete drugu stavku, prva će se zamijeniti novim odabirom.

Htio je napraviti više odabira iz istog padajućeg izbornika na način da se odabiri dodaju već sadašnjoj vrijednosti u ćeliji.

Nešto kao što je dolje prikazano na slici:

Ne možete to učiniti s ugrađenim značajkama programa Excel.

Jedini način je korištenje VBA koda, koji se pokreće kad god odaberete i dodaje odabranu vrijednost postojećoj vrijednosti.

Gledajte video - Kako odabrati više stavki s padajućeg popisa programa Excel

Kako napraviti više odabira na padajućem popisu

U ovom vodiču pokazat ću vam kako izvršiti višestruki odabir na padajućem popisu programa Excel (s ponavljanjem i bez ponavljanja).

Ovo je bio jedan od najpopularnijih Excel vodiča na ovoj web stranici. Budući da dobivam puno sličnih pitanja, odlučio sam stvoriti odjeljak s često postavljanim pitanjima na kraju ovog vodiča. Stoga, ako nakon čitanja imate bilo kakvih pitanja, najprije provjerite odjeljak Česta pitanja.

Postoje dva dijela za stvaranje padajućeg popisa koji omogućuje višestruki odabir:

  • Izrada padajućeg popisa.
  • Dodavanje VBA koda u pozadinu.

Izrada padajućeg popisa u Excelu

Evo koraka za stvaranje padajućeg popisa u Excelu:

  1. Odaberite ćeliju ili raspon ćelija u kojima želite da se pojavi padajući popis (C2 u ovom primjeru).
  2. Idite na Podaci -> Alati za podatke -> Provjera podataka.
  3. U dijaloškom okviru Validacija podataka na kartici postavki odaberite "Popis" kao kriterij provjere valjanosti.
  4. U polju Izvor odaberite ćelije koje u padajućem izborniku imaju željene stavke.
  5. Pritisnite U redu.

Sada ćelija C2 ima padajući popis koji prikazuje nazive stavki u A2: A6.

Od sada imamo padajući popis na kojem možete odabrati jednu po jednu stavku (kao što je prikazano u nastavku).

Da bismo omogućili ovaj padajući izbornik da omogućimo višestruki odabir, moramo dodati VBA kôd u pozadinu.

Sljedeća dva odjeljka ovog vodiča dat će vam VBA kôd za dopuštanje višestrukih odabira na padajućem popisu (sa i bez ponavljanja).

VBA kôd za dopuštanje višestrukih odabira na padajućem popisu (s ponavljanjem)

Dolje je Excel VBA kôd koji će nam omogućiti odabir više stavki s padajućeg popisa (dopuštajući ponavljanja u odabiru):

Private Sub Worksheet_Change (ByVal Target As Range) 'Code by Sumit Bansal from https://trumpexcel.com' Za višestruke odabire na padajućem popisu u Excelu Dim Oldvalue As String Dim Newvalue As String On Greška GoTo Exitsub If Target.Address = "$ C $ 2" Zatim ako Target.SpecialCells (xlCellTypeAllValidation) nije ništa Onda idite na Izlazni izlaz Ostalo: Ako je Target.Value = "" Zatim ide GoTo Exitsub Druga aplikacija.EnableEvents = False Newvalue = Target.Value Application.Undo Oldvalue = 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 

Sada morate postaviti ovaj kôd u modul u VB Editor -u (kao što je prikazano u nastavku u odjeljku 'Gdje staviti VBA kôd').

Kada postavite ovaj kôd u pozadinu (kasnije u ovom vodiču), to će vam omogućiti da napravite više izbora u padajućem izborniku (kao što je prikazano u nastavku).

Imajte na umu da ako odaberete stavku više puta, ona će se ponovno unijeti (dopušteno je ponavljanje).

Pokušajte sami … Preuzmite datoteku primjera

VBA kôd za dopuštanje višestrukih odabira na padajućem popisu (bez ponavljanja)

Mnogi su ljudi pitali o kodu za odabir više stavki s padajućeg popisa bez ponavljanja.

Evo koda koji će osigurati da se stavka može odabrati samo jednom kako se ne bi ponavljala:

Private Sub Worksheet_Change (ByVal Target As Range) 'Code by Sumit Bansal from https://trumpexcel.com' Za dopuštanje višestrukih odabira na padajućem popisu u Excelu (bez ponavljanja) Dim Oldvalue As String Dim Newvalue As String Application.EnableEvents = Tačna greška Uključeno GoTo Exitsub If Target.Address = "$ C $ 2" Onda If Target.SpecialCells (xlCellTypeAllValidation) Is Nothing then GoTo Exitsub Else: If Target.Value = "" Onda GoTo Exitsub Else Application.EnableEvents = False Newvalue = Targe. Vrijednost Application.Undo Oldvalue = Target.Value If Oldvalue = "" Tada je Target.Value = Nova vrijednost Druga ako je InStr (1, Oldvalue, Nova vrijednost) = 0 Tada je Target.Value = Oldvalue & "," & Nova vrijednost Druga: Target.Value = Oldvalue End If End End End End End End Application.EnableEvents = True Exitsub: Application.EnableEvents = True End Sub

Sada morate ovaj kod smjestiti u modul u VB Editor (kao što je prikazano u sljedećem odjeljku ovog vodiča).

Ovaj kôd omogućit će vam odabir više stavki s padajućeg popisa. No, stavku ćete moći odabrati samo jednom. Ako pokušate ponovno odabrati, ništa se neće dogoditi (kao što je prikazano u nastavku).

Pokušajte sami … Preuzmite datoteku s primjerom

Gdje staviti VBA kod

Prije nego počnete koristiti ovaj kôd u excelu, morate ga staviti u pozadinu tako da se aktivira kad god dođe do bilo kakve promjene u padajućem odabiru.

Slijedite korake u nastavku da biste VBA kôd stavili u pozadinu programa Excel:

  1. Idite na karticu Developer i kliknite na Visual Basic (možete koristiti i tipkovnički prečac - Alt + F11). Ovo će otvoriti uređivač Visual Basic.
  2. S lijeve strane treba postojati okno Project Explorera (ako ga nema, upotrijebite Control + R da ga učinite vidljivim).
  3. Dvaput kliknite Naziv radnog lista (u lijevom oknu) gdje se nalazi padajući popis. Ovo otvara prozor koda za taj radni list.
  4. U prozoru koda kopirajte i zalijepite gornji kod.
  5. Zatvorite VB Editor.

Sada, kada se vratite na padajući izbornik i napravite odabir, to će vam omogućiti da napravite više odabira (kao što je prikazano u nastavku):

Pokušajte sami … Preuzmite datoteku primjera

Bilješka: Budući da za to koristimo VBA kôd, morate spremiti radnu knjigu s nastavkom .xls ili .xlsm.

Često postavljana pitanja (FAQ)

Ovaj odjeljak stvorio sam kako bih odgovorio na neka od najčešćih pitanja o ovom vodiču i VBA kodu. Ako imate pitanja, molim vas da prvo prođete kroz ovaj popis upita.

P: U VBA kodu, funkcionalnost je samo za ćeliju C2. Kako ga mogu nabaviti za druge stanice? Odgovor: Da biste dobili ovaj padajući izbornik s višestrukim odabirom u drugim ćelijama, morate izmijeniti VBA kôd u pozadini. Pretpostavimo da želite dobiti ovo za C2, C3 i C4, morate zamijeniti sljedeći redak u kodu: If Target.Address = "$ C $ 2" Zatim s ovim retkom: If Target.Address = "$ C $ 2" Ili Target.Address = "$ C $ 3" ​​Ili Target.Address = "$ C $ 4" Zatim
P: Moram stvoriti više padajućih izbornika u cijelom stupcu 'C'. Kako to mogu dobiti za sve ćelije u stupcima s funkcijom višestrukog odabira? Odgovor: Da biste omogućili višestruke odabire u padajućim izbornicima u cijelom stupcu, zamijenite sljedeći redak u kodu: If Target.Address = "$ C $ 2" Zatim s ovim retkom: If Target.Column = 3 Then Na sličnim linijama, ako želite ovu funkcionalnost u stupcima C i D, upotrijebite donji redak: Ako je Target.Column = 3 ili Target.Column = 4 Zatim
P: Moram stvoriti više padajućih izbornika zaredom. Kako to mogu učiniti? Odgovor: Ako trebate stvoriti padajuće popise s više uzastopnih odabira (recimo drugi red), morate zamijeniti donji redak koda: If Target.Address = "$ C $ 2" Zatim ovim retkom: Ako je Target.Row = 2 Zatim, slično, ako želite da ovo funkcionira za više redaka (recimo drugi i treći redak), umjesto toga upotrijebite donji redak koda: Ako je Target.Row = 2 ili Target.Row = 3 Zatim
P: Od sada je višestruki odabir odvojen zarezom. Kako mogu promijeniti ovo da ih odvojim razmakom (ili bilo kojim drugim separatorom). Odgovor: Da biste ih odvojili razdjelnikom koji nije zarez, morate zamijeniti sljedeći redak VBA koda: Target.Value = Oldvalue & "," & Newvalue ovim retkom VBA koda: Target.Value = Oldvalue & "" & Newvalue Slično, ako želite promijeniti zarez drugim znakom, na primjer |, možete koristiti sljedeći redak koda: Target.Value = Oldvalue & "|" & Newvalue
P: Mogu li svaki odabir dobiti u zasebnom retku u istoj ćeliji? Odgovor: Da, možete. Da biste to postigli, trebate zamijeniti donji redak VBA koda: Target.Value = Oldvalue & "," & Newvalue ovim retkom koda: Target.Value = Oldvalue & vbNewLine & Newvalue vbNewLine ubacuje novi redak u istu ćeliju . Dakle, kad god odaberete odabir s padajućeg izbornika, bit će umetnut u novi redak.
P: Mogu li učiniti da funkcija višestrukog odabira radi na zaštićenom listu? Odgovor: Da, možete. Da biste to učinili, morate učiniti dvije stvari: Dodajte sljedeći redak u kôd (odmah nakon DIM izraza): Ja.Protect UserInterfaceOnly: = Istina Drugo, morate biti sigurni da ćelije - koje imaju padajući izbornik s višestrukim odabirom - nisu zaključane kada štitite cijeli list. Evo vodiča kako to učiniti: Zaključajte ćelije u Excelu 

Vi ćete pomoći u razvoju web stranice, dijeljenje stranicu sa svojim prijateljima

wave wave wave wave wave