Excel VBA: Πώς να φιλτράρετε με πολλαπλά κριτήρια σε συστοιχία (7 τρόποι)

  • Μοιραστείτε Αυτό
Hugh West

Αν ψάχνετε τρόπους για να φίλτρο με πίνακα πολλαπλών κριτηρίων στο Excel VBA Το φιλτράρισμα ενός μεγάλου συνόλου δεδομένων με βάση πολλαπλά κριτήρια μπορεί να γίνει ευκολότερο με τη βοήθεια του VBA κωδικούς αντί για τη χρήση της συμβατικής λειτουργίας του Excel.

Ας ξεκινήσουμε λοιπόν το κύριο άρθρο μας.

Λήψη βιβλίου εργασίας

Φίλτρο με πολλαπλά κριτήρια.xlsm

7 τρόποι για να φιλτράρετε με πολλαπλά κριτήρια σε συστοιχία χρησιμοποιώντας το Excel VBA

Στο παρακάτω σύνολο δεδομένων, έχουμε κάποιες εγγραφές βαθμών που αντιστοιχούν στο όνομα των μαθητών και στα id τους. Θα προσπαθήσουμε να φιλτράρουμε αυτό το σύνολο δεδομένων με βάση διάφορα κριτήρια ως πίνακα χρησιμοποιώντας κάποιους κωδικούς.

Έχουμε χρησιμοποιήσει Microsoft Excel 365 έκδοση εδώ, μπορείτε να χρησιμοποιήσετε οποιεσδήποτε άλλες εκδόσεις ανάλογα με την ευκολία σας.

Μέθοδος-1: Φίλτρο με πολλαπλά κριτήρια ως κείμενα σε συστοιχία

Εδώ, θα προσπαθήσουμε να φιλτράρουμε το ακόλουθο σύνολο δεδομένων με βάση το Όνομα μαθητή στήλη για πολλαπλά κριτήρια που περιέχουν τις συμβολοσειρές Emily , Daniel , και Gabriel σε έναν πίνακα.

Βήμα-01 :

➤ Πηγαίνετε στο Προγραμματιστής Καρτέλα>>, Visual Basic Επιλογή.

Στη συνέχεια, το Visual Basic Editor θα ανοίξει.

➤ Πηγαίνετε στο Εισαγωγή Καρτέλα>>, Ενότητα Επιλογή.

Μετά από αυτό, ένα Ενότητα θα δημιουργηθεί.

Βήμα-02 :

➤ Γράψτε τον ακόλουθο κώδικα

 Sub filter_with_array_as_criteria_1() ActiveSheet.Range("B3:D3").AutoFilter Field:=2, _ Operator:=xlFilterValues, Criteria1:=Array("Emily", "Daniel", "Gabriel") End Sub 

Εδώ, δηλώσαμε τα ονόματα των επικεφαλίδων στο εύρος B3:D3 στην οποία θα εφαρμόσουμε το φίλτρο και Πεδίο:=2 είναι ο αριθμός στήλης αυτής της περιοχής βάσει της οποίας θα κάνουμε αυτή τη διαδικασία φιλτραρίσματος.

Τέλος, έχουμε ορίσει τα κριτήρια ως έναν πίνακα για τη δήλωση των ονομάτων πολλών μαθητών, όπως Emily , Daniel , και Gabriel .

➤ Τύπος F5 .

Στη συνέχεια, θα έχετε το σύνολο δεδομένων φιλτραρισμένο με πολλαπλά κριτήρια ώστε να εμφανίζονται τα ονόματα των μαθητών και τα αντίστοιχα Ids και Μαρκς για τους μαθητές Emily , Daniel , και Gabriel .

Διαβάστε περισσότερα: Φιλτράρισμα πολλαπλών κριτηρίων στο Excel (4 κατάλληλοι τρόποι)

Μέθοδος-2: Φίλτρο με πολλαπλά αριθμητικά κριτήρια σε συστοιχία χρησιμοποιώντας το Excel VBA

Εδώ, θα φιλτράρουμε το ακόλουθο σύνολο δεδομένων για τα ids 101135 , 101137 , και 101138 χρησιμοποιώντας αυτούς τους αριθμούς ως πολλαπλά κριτήρια σε έναν πίνακα.

Βήματα :

➤ Follow Βήμα-01 του Μέθοδος-1 .

➤ Γράψτε τον ακόλουθο κώδικα

 Sub filter_with_array_as_criteria_2() ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=Array("101135", "101137", "101138") End Sub 

Εδώ, δηλώσαμε τα ονόματα των επικεφαλίδων στο εύρος B3:D3 στην οποία θα εφαρμόσουμε το φίλτρο και Πεδίο:=2 είναι ο αριθμός στήλης αυτής της περιοχής βάσει της οποίας θα κάνουμε αυτή τη διαδικασία φιλτραρίσματος.

Τέλος, έχουμε ορίσει τα κριτήρια ως έναν πίνακα για τη δήλωση των αναγνωριστικών πολλαπλών μαθητών, όπως 101135 , 101137 , και 101138 και τα βάλαμε μέσα σε εισαγωγικά για να τα προσδιορίσουμε ως συμβολοσειρές, επειδή AutoFilter θα λειτουργήσει μόνο για έναν πίνακα συμβολοσειρών.

➤ Τύπος F5 .

Μετά από αυτό, θα λάβετε τα ονόματα και τους βαθμούς των μαθητών που έχουν αναγνωριστικά 101135 , 101137 , και 101138 .

Διαβάστε περισσότερα: VBA για να λάβετε μοναδικές τιμές από τη στήλη σε συστοιχία στο Excel (3 κριτήρια)

Μέθοδος-3: Ορισμός πολλαπλών κριτηρίων σε μια σειρά για χρήση ως συστοιχία

Εδώ, έχουμε παραθέσει τα κριτήρια στο Λίστα στήλη που περιέχει τα ids 101134 , 101135 , και 101136 με βάση την οποία θα κάνουμε τη διαδικασία φιλτραρίσματος.

Βήματα :

➤ Follow Βήμα-01 του Μέθοδος-1 .

➤ Γράψτε τον ακόλουθο κώδικα

 Sub filter_with_array_as_criteria_3() Dim ID_range, k As Variant ID_range = Application.Transpose(ActiveSheet.Range("F4:F6")) For k = LBound(ID_range) To UBound(ID_range) ID_range(k) = CStr(ID_range(k)) Next k ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=ID_range End Sub 

Εδώ, έχουμε δηλώσει ID_range , k ως Παραλλαγή και ID_range είναι ο πίνακας που θα αποθηκεύει πολλαπλά κριτήρια, και k είναι η προσαύξηση που κυμαίνεται από το κατώτερο όριο έως το ανώτερο όριο αυτού του πίνακα. Για να έχουμε το κατώτερο και το ανώτερο όριο χρησιμοποιήσαμε το Λειτουργία LBOUND και Λειτουργία UBOUND αντίστοιχα.

Το Βρόχος FOR χρησιμοποιείται για τη μετατροπή των τιμών που δεν είναι συμβολοσειρές στον πίνακα σε συμβολοσειρές με τη βοήθεια της εντολής Συνάρτηση CStr . Τέλος, έχουμε χρησιμοποιήσει αυτόν τον πίνακα ως Κριτήρια1 .

➤ Τύπος F5 .

Στη συνέχεια, θα λάβετε τα ονόματα και τους βαθμούς των μαθητών που έχουν αναγνωριστικά 101134 , 101135 , και 101136 .

Διαβάστε περισσότερα: Φίλτρο διαφορετικής στήλης με πολλαπλά κριτήρια στο Excel VBA

Παρόμοιες αναγνώσεις

  • Πώς να φιλτράρετε μοναδικές τιμές στο Excel (8 εύκολοι τρόποι)
  • Εκτέλεση προσαρμοσμένου φίλτρου στο Excel (5 τρόποι)
  • Υπολογισμός του μέσου όρου μιας συστοιχίας με VBA (μακροεντολές, UDF και UserForm)
  • Συντόμευση για το φίλτρο του Excel (3 γρήγορες χρήσεις με παραδείγματα)

Μέθοδος-4: Χρήση των λειτουργιών SPLIT και JOIN για τη δημιουργία συστοιχίας με πολλαπλά κριτήρια

Εδώ, θα χρησιμοποιήσουμε τον ακόλουθο κατάλογο στο Λίστα στήλη ως πίνακα και για το σωστό φιλτράρισμα του συνόλου δεδομένων θα χρησιμοποιήσουμε επίσης το Λειτουργία SPLIT , Λειτουργία JOIN , και Λειτουργία TRANSPOSE σε ένα VBA κωδικός.

Βήματα :

➤ Follow Βήμα-01 του Μέθοδος-1 .

➤ Γράψτε τον ακόλουθο κώδικα

 Sub filter_with_array_as_criteria_4() ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=Split(Join(Application.Transpose(Range("F4:F6")), ","), ",") End Sub 

Ορίστε, TRANSPOSE θα μετατρέψει το 2D array σε ένα 1D array αλλιώς AutoFilter δεν θα λειτουργήσει, JOIN θα ενώσει κάθε μία από τις τιμές σε έναν πίνακα συμβολοσειρών, και τέλος, SPLIT θα αναλύσει κάθε συμβολοσειρά για να τις εισάγει ξεχωριστά ως κριτήρια για το φιλτράρισμα του συνόλου δεδομένων.

➤ Τύπος F5 .

Τέλος, θα λάβετε τα ονόματα και τους βαθμούς των μαθητών που έχουν αναγνωριστικά 101134 , 101135 , και 101136 .

Διαβάστε περισσότερα: Πώς να διαχωρίσετε μια συμβολοσειρά σε μια συστοιχία στην VBA (3 τρόποι)

Μέθοδος-5: Φίλτρο με πολλαπλά κριτήρια σε βρόχο για συστοιχία με VBA

Σε αυτή την ενότητα, θα φιλτράρουμε το ακόλουθο σύνολο δεδομένων ανάλογα με το Student Id στήλη για πολλαπλά κριτήρια, όπως αναφέρονται στο Λίστα στήλη.

Βήματα :

➤ Follow Βήμα-01 του Μέθοδος-1 .

➤ Γράψτε τον ακόλουθο κώδικα

 Sub filter_with_array_as_criteria_5() Dim k As Integer Dim ID_range(100) As String For k = 4 To 6 ID_range(k) = ActiveSheet.Range("F" & k) Next k ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=ID_range End Sub 

Εδώ, έχουμε δηλώσει k ως Ακέραιος αριθμός , ID_range(100) ως Συμβολοσειρά όπου ID_range είναι ένας πίνακας που θα αποθηκεύει έως και 100 Για να καθορίσουμε τις τιμές για αυτόν τον πίνακα εδώ χρησιμοποιήσαμε το Βρόχος FOR για το k από το 4 στο 6 ως οι αριθμοί των γραμμών του Λίστα στήλη και F είναι το όνομα της στήλης.

Τέλος, χρησιμοποιήσαμε αυτόν τον πίνακα ως Κριτήρια1 για το AutoFilter .

➤ Τύπος F5 .

Τελικά, θα λάβετε τα ονόματα και τους βαθμούς των μαθητών που έχουν αναγνωριστικά 101134 , 101135 , και 101136 .

Διαβάστε περισσότερα: Φιλτράρισμα πολλαπλών κριτηρίων στο Excel με VBA (και οι δύο τύποι AND και OR)

Μέθοδος-6: Χρήση ονομαστικής περιοχής για πολλαπλά κριτήρια

Εδώ, έχουμε παραθέσει μερικά ονόματα των μαθητών στο Λίστα στήλη και ονόμασε αυτό το εύρος ως Φοιτητής Χρησιμοποιώντας αυτό το ονομαστικό εύρος θα ορίσουμε έναν πίνακα που θα περιέχει πολλαπλά κριτήρια για την AutoFilter χαρακτηριστικό.

Βήματα :

➤ Follow Βήμα-01 του Μέθοδος-1 .

➤ Γράψτε τον ακόλουθο κώδικα

 Sub filter_with_array_as_criteria_6() Dim Student_range, k As Variant Student_range = Application.Transpose(ActiveSheet.Range("Student")) ActiveSheet.Range("B3:D3")).AutoFilter Field:=2, _ Operator:=xlFilterValues, Criteria1:=Student_range End Sub 

Εδώ, έχουμε δηλώσει Student_range , k ως Παραλλαγή , και χρησιμοποίησε το Λειτουργία TRANSPOSE για να μετατρέψετε το 2D πίνακας της ονομαστικής περιοχής Φοιτητής σε ένα 1D και στη συνέχεια την αποθήκευσε στο Student_range Στη συνέχεια, χρησιμοποιείται ως Κριτήρια1 για το AutoFilter μέθοδος.

➤ Τύπος F5 .

Στη συνέχεια, θα έχετε το σύνολο δεδομένων φιλτραρισμένο με πολλαπλά κριτήρια ώστε να εμφανίζονται τα ονόματα των μαθητών και τα αντίστοιχα Ids και Μαρκς για τους μαθητές Jefferson , Emily , και Sara .

Σχετικό περιεχόμενο: VBA για την αντιμετάθεση συστοιχίας στο Excel (3 μέθοδοι)

Μέθοδος-7: Φιλτράρισμα πίνακα με πολλαπλά κριτήρια σε μια συστοιχία

Εδώ, έχουμε τα εξής Πίνακας του οποίου το όνομα είναι Πίνακας1 και χρησιμοποιώντας το Excel VBA θα προσπαθήσουμε να φιλτράρουμε αυτόν τον πίνακα με βάση τα ονόματα Emily , Daniel , και Gabriel ως πολλαπλά κριτήρια σε έναν πίνακα.

Βήματα :

➤ Follow Βήμα-01 του Μέθοδος-1 .

➤ Γράψτε τον ακόλουθο κώδικα

 Sub filter_with_array_as_criteria_7() ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=2, _ Operator:=xlFilterValues, Criteria1:=Array("Emily", "Daniel", "Gabriel") End Sub 

Ορίστε, ListObjects("Table1") χρησιμοποιείται για τον ορισμό του πίνακα Πίνακας1 , Πεδίο:=2 για τον καθορισμό της δεύτερης στήλης αυτής της περιοχής ως βάση της διαδικασίας φιλτραρίσματος και τέλος έχουμε ορίσει έναν πίνακα που περιέχει πολλαπλά ονόματα για Κριτήρια1 .

➤ Τύπος F5 .

Τελικά, θα έχετε το σύνολο δεδομένων φιλτραρισμένο για πολλαπλά κριτήρια ώστε να εμφανίζει το όνομα των μαθητών και τα αντίστοιχα Ids και Μαρκς για τους μαθητές Emily , Daniel , και Gabriel .

Διαβάστε περισσότερα: Excel VBA: Φίλτρο πίνακα με βάση την τιμή κελιού (6 εύκολες μέθοδοι)

Τμήμα πρακτικής

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

Συμπέρασμα

Σε αυτό το άρθρο, προσπαθήσαμε να καλύψουμε τους τρόπους φιλτραρίσματος με πολλαπλά κριτήρια ως πίνακα χρησιμοποιώντας το Excel VBA Αν έχετε οποιεσδήποτε προτάσεις ή ερωτήσεις, μη διστάσετε να τις μοιραστείτε στο τμήμα σχολίων.

Ο Hugh West είναι ένας εξαιρετικά έμπειρος εκπαιδευτής και αναλυτής του Excel με πάνω από 10 χρόνια εμπειρίας στον κλάδο. Είναι κάτοχος πτυχίου Λογιστικής και Χρηματοοικονομικής και μεταπτυχιακού στη Διοίκηση Επιχειρήσεων. Ο Hugh έχει πάθος για τη διδασκαλία και έχει αναπτύξει μια μοναδική προσέγγιση διδασκαλίας που είναι εύκολο να ακολουθηθεί και να κατανοηθεί. Οι εξειδικευμένες γνώσεις του στο Excel έχουν βοηθήσει χιλιάδες φοιτητές και επαγγελματίες παγκοσμίως να βελτιώσουν τις δεξιότητές τους και να διαπρέψουν στην καριέρα τους. Μέσω του ιστολογίου του, ο Hugh μοιράζεται τις γνώσεις του με τον κόσμο, προσφέροντας δωρεάν μαθήματα Excel και διαδικτυακή εκπαίδευση για να βοηθήσει άτομα και επιχειρήσεις να αξιοποιήσουν πλήρως τις δυνατότητές τους.