Αυτό το σεμινάριο θα σας διδάξει πώς να συμπληρώσετε έναν πίνακα με μοναδικές τιμές από μια στήλη στο VBA.
Συμπληρώστε πίνακα με μοναδικές τιμές από τη στήλη
Η λήψη μιας λίστας τιμών από ένα φύλλο Excel σε έναν πίνακα είναι ένα θέμα περιήγησης στις γραμμές στο Excel και συμπλήρωσης του πίνακα.
Εξετάστε την ακόλουθη λίστα πελατών σε ένα φύλλο Excel.
Χρησιμοποιώντας ένα βρόχο, θα μπορούσαμε να συμπληρώσουμε έναν πίνακα στο VBA. Ωστόσο, ένας τυπικός βρόχος θα κάνει βρόχο σε κάθε γραμμή, συμπεριλαμβανομένων των διπλών σειρών και θα καταλήξετε με διπλές τιμές στον πίνακα σας.
Η λύση για να κάνετε βρόχο στα κελιά και να συμπληρώσετε ένα αντικείμενο συλλογής με τις τιμές ως αντικείμενο συλλογής δεν θα επιτρέψει διπλότυπα. Στη συνέχεια, μπορείτε να χρησιμοποιήσετε αυτό το αντικείμενο συλλογής για να συμπληρώσετε τον πίνακα σας.
1234567891011121314151617181920212223242526 | Sub PopulateUniqueArray ()Dim StrCustomers () As StringDim Col As New CollectionDim valCell As StringDim i As IntegerDim n ως ακέραιος«μετρήστε τις σειρές στο εύροςn = Range ("A1", Range ("A1"). End (xlDown)). Rows.Count«Συμπλήρωση προσωρινής συλλογήςΣτο Σφάλμα Συνέχιση ΕπόμενοΓια i = 0 έως nvalCell = Εύρος ("A1"). Offset (i, 0). ΑξίαCol.Add valCell, valCellΕπόμενο iErr.ClearΣφάλμα GoTo 0'Αλλαγή μεγέθους nn = Col.Count«Αναδημοσίευση συστοιχίαςReDim StrCustomers (1 έως n)"Συμπληρώστε πίνακα κάνοντας αναζήτηση στη συλλογήΓια i = 1 προς Col.CountStrCustomers (i) = Col (i)Επόμενο iDebug.Print Join (StrCustomers (), vbCrLf)Τέλος υπο |
Συμπληρώστε πίνακα με μοναδικές τιμές - Λειτουργία
Το παραπάνω παράδειγμα έδειξε μια διαδικασία που θα εκτελούσε τις επιθυμητές ενέργειές σας. Αλλά αντί να προτιμήσετε μια φορητή συνάρτηση για να εκτελέσετε την εργασία:
123456789101112131415161718192021222324 | Συνάρτηση CreateUniqueList (nStart τόσο Long, nEnd όσο καιρό) ως VariantDim Col As New CollectionΑμυδρός arrTemp() Οπως και ΣειράDim valCell As StringDim i As Integer«Συμπλήρωση προσωρινής συλλογήςΣτο Σφάλμα Συνέχιση ΕπόμενοΓια i = 0 έως nEndvalCell = Range ("A" & nStart). Offset (i, 0). ValueCol.Add valCell, valCellΕπόμενο iErr.ClearΣφάλμα GoTo 0'Αλλαγή μεγέθους nnEnd = Col.Count«Αναδημοσίευση συστοιχίαςReDim arrTemp(1 έως τέλος)"Συμπληρώστε προσωρινό πίνακα κάνοντας βρόχο στη συλλογήΓια i = 1 προς Col.CountarrTemp(i) = Col (i)Επόμενο i'Επιστρέψτε τον προσωρινό πίνακα στο αποτέλεσμα συνάρτησηςCreateUniqueList = arrTemp()Λειτουργία Τέλους |
Για να χρησιμοποιήσετε τη συνάρτηση, θα πρέπει να την καλέσετε από μια υποδιαδικασία:
123456789 | Sub PopulateArray ()Dim StrCustomers () As StringDim strCol ως ΣυλλογήDim n As Long«μετρήστε τις σειρές στο εύροςn = Range ("A1", Range ("A1"). End (xlDown)). Rows.Count"εκτελέστε τη συνάρτηση για να δημιουργήσετε μια σειρά από μοναδικές τιμέςstrCustomers () = CreateUniqueList (1, n)Τέλος υπο |