Как да направите множествена селекция от падащ списък в Excel (3 начина) -

  • Споделя Това
Hugh West

В зависимост от обстоятелствата може да ви се наложи да изберете няколко стойности в падащ списък. В този урок ще ви покажем как да направите многократна селекция в падащ списък. За тази сесия използваме Excel 2019, не се колебайте да използвате предпочитаната от вас версия.

Преди да се потопим в сесията, нека се запознаем с набора от данни, който е в основата на нашите примери.

Тук имаме няколко канцеларски елемента, с помощта на които ще създадем падащ списък и ще изберем няколко елемента в него.

Обърнете внимание, че това е проста съвкупност от данни, за да не се затруднявате. В практиката може да се сблъскате с много по-голяма и сложна съвкупност от данни.

Практическа работна тетрадка

Можете да изтеглите работната тетрадка за упражнения от връзката по-долу.

Направете множествена селекция от падащ списък.xlsm

Многократно избиране в падащ списък

Преди всичко трябва да създадем падащ списък въз основа на нашите канцеларии. Нека го създадем бързо. Не се колебайте да посетите статията относно създаването на падащ списък.

В Утвърждаване на данните в диалоговия прозорец изберете СПИСЪК тип данни и вмъкнете обхвата на клетките на елементите.

B4:B11 е обхватът, в който се намират елементите на канцеларските материали. Сега ще намерите падащия списък.

Прочетете повече: Списък с падащи списъци в Excel в зависимост от избора

1. Изберете няколко елемента (позволява дублиране на избора)

В обикновения падащ списък винаги се избира един елемент. Тук виждате, че сме избрали Перо от списъка (изображението по-долу).

Сега, ако изберем друг елемент, да речем Молив

тогава тя ще замени предишната стойност. Молив ще остане избран.

За да изберете няколко елемента, трябва да използвате VBA код. Отворете Microsoft Visual Basic за приложения прозорец (натиснете ALT + F11 за да го отворите).

Сега щракнете двукратно върху името или номера на работния лист, в който искате да изберете няколко елемента в падащия списък. Ще намерите прозореца с кода за този конкретен лист.

Тук е прозорецът с код за Лист2 в нашата работна книга (падащият списък е в този лист).

След като прозорецът с кода е отворен, въведете следния код в него

 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 

Запазете кода и сега се опитайте да изберете стойности в падащия списък.

След като сте избрали Молив , ще изберем друг елемент Бележник . И можете да видите, че намерихме и двата елемента (изображението по-долу).

Този код ще ни позволи да повторим избора. Да кажем, че ако изберем Молив отново,

ще намерим елемента отново в полето за избор.

Обяснение на кода

Декларирахме два низа Oldvalue и Newvalue .

Можете да видите, че сме направили падащия списък в D4 клетка, затова нашият целеви адрес е D4 . Освен това проверихме отново дали клетката използва валидиране на данни или не, като използвахме Target.SpecialCells .

След като е избрана стойност, изключваме събитията ( Application.EnableEvents = False ), така че промените да не задействат събитието отново. След това съхранете избрания елемент в Newvalue .

След като отменим промяната, сме задали стойността в Oldvalue . След това проверете дали Oldvalue е празна или не. Ако е празна (означава, че е избрана само една стойност), връща се Newvalue . В противен случай конкатенирайте Oldvalue и Newvalue .

Преди да приключите, нулирайте събитието, за да можете да го промените, ако е необходимо.

Прочетете повече: Множество зависими падащи списъци Excel VBA

2. Избиране на няколко елемента от падащия списък (само уникална селекция)

В предишния раздел видяхме многократните селекции, при които повторението е разрешено. Ако не искате това, следвайте този раздел.

За удобство използвахме отделен лист за тази демонстрация. Този път се намираме в лист 3. Напишете следния код в прозореца за код на този лист.

 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 

Има ли някаква разлика в сравнение с по-ранния код! Погледнете по-внимателно и ще можете да забележите малката разлика.

Тук сме използвали VBA функция, наречена INSTR . INSTR Функцията връща позицията на първото появяване на подниз в низ. За повече информация посетете тази статия INSTR.

Използвайки тази логическа операция с InStr(1, Oldvalue, Newvalue) = 0, проверихме дали стойностите са намерени или не. Ако логическата операция върне TRUE (не е намерена по-рано), тогава се позволява да се избере елементът и да се събере с по-ранната стойност.

Запазете кода и сега се опитайте да изберете елемент, който вече е бил избран.

Тук вече сме избрали Молив , ако искаме да изберем това отново, не можем. Не се допускат дублиращи се стойности.

Прочетете повече: Как да създадете падащ списък от друг лист в Excel

3. Изберете елементите в Newline

Досега установихме, че елементите са разделени със запетая. В този раздел ще подредим избраните елементи в нови редове.

За по-голяма простота обединяваме няколко клетки с D4 За да направите това, изберете клетките, които искате да обедините, и щракнете върху Сливане & Център от Изравняване раздел на Начало таб.

Клетката ще набере по-голяма височина.

Сега нека разгледаме кода за разделяне на елементи чрез нов ред. Използвайте следния код

 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 

Единствената разлика от предишния код е, че този път използваме vbNewLine между тях OldValue и NewValue .

vbNewLine осигурява нов ред между елементите.

Сега изберете елементите.

Избираме елемент Перо който е показан на изображението по-горе. Сега изберете друг елемент.

Ще откриете, че двата елемента са в различни редове.

Тук имаме две стойности, които са в два различни реда. Избирането на друга стойност ще я добави към друг ред. Всяка стойност ще бъде в нов ред.

Обърнете внимание, че ако искате друг разделител за разделяне на елементите, използвайте го в двойни кавички вместо vbNewline .

Заключение

Това е всичко за днес. Изброихме няколко подхода за извършване на многократни избори в падащ списък. Надявам се, че това ще ви бъде полезно. Не се колебайте да коментирате, ако нещо ви се струва трудно за разбиране. Споделете с нас други методи, които сме пропуснали тук.

Хю Уест е опитен обучител и анализатор на Excel с над 10 години опит в индустрията. Има бакалавърска степен по счетоводство и финанси и магистърска степен по бизнес администрация. Хю има страст към преподаването и е разработил уникален подход на преподаване, който е лесен за следване и разбиране. Неговите експертни познания по Excel са помогнали на хиляди студенти и професионалисти по целия свят да подобрят уменията си и да постигнат отлични резултати в кариерата си. Чрез своя блог Хю споделя знанията си със света, като предлага безплатни уроци за Excel и онлайн обучение, за да помогне на хората и фирмите да достигнат пълния си потенциал.