Vyplňte pole zoznamu jedinečnými hodnotami z pracovného hárka pomocou jazyka VBA v programe Microsoft Excel

Anonim

V tomto článku vytvoríme pole Zoznam v užívateľskej forme a načítame ho s hodnotami po odstránení duplicitných hodnôt.

Surové údaje, ktoré vložíme do poľa Zoznam, sa skladajú z mien. Tieto nespracované údaje obsahujú duplicitu v definovaných názvoch.

V tomto prípade sme vytvorili užívateľský formulár, ktorý pozostáva zo zoznamu. Toto pole so zoznamom zobrazí jedinečné názvy zo vzorových údajov. Užívateľský formulár aktivujete kliknutím na tlačidlo Odoslať.

Tento užívateľský formulár vráti meno zvolené užívateľom ako výstup v okne so správou.

Logické vysvetlenie

Pred pridaním mien do poľa Zoznam sme pomocou objektu kolekcie odstránili duplicitné názvy.

Na odstránenie duplicitných záznamov sme vykonali nasledujúce kroky:-

  1. Do objektu zbierky boli pridané názvy z definovaného rozsahu v hárku programu Excel. Do objektu kolekcie nemôžeme vložiť duplicitné hodnoty. Objekt Collection teda vyvoláva chybu pri narazení na duplicitné hodnoty. Na spracovanie chýb sme použili chybové hlásenie „Pri chybe Pokračovať ďalej“.

  2. Po príprave zbierky pridajte všetky položky zo zbierky do poľa.

  3. Potom vložte všetky prvky poľa do zoznamu.

Pri kódovaní postupujte podľa nižšie uvedených pokynov

 Možnosť Explicitná čiastková spustená () UserForm1. Zobraziť koncovú podkapitolu 'Pridať pod kód do užívateľského formulára Možnosť Explicitná súkromná podradená CommandButton1_Click () Dim var1 ako reťazec Dim i ako celé číslo' Opakovanie všetkých hodnôt prítomných v poli so zoznamom 'Priradenie vybratej hodnoty k premennej var1 For i = 0 To ListBox1.ListCount - 1 If ListBox1.Selected (i) Then var1 = ListBox1.List (i) Exit For End If Next 'Unload the userform. Unload Me 'Zobrazenie zvolenej hodnoty MsgBox "V zozname ste vybrali nasledujúce meno:" & var1 End Sub Private Sub UserForm_Initialize () Dim MyUniqueList As Variant, i As Long' Calling UniqueItemList function 'Assigning the range as input parameter MyUniqueList = UniqueItemList (Range ("A12: A100"), True) With Me.ListBox1 'Clearing the List Box content .Clear' Pridanie hodnôt do zoznamu pre i = 1 do UBound (MyUniqueList) .AddItem MyUniqueList (i) Ďalej i ' Výber prvej položky .ListIndex = 0 Koniec s koncovou podradenou súkromnou funkciou UniqueItemList (rozsah vstupu ako rozsah, _ horizontálny zoznam ako booleovský) ako variant dim dim ako rozsah, c unique ako nová kolekcia, i tak dlho 'deklarovanie dynamického poľa Dim uList () As Variant „Vyhlásenie tejto funkcie za prchavú“ Funkcia znamená, že bude prepočítaná vždy, keď dôjde k výpočtu v ľubovoľnej bunkovej aplikácii. Prchavý pri chybe Pokračovať ďalej „Pridávanie položiek do zbierky“ Vloží sa iba jedinečná položka „Vloženie duplicitnej položky spôsobí chybu pre každú cl In InputRange If cl.Value "" Then 'Pridávanie hodnôt do zbierky cUnique.Add cl.Value, CStr (cl.Value) End If Next cl' Inicializácia hodnoty návratná funkciou UniqueItemList = "" If cUnique.Count> 0 Then „Zmena veľkosti poľa ReDim uList (1 na cUnique.Count)“ Vkladanie hodnôt zo zbierky do poľa Pre i = 1 do cUnique.Count uList (i) = cUnique (i) Ďalej i UniqueItemList = uList „Kontrola hodnoty HorizontalList“ Ak je hodnota pravdivá, transponuje sa hodnota UniqueItemList, ak nie HorizontalList, potom UniqueItemList = _ Application.WorksheetFunction.Transpose (UniqueItemList) End If End If On Error GoTo 0 End Function 

Ak sa vám tento blog páčil, zdieľajte ho so svojimi priateľmi na Facebooku. Môžete nás tiež sledovať na Twitteri a Facebooku.

Budeme radi, ak sa nám ozvete, dajte nám vedieť, ako môžeme zlepšiť našu prácu a zlepšiť ju pre vás. Napíšte nám na emailovú stránku