Αυτό το σεμινάριο θα σας δείξει πώς να χρησιμοποιήσετε τις λειτουργίες Excel COUNTIF και COUNTIFS στο VBA
Το VBA δεν έχει ισοδύναμο των λειτουργιών COUNTIF ή COUNTIFS που μπορείτε να χρησιμοποιήσετε - ένας χρήστης πρέπει να χρησιμοποιήσει τις ενσωματωμένες λειτουργίες του Excel στο VBA χρησιμοποιώντας το Λειτουργία φύλλου εργασίας αντικείμενο.
COUNTIF Φύλλο εργασίαςFunction
Το αντικείμενο WorksheetFunction μπορεί να χρησιμοποιηθεί για να καλέσετε τις περισσότερες από τις λειτουργίες του Excel που είναι διαθέσιμες στο παράθυρο διαλόγου Εισαγωγή συνάρτησης στο Excel. Η συνάρτηση COUNTIF είναι μία από αυτές.
123 | Sub TestCountIf ()Εύρος ("D10") = Application.WorksheetFunction.CountIf (Εύρος ("D2: D9"), "> 5")Τέλος υπο |
Η παραπάνω διαδικασία θα μετρήσει τα κελιά στο εύρος (D2: D9) μόνο αν έχουν τιμή 5 ή μεγαλύτερη. Παρατηρήστε ότι επειδή χρησιμοποιείτε ένα σύμβολο μεγαλύτερο από, τα κριτήρια μεγαλύτερα από 5 πρέπει να βρίσκονται σε παρένθεση.
Ανάθεση αποτελέσματος COUNTIF σε μεταβλητή
Μπορεί να θέλετε να χρησιμοποιήσετε το αποτέλεσμα του τύπου σας αλλού στον κώδικα αντί να το γράψετε απευθείας πίσω και στο Εύρος Excel. Εάν συμβαίνει αυτό, μπορείτε να αντιστοιχίσετε το αποτέλεσμα σε μια μεταβλητή για χρήση αργότερα στον κώδικά σας.
1234567 | Sub AssignSumIfVariable ()Αμυδρό αποτέλεσμα ως Διπλό«Εκχωρήστε τη μεταβλητήαποτέλεσμα = Application.WorksheetFunction.CountIf (Εύρος ("D2: D9"), "> 5")«Δείξτε το αποτέλεσμαMsgBox "Ο αριθμός των κελιών με τιμή μεγαλύτερη από 5 είναι" & αποτέλεσμαΤέλος υπο |
Χρήση COUNTIFS
Η συνάρτηση COUNTIFS είναι παρόμοια με τη συνάρτηση φύλλου εργασίας COUNTIF, αλλά σας επιτρέπει να ελέγχετε για περισσότερα από ένα κριτήρια. Στο παρακάτω παράδειγμα, ο τύπος θα μετρήσει τον αριθμό των κελιών στο D2 έως D9 όπου η τιμή πώλησης είναι μεγαλύτερη από 6 ΚΑΙ η τιμή κόστους είναι μεγαλύτερη από 5.
123 | Sub UsingCountIfs ()Εύρος ("D10") = WorksheetFunction.CountIfs (Εύρος ("C2: C9"), "> 6", Εύρος ("E2: E9"), "> 5")Τέλος υπο |
Χρήση COUNTIF με αντικείμενο εύρους
Μπορείτε να αντιστοιχίσετε μια ομάδα κελιών στο αντικείμενο εύρους και, στη συνέχεια, να χρησιμοποιήσετε αυτό το αντικείμενο εύρους με το Φύλλο εργασίας αντικείμενο.
123456789 | Sub TestCountIFRange ()Dim rngΑριθμήστε ως εύρος«εκχωρήστε το εύρος των κελιώνΟρισμός rngCount = Εύρος ("D2: D9")"χρησιμοποιήστε το εύρος στον τύποΕύρος ("D10") = WorksheetFunction.SUMIF (rngCount, "> 5")«απελευθερώστε τα αντικείμενα εύρουςΡύθμιση rngCount = ΤίποταΤέλος υπο |
Χρήση COUNTIFS σε αντικείμενα πολλαπλής εμβέλειας
Ομοίως, μπορείτε να χρησιμοποιήσετε COUNTIFS σε πολλά αντικείμενα εύρους.
123456789101112 | Sub TestCountMultipleRanges ()Dim rngCriteria1 As RangeDim rngCriteria2 as Range«εκχωρήστε το εύρος των κελιώνΟρισμός rngCriteria1 = Εύρος ("D2: D9")Ορισμός rngCriteria2 = Εύρος ("E2: E10")"χρησιμοποιήστε τα εύρη στον τύποΕύρος ("D10") = WorksheetFunction.CountIfs (rngCriteria1, "> 6", rngCriteria2, "> 5")«απελευθερώστε τα αντικείμενα εύρουςΟρισμός rngCriteria1 = ΤίποταΟρισμός rngCriteria2 = ΤίποταΤέλος υπο |
COUNTIF Τύπος
Όταν χρησιμοποιείτε το WorksheetFunction.COUNTIF για να προσθέσετε ένα άθροισμα σε μια περιοχή στο φύλλο εργασίας σας, επιστρέφεται μια στατική τιμή, όχι ένας ευέλικτος τύπος. Αυτό σημαίνει ότι όταν αλλάζουν τα στοιχεία σας στο Excel, η τιμή που έχει επιστραφεί από το Φύλλο εργασίας δεν θα αλλάξει
Στο παραπάνω παράδειγμα, η διαδικασία έχει μετρήσει την ποσότητα των κελιών με τιμές στο εύρος (D2: D9) όπου η τιμή πώλησης είναι μεγαλύτερη από 6 και το αποτέλεσμα τέθηκε σε D10. Όπως μπορείτε να δείτε στη γραμμή τύπων, αυτό το αποτέλεσμα είναι ένα σχήμα και όχι ένας τύπος.
Εάν κάποια από τις τιμές αλλάξει στο εύρος (D2: D9), το αποτέλεσμα στο D10 θα αλλάξει ΔΕΝ αλλαγή.
Αντί να χρησιμοποιήσετε το WorksheetFunction.SumIf, μπορείτε να χρησιμοποιήσετε το VBA για να εφαρμόσετε μια συνάρτηση SUMIF σε ένα κελί χρησιμοποιώντας το Τύπος ή ΤύποςR1C1 μεθόδους.
Μέθοδος τύπου
Η μέθοδος του τύπου σάς επιτρέπει να δείξετε συγκεκριμένα μια περιοχή κελιών π.χ.: D2: D9 όπως φαίνεται παρακάτω.
123 | Sub TestCountIf ()Εύρος ("D10"). FormulaR1C1 = "= COUNTIF (D2: D9," "> 5" ")"Τέλος υπο |
Μέθοδος FormulaR1C1
Η μέθοδος FormulaR1C1 είναι πιο ευέλικτη διότι δεν σας περιορίζει σε ένα σύνολο κυψελών. Το παρακάτω παράδειγμα θα μας δώσει την ίδια απάντηση με την παραπάνω.
123 | Sub TestCountIf ()Εύρος ("D10"). FormulaR1C1 = "= COUNTIF (R [-8] C: R [-1] C," "> 5" ")"Τέλος υπο |
Ωστόσο, για να κάνουμε τον τύπο ακόμη πιο ευέλικτο, θα μπορούσαμε να τροποποιήσουμε τον κώδικα ώστε να μοιάζει με αυτό:
123 | Sub TestCountIf ()ActiveCell.FormulaR1C1 = "= COUNTIF (R [-8] C: R [-1] C," "> 5" ")"Τέλος υπο |
Όπου και αν βρίσκεστε στο φύλλο εργασίας σας, ο τύπος θα μετρήσει τα κελιά που πληρούν τα κριτήρια ακριβώς πάνω από αυτό και θα τοποθετήσει την απάντηση στο ActiveCell. Το εύρος μέσα στη συνάρτηση COUNTIF πρέπει να αναφέρεται στη σύνταξη γραμμής (R) και στήλης (C).
Και οι δύο αυτές μέθοδοι σάς επιτρέπουν να χρησιμοποιείτε τύπους Dynamic Excel εντός VBA.
Τώρα θα υπάρχει ένας τύπος στο D10 αντί για τιμή.
Το κείμενο του συνδέσμου σας