Σε περίπτωση που αναρωτιέστε πώς να συγκρίνετε 2 στήλες δεδομένων με σειρές σε εκατομμύρια και να εξαγάγετε τις μοναδικές τιμές και στις δύο στήλες, θα πρέπει να διαβάσετε αυτό το άρθρο. Θα χρησιμοποιήσουμε τον κώδικα VBA για να συγκρίνουμε δύο στήλες δεδομένων και θα δείξουμε τη διαφορά στις επόμενες δύο στήλες.
Ερώτηση: Υπάρχουν πολλές τιμές που υπάρχουν στις στήλες Α & Β. Θέλω μια μακροεντολή να ελέγξει περισσότερες από 40 χιλιάδες σειρές δεδομένων και στις δύο στήλες και στη συνέχεια να εξάγει τη λίστα των μοναδικών καταχωρήσεων από κάθε στήλη στην επόμενη στήλη, δηλαδή τις στήλες C & D αντίστοιχα. Σε αυτό το παράδειγμα, παίρνω μόνο 40 σειρές δειγμάτων δεδομένων.
Μπορείτε να βρείτε την αρχική ερώτηση εδώ
Ακολουθεί το στιγμιότυπο δεδομένων:
Για να συγκρίνουμε τη λίστα δύο στηλών, πρέπει να ακολουθήσουμε τα παρακάτω βήματα για να ξεκινήσουμε τον επεξεργαστή VB:
- Κάντε κλικ στην καρτέλα Προγραμματιστής
- Από την ομάδα κώδικα επιλέξτε Visual Basic
- Αντιγράψτε τον παρακάτω κώδικα στην τυπική μονάδα
Sub PullUniques () Dim rngCell As Range For Every rngCell In Range ("A2: A40") If WorksheetFunction.CountIf (Range ("B2: B40"), rngCell) = 0 Στη συνέχεια Range ("C" & Rows.Count). Τέλος (xlUp). Offset (1) = rngCell End If Next Για κάθε rngCell In Range ("B2: B40") If WorksheetFunction.CountIf (Range ("A2: A40"), rngCell) = 0 Στη συνέχεια Range ("D" & Rows.Count). End (xlUp). Offset (1) = rng Τελείωμα κυττάρου εάν επόμενο τέλος
- Η παραπάνω μακροεντολή είναι έτοιμη για εκτέλεση. είτε μπορούμε να πατήσουμε το πλήκτρο F5 -αν βρίσκεστε αυτήν τη στιγμή στην οθόνη του Visual Basic Editor -ή μπορούμε να χρησιμοποιήσουμε πλήκτρα συντόμευσης «ALT + F8», επιλέξτε τη μακροεντολή σας και κάντε κλικ στο κουμπί εκτέλεσης
- Η μοναδική λίστα από τις στήλες Α & Β θα δημιουργηθεί αυτόματα στις στήλες Γ & Δ
Επεξήγηση κώδικα:
Στον παραπάνω κώδικα, θα χρησιμοποιήσουμε τη συνάρτηση IF μαζί με το βρόχο For για να έχουμε το αποτέλεσμα.
- Δηλώνουμε Dim rngCell As Range. ο σκοπός της δήλωσης του rngCell ως εύρους είναι ότι θέλουμε να εκχωρήσουμε το δείγμα εύρους "A2: A40" με ένα συγκεκριμένο όνομα, δηλαδή "rngCell" στο παράδειγμά μας
- Για κάθε rngCell In Range ("A2: A40"); θα ελέγξουμε για κάθε κελί στο "rngCell" με μια συνθήκη
- Εάν WorksheetFunction.CountIf (Εύρος ("B2: B40"), rngCell) = 0 Τότε; αυτή η γραμμή κώδικα χρησιμοποιεί τη συνάρτηση COUNTIF VBA για να ελέγξει το εύρος κριτηρίων B2: B40 με κριτήρια rngCell είναι ίσο με μηδέν, στη συνέχεια στη στήλη C, η τιμή που αποθηκεύεται στο rngCell θα αποθηκευτεί
- Ομοίως, θα εκτελέσουμε Για κάθε βρόχο για τη στήλη Β & θα εξάγουμε τις μοναδικές τιμές στη στήλη Δ
Συμπέρασμα: Μπορούμε να λάβουμε τη μοναδική λίστα κειμένου ή τιμών από κάθε στήλη. το όνομα κεφαλίδας της στήλης C (Αποτελέσματα - Υπάρχει στη Λίστα 1 αλλά όχι στη Λίστα 2) & στήλη Δ (Αποτελέσματα - Υπάρχει στη Λίστα 2 αλλά όχι στη Λίστα 1). Σε περίπτωση που έχουμε παρόμοια απαίτηση αλλά ο αριθμός των στηλών είναι πάνω από δύο τότε πρέπει να τροποποιήσουμε τον κώδικα για να έχουμε το αποτέλεσμα.
Αν σας άρεσαν τα ιστολόγια μας, μοιραστείτε το με τους φίλους σας στο Facebook. Επίσης, μπορείτε να μας ακολουθήσετε στο Twitter και το Facebook.
Θα θέλαμε πολύ να σας ακούσουμε, ενημερώστε μας πώς μπορούμε να βελτιώσουμε, να συμπληρώσουμε ή να καινοτομήσουμε το έργο μας και να το κάνουμε καλύτερο για εσάς. Γράψτε μας στο ιστοσελίδα email