Άθροισμα κατά χρώμα - Παραδείγματα κώδικα VBA

Η ακόλουθη συνάρτηση υπολογίζει τη συνολική τιμή όλων των κελιών σε μια συγκεκριμένη περιοχή που έχουν ένα συγκεκριμένο χρώμα:

Δυστυχώς, δεν υπάρχει συνάρτηση SUMIF για άθροιση με βάση το χρώμα του κελιού. Εάν θέλετε να αθροίσετε ανά χρώμα, θα χρειαστεί να δημιουργήσετε μια συνάρτηση στο VBA.
Για να χρησιμοποιήσετε αυτόν τον κωδικό: Ανοίξτε το Visual Basic Editor (Alt + F11), Εισαγάγετε μια νέα μονάδα (Εισαγωγή> Ενότητα) και αντιγράψτε και επικολλήστε τον επιθυμητό κώδικα στη μονάδα.

Συνάρτηση στο άθροισμα κατά χρώμα

1234567891011121314151617181920 Λειτουργία Color_By_Numbers (Color_Range As Range, Color_Index As Integer) Ως διπλό'Dim Color_By_Numbers As DoubleDim Cell«Θα εξετάσει τα κελιά που βρίσκονται στην περιοχή και αν«η ιδιότητα εσωτερικού χρώματος ταιριάζει με το απαιτούμενο χρώμα κελιούτότε θα αθροιστεί'Εμβέλεια Loop ThroughΓια κάθε κελί σε εύρος χρώματοςΑν (Cell.Interior.ColorIndex = Color_Index) ΤότεColor_By_Numbers = Color_By_Numbers + Cell.ValueΤέλος εανΕπόμενο κελίΛειτουργία Τέλους

Αυτό είναι στην πραγματικότητα "άθροισμα ανά χρώμα" - οπότε αν γνωρίζετε την παλέτα 56 χρωμάτων του Excel και γνωρίζετε για παράδειγμα ότι το χρώμα 4 είναι ανοιχτό πράσινο τότε η ακόλουθη κλήση:

Color_By_Numbers ("A1: P20", 4)

θα αθροίσει τις τιμές για όλα τα κελιά της περιοχής A1: P20 που έχουν ανοιχτό πράσινο χρώμα.

Για να διευκολυνθεί η χρήση της συνάρτησης, η ακόλουθη υπορουτίνα θα υπολογίσει τη συνολική τιμή για καθένα από τα 56 χρώματα του excel. Δίνει επίσης ολόκληρη την παλάτα έτσι ώστε να είναι εύκολο να δείτε τον αριθμό ευρετηρίου για κάθε χρώμα.

Η υπορουτίνα επικαλείται στο φύλλο 1 και εξετάζει το εύρος

12345678910111213141516171819202122 Private Sub CommandButton1_Click ()«Θα εξετάσει κάθε χρώμα και θα παράγει συνοπτικό πίνακα τιμώνστο φύλλο 1 στο κελί Α1 και κάτωΑσταθής τρέχουσα_Χρώμα_αριθμός ως ακέραιοςDim Color_Total As DoubleΓια Current_Color_Number = 1 έως 56Color_Total = Color_By_Numbers (Φύλλα ("Φύλλο2"). Εύρος ("a11: aa64"), Current_Color_Number)Φύλλα εργασίας ("Sheet1"). Εύρος ("A1"). Offset (Current_Color_Number, 0) = Current_Color_NumberΦύλλα εργασίας ("Sheet1"). Εύρος ("A1"). Offset (Current_Color_Number, 0) .Interior.ColorIndex = Current_Color_NumberΑν Color_Total 0# ΤότεΦύλλα εργασίας ("Sheet1"). Εύρος ("a1"). Offset (Current_Color_Number, 1). Value = Color_TotalΤέλος εανΕπόμενο Current_Color_NumberΤέλος υπο

Για να κατεβάσετε το αρχείο XLS, κάντε κλικ εδώ

Θα βοηθήσει στην ανάπτυξη του τόπου, μοιράζονται τη σελίδα με τους φίλους σας

wave wave wave wave wave