Λειτουργίες VBA COUNTIF και COUNTIFS

Αυτό το σεμινάριο θα σας δείξει πώς να χρησιμοποιήσετε τις λειτουργίες 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 αντί για τιμή.

Το κείμενο του συνδέσμου σας

wave wave wave wave wave