Ez az oktatóanyag megtanítja, hogyan kell tömböt feltölteni egyedi értékekkel a VBA oszlopából.
Töltse fel a tömböt egyedi értékekkel az oszlopból
Az értékek listájának Excel -lapról tömbbe történő felvétele az Excel soraiban való ciklus és a tömb kitöltése.
Tekintsük a következő ügyfelek listáját egy Excel -lapon.
Egy ciklus segítségével betölthetünk egy tömböt a VBA -ban. Azonban egy szabványos hurok végigmegy minden soron, beleértve az ismétlődő sorokat is, és végül ismétlődő értékeket kap a tömbjében.
A megoldás a cellák közötti ciklushoz és a gyűjteményobjektum gyűjtőobjektumként való feltöltéséhez nem engedélyezi az ismétlődéseket. Ezt a gyűjteményobjektumot használhatja a tömb feltöltésére.
1234567891011121314151617181920212223242526 | Sub populateUniqueArray ()Dim StrCustomers () karakterlánckéntDim Col As New CollectionDim valCell mint karakterláncDim i As IntegerDim n Mint egész'számolja meg a tartomány soraitn = Tartomány ("A1", Tartomány ("A1"). Vége (xlDown)). Sorok. Szám'Ideiglenes gyűjtemény feltöltéseHiba esetén Folytassa a következőtI = 0 -tól n -igvalCell = Tartomány ("A1"). Eltolás (i, 0). ÉrtékCol.Add valCell, valCellKövetkező iHiba. VilágosGoTo 0 hiba esetén'Átméretezés nn = oszlopszám'Redeclare tömbReDim StrCustomers (1 -től n -ig)'Töltse fel a tömböt a gyűjtemény áttekintésévelI = 1 oszlopszámhozStrCustomers (i) = Col (i)Következő iHibakeresés. Nyomtatási csatlakozás (StrCustomers (), vbCrLf)End Sub |
Tömb feltöltése egyedi értékekkel - Funkció
A fenti példa egy olyan eljárást mutatott be, amely végrehajtja a kívánt műveleteket. De ehelyett inkább a hordozható funkciót választja a feladat végrehajtásához:
123456789101112131415161718192021222324 | Funkció CreateUniqueList (nStart as Long, nEnd as long) mint VariantDim Col As New CollectionHomályos arrTemp() Mint HúrDim valCell mint karakterláncDim i As Integer'Ideiglenes gyűjtemény feltöltéseHiba esetén Folytassa a következőtAz i = 0 végéigvalCell = Tartomány ("A" & nStart). Eltolás (i, 0). ÉrtékCol.Add valCell, valCellKövetkező iHiba. VilágosGoTo 0 hiba esetén'Átméretezés nnEnd = oszlopszám'Redeclare tömbReDim arrTemp(1 -től a végéig)'Töltse ki az ideiglenes tömböt a gyűjtemény ciklusávalI = 1 oszlopszámhozarrTemp(i) = (i) oszlopKövetkező i'visszaadja az ideiglenes tömböt a függvény eredményéhezCreateUniqueList = arrTemp()Vége funkció |
A funkció használatához meg kell hívnia egy alfolyamatból:
123456789 | Sub PopulateArray ()Dim StrCustomers () karakterlánckéntDim strCol gyűjteménykéntDim n Olyan hosszú'számolja meg a tartomány soraitn = Tartomány ("A1", Tartomány ("A1"). Vége (xlDown)). Sorok. Szám'futtassa a függvényt egyedi értékek tömbjének létrehozásáhozstrCustomers () = CreateUniqueList (1, n)End Sub |