VBA - Κατάργηση διπλότυπων από τον πίνακα

Πίνακας περιεχομένων

Αυτό το σεμινάριο θα σας διδάξει πώς να αφαιρέσετε διπλότυπα από έναν πίνακα στο VBA.

Κατάργηση διπλότυπων

Ο ευκολότερος τρόπος για να αφαιρέσετε διπλότυπα από έναν πίνακα VBA είναι να αντιστοιχίσετε τις τιμές του πίνακα σε μια συλλογή VBA και, στη συνέχεια, να τις μεταφέρετε πίσω σε έναν πίνακα. Οι συλλογές δεν επιτρέπουν διπλές τιμές και επομένως χρησιμοποιώντας μια Συλλογή, μπορούμε να αφαιρέσουμε διπλότυπα από έναν πίνακα. Δημιουργήσαμε μια συνάρτηση για την εκτέλεση αυτής της εργασίας:

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 Λειτουργία ArrayRemoveDups (MyArray As Variant) Ως ΠαραλλαγήDim nΠρώτα όσο, nΤέλος όσο, i τόσο καιρόDim στοιχείο ως συμβολοσειράDim arrTemp () Ως συμβολοσειράDim Coll As New Collection«Λάβετε θέσεις πρώτου και τελευταίου πίνακαnFirst = LBound (MyArray)nLast = UBound (MyArray)ReDim arrTemp (nFirst To nLast)«Μετατροπή πίνακα σε συμβολοσειράΓια i = nΠρώτα προς nLastarrTemp (i) = CStr (MyArray (i))Επόμενο i«Συμπλήρωση προσωρινής συλλογήςΣτο Σφάλμα Συνέχιση ΕπόμενοΓια i = nΠρώτα προς nLastColl. Προσθήκη arrTemp (i), arrTemp (i)Επόμενο iErr.ClearΣφάλμα GoTo 0'Αλλαγή μεγέθους πίνακαnLast = Coll.Count + nΠρώτα - 1ReDim arrTemp (nFirst To nLast)'Populate ArrayΓια i = nΠρώτα προς nLastarrTemp (i) = Coll (i - nΠρώτο + 1)Επόμενο i'Πίνακας εξόδουArrayRemoveDups = arrTempΛειτουργία ΤέλουςSub ArrTest ()Dim strNames (1 έως 4) As StringΧαμηλή έξοδοςArray () As StringDim i As LongDim στοιχείο ως παραλλαγή«Ορίστε τιμές αρχικού πίνακαstrNames (1) = "Shelly"strNames (2) = "Steve"strNames (3) = "Neema"strNames (4) = "Steve"'Call Dup FunctionoutputArray = ArrayRemoveDups (strNames)Τιμές εξόδου στο άμεσο παράθυρο (CTRL + G)Για κάθε στοιχείο στο outputArrayΣφάλμα. Στοιχείο εκτύπωσηςΕπόμενο στοιχείοΤέλος υπο

Σημείωση: Στο παράδειγμα αναγκάσαμε τον πίνακα μας να ξεκινήσει από το 1 (όχι το 0). Εάν ο πίνακας ξεκινά από το 0, θα πρέπει να τροποποιήσετε ελαφρώς τον κώδικα.

Παρατηρήστε ότι μετατρέπουμε τα περιεχόμενα του πίνακα σε συμβολοσειρά. Εάν είναι απαραίτητο, μπορείτε να μετατρέψετε τις συμβολοσειρές ξανά σε ακέραιους αριθμούς μετά την ολοκλήρωση της διαδικασίας.

wave wave wave wave wave