Satura rādītājs
Atkarībā no apstākļiem jums var būt nepieciešams nolaižamajā sarakstā atlasīt vairākas vērtības. Šajā pamācībā mēs parādīsim, kā veikt vairākkārtēju atlasi nolaižamajā sarakstā. Šajā sesijā mēs izmantojam Excel 2019, varat brīvi izmantot vēlamo versiju.
Pirms pievērsties sesijai, iepazīsimies ar datu kopu, kas ir mūsu piemēru pamatā.
Šeit mums ir vairāki kancelejas elementi, izmantojot tos, mēs izveidosim nolaižamo sarakstu un tajā izvēlēsimies vairākus elementus.
Ņemiet vērā, ka šī ir vienkārša datu kopa, lai viss būtu vienkārši. Praktiskā scenārijā var nākties saskarties ar daudz lielāku un sarežģītāku datu kopu.
Prakses darba burtnīca
Jūs varat lejupielādēt prakses darba burtnīcu, izmantojot tālāk norādīto saiti.
Veikt vairākkārtēju atlasi no nolaižamā saraksta.xlsm
Vairākkārtēja atlase nolaižamajā sarakstā
Vispirms mums ir jāizveido nolaižamais saraksts, pamatojoties uz mūsu stacionārajiem materiāliem. Izveidosim to ātri. Nevilcinieties apmeklēt rakstu par nolaižamā saraksta izveidi.
In the Datu validēšana dialoglodziņā izvēlieties SARAKSTS datu tipu un ievietojiet elementu šūnu diapazonu.
B4:B11 ir diapazons, kurā atrodas kancelejas elementi. Tagad ir pieejams izlaižamais saraksts.
Lasīt vairāk: Excel izlaižamais saraksts atkarībā no atlases
1. Atlasiet vairākus vienumus (ļauj dublēt atlasi)
Parastajā nolaižamajā sarakstā vienmēr tiek atlasīts viens vienīgais vienums. Šeit redzat, ka mēs esam atlasījuši. Pildspalva no saraksta (attēls zemāk).
Tagad, ja mēs izvēlamies citu elementu, teiksim. Zīmulis
tad tas aizstās iepriekšējo vērtību. Tikai Zīmulis paliks atlasīts.
Lai atlasītu vairākus vienumus, mums ir jāizmanto VBA kods. Atveriet Microsoft Visual Basic lietojumprogrammām logs (nospiediet ALT + F11 lai to atvērtu).
Tagad divreiz noklikšķiniet uz darblapas nosaukuma vai numura, kurā nolaižamajā sarakstā vēlaties atlasīt vairākus vienumus. Atvērsies šīs konkrētās lapas koda logs.
Šeit ir redzams koda logs 2 lapa mūsu darbgrāmatā (šajā lapā ir izlaižamais saraksts).
Kad ir atvērts koda logs, ievietojiet tajā šādu kodu
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
Saglabājiet kodu un tagad mēģiniet atlasīt vērtības nolaižamajā sarakstā.
Pēc atlases Zīmulis , mēs izvēlamies citu objektu Piezīmjdators . Un, kā redzat, mēs atradām abus priekšmetus (attēls zemāk).
Šis kods ļaus mums atkārtot atlasi. Teiksim, ja mēs izvēlamies Zīmulis atkal,
atlases lodziņā atkal atradīsim šo elementu.
Koda skaidrojums
Mēs esam deklarējuši divas virknes Vecā vērtība un Newvalue .
Varat redzēt, ka mēs izveidojām nolaižamo sarakstu D4 šūna, tāpēc mūsu mērķa adrese ir D4 . Turklāt mēs esam atkārtoti pārbaudījuši, vai šūnā tiek vai netiek izmantota datu validācija, izmantojot Target.SpecialCells .
Kad vērtība ir izvēlēta, mēs izslēdzam notikumus ( Application.EnableEvents = False
), lai izmaiņas neizraisītu notikumu vēlreiz. Pēc tam saglabājiet atlasīto elementu kontā Newvalue .
Pēc izmaiņu atcelšanas mēs esam iestatījuši vērtību uz Vecā vērtība Tad pārbaudiet, vai Vecā vērtība ir vai nav tukša. Ja ir tukša (tas nozīmē, ka ir atlasīta tikai viena vērtība), tad atgriež Newvalue . Pretējā gadījumā apvienojiet Vecā vērtība un Newvalue .
Pirms beigām atiestatīt notikumu, lai mēs varētu mainīt, ja nepieciešams.
Lasīt vairāk: Vairāki atkarīgie nolaižamie saraksti Excel VBA
2. Izvēlieties vairākus elementus no nolaižamajā sarakstā (tikai unikāla izvēle)
Iepriekšējā sadaļā mēs redzējām vairākas atlases, kurās bija atļauta atkārtošana. Ja to nevēlaties, izpildiet šo sadaļu.
Ērtības labad mēs šim demonstrējumam izmantojām atsevišķu lapu. Šoreiz mēs atrodamies 3. lapā. Šīs lapas koda logā ierakstiet šādu kodu.
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 End If Application.EnableEvents = True Exitsub: Application.EnableEvents = True End Sub
Vai ir kāda atšķirība salīdzinājumā ar iepriekšējo kodu! Aplūkojiet to tuvāk, jūs varēsiet pamanīt nelielu atšķirību.
Šeit mēs esam izmantojuši VBA funkcija ar nosaukumu INSTR . INSTR funkcija atgriež virknes apakšvirknes pirmā atkārtojuma pozīciju rindā. Lai iegūtu plašāku informāciju, apmeklējiet šo INSTR rakstu.
Izmantojot šo loģisko operāciju ar InStr(1, Oldvalue, Newvalue) = 0, mēs esam pārbaudījuši, vai vērtības ir atrastas vai nē. Ja loģiskā operācija atdod. TRUE (iepriekš nav atrasts), tad tas ļauj atlasīt elementu un savienot to ar iepriekšējo vērtību.
Saglabājiet kodu un tagad mēģiniet atlasīt elementu, kas jau ir atlasīts.
Šeit mēs jau esam izvēlējušies Zīmulis Ja vēlamies to atlasīt vēlreiz, to nevaram izdarīt, jo nav atļauts dublēt vērtības.
Lasīt vairāk: Kā izveidot nolaižamo sarakstu no citas lapas programmā Excel
3. Atlasiet vienumus jaunā rindkopā
Līdz šim esam konstatējuši, ka vienumus atdala komats. Šajā sadaļā atlasītos vienumus sakārtosim ar jaunām rindiņām.
Vienkāršības labad mēs apvienojam dažas šūnas ar D4 šūnas. Lai to izdarītu, atlasiet šūnas, kuras vēlaties apvienot, un noklikšķiniet uz Apvienot & amp; Centrs no Saskaņošana sadaļā Sākums cilne.
Šūna iegūs lielāku augstumu.
Tagad aplūkosim kodu, kas paredzēts elementu atdalīšanai ar jauno rindkopas līniju. Izmantojiet šādu kodu
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
Vienīgā atšķirība no iepriekšējā koda ir tā, ka šoreiz mēs izmantojām vbNewLine starp OldValue un NewValue .
vbNewLine nodrošina jaunu rindu starp vienumiem.
Tagad atlasiet vienumus.
Mēs izvēlamies objektu Pildspalva kas redzams attēlā iepriekš. Tagad izvēlieties citu elementu.
Jūs redzēsiet, ka abas preces ir dažādās rindās.
Šeit ir divas vērtības, kas atrodas divās dažādās rindās. Izvēloties citu vērtību, tā tiks pievienota citai rindai. Katra vērtība būs jaunā rindā.
Ņemiet vērā, ka, ja vēlaties, lai elementus atdalītu cits norobežotājs, izmantojiet to dubultiekavītēs, nevis vbNewline .
Secinājums
Uz šodienu tas ir viss. Mēs esam uzskaitījuši vairākas pieejas, kā veikt vairākas izvēles nolaižamajā sarakstā. Ceru, ka tas jums būs noderīgi. Ja jums šķiet, ka kaut kas ir grūti saprotams, lūdzu, komentējiet. Dariet mums zināmas citas metodes, kuras mēs šeit neesam izmantojuši.