Χρήση μορφοποίησης υπό όρους με Excel VBA

Μορφοποίηση υπό όρους Excel

Το Excel υπό όρους μορφοποίηση σάς επιτρέπει να ορίσετε κανόνες που καθορίζουν τη μορφοποίηση κελιών.

Για παράδειγμα, μπορείτε να δημιουργήσετε έναν κανόνα που επισημαίνει κελιά που πληρούν ορισμένα κριτήρια. Τα παραδείγματα περιλαμβάνουν:

  • Αριθμοί που εμπίπτουν σε ένα συγκεκριμένο εύρος (π.χ. Λιγότερο από 0).
  • Τα κορυφαία 10 στοιχεία σε μια λίστα.
  • Δημιουργία «θερμικού χάρτη».
  • Κανόνες "με βάση τον τύπο" για σχεδόν κάθε μορφοποίηση υπό όρους.

Στο Excel, η μορφοποίηση υπό όρους βρίσκεται στην Κορδέλα στην ενότητα Αρχική σελίδα> Στυλ (ALT> H> L).

Για να δημιουργήσετε τον δικό σας κανόνα, κάντε κλικ στο «Νέος κανόνας» και θα εμφανιστεί ένα νέο παράθυρο:

Μορφοποίηση υπό όρους σε VBA

Σε όλες αυτές τις δυνατότητες μορφοποίησης υπό όρους μπορείτε να έχετε πρόσβαση μέσω VBA.

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

Οι κανόνες μορφοποίησης υπό όρους αποθηκεύονται επίσης όταν αποθηκεύεται το φύλλο εργασίας

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

Πρακτικές χρήσεις μορφοποίησης υπό όρους σε VBA

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

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

Μπορείτε να χρησιμοποιήσετε το VBA για να ενεργοποιήσετε ή να απενεργοποιήσετε τη μορφοποίηση υπό όρους. Μπορείτε να χρησιμοποιήσετε το VBA για να διαγράψετε τους κανόνες για μια σειρά κελιών ή να τους ενεργοποιήσετε ξανά. Μπορεί να υπάρχει μια κατάσταση όπου υπάρχει ένας απόλυτα καλός λόγος για έναν ασυνήθιστο αριθμό, αλλά όταν ο χρήστης παρουσιάζει τον πίνακα ελέγχου ή την αναφορά σε υψηλότερο επίπεδο διαχείρισης, θέλει να μπορεί να αφαιρέσει τα «κουδούνια συναγερμού».

Επίσης, στα ακατέργαστα εισαγόμενα δεδομένα, μπορεί να θέλετε να επισημάνετε πού οι αριθμοί είναι γελοία μεγάλοι ή γελοίοι μικροί. Το εύρος δεδομένων που εισάγεται είναι συνήθως διαφορετικό μέγεθος για κάθε περίοδο, οπότε μπορείτε να χρησιμοποιήσετε το VBA για να αξιολογήσετε το μέγεθος του νέου εύρους δεδομένων και να εισαγάγετε μορφοποίηση υπό όρους μόνο για αυτό το εύρος.

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

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

Ένα απλό παράδειγμα δημιουργίας μιας μορφής υπό όρους σε μια περιοχή

Αυτό το παράδειγμα ρυθμίζει τη μορφοποίηση υπό όρους για μια σειρά κελιών (A1: A10) σε ένα φύλλο εργασίας. Εάν ο αριθμός στην περιοχή είναι μεταξύ 100 και 150 τότε το χρώμα φόντου του κελιού θα είναι κόκκινο, διαφορετικά δεν θα έχει χρώμα.

1234567891011121314 Sub ConditionalFormattingExample ()‘Ορίστε το εύροςDim MyRange As RangeΟρισμός MyRange = Range ("A1: A10")«Διαγραφή υπάρχουσας μορφοποίησης υπό όρους από το εύροςMyRange.FormatConditions.Delete‘Εφαρμογή μορφοποίησης υπό όρουςMyRange.FormatConditions.Add Type: = xlCellValue, Operator: = xlBetween, _Formula1: = "= 100", Formula2: = "= 150"MyRange.FormatConditions (1) .Interior.Color = RGB (255, 0, 0)Τέλος υπο

Παρατηρήστε ότι πρώτα ορίζουμε το εύρος MyRange για την εφαρμογή μορφοποίησης υπό όρους.

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

Τα χρώματα δίνονται με αριθμητικές τιμές. Είναι καλή ιδέα να χρησιμοποιήσετε σημειώσεις RGB (Κόκκινο, Πράσινο, Μπλε) για αυτό. Μπορείτε να χρησιμοποιήσετε τυπικές σταθερές χρώματος για αυτό π.χ. vbRed, vbBlue, αλλά περιορίζεστε σε οκτώ επιλογές χρωμάτων.

Υπάρχουν πάνω από 16,7 εκατομμύρια χρώματα διαθέσιμα και με χρήση RGB μπορείτε να έχετε πρόσβαση σε όλα. Αυτό είναι πολύ πιο εύκολο από το να θυμάσαι ποιος αριθμός ταιριάζει με ποιο χρώμα. Κάθε ένας από τους τρεις χρωματικούς αριθμούς RGB είναι από 0 έως 255.

Σημειώστε ότι η παράμετρος «xlBetween» είναι περιεκτική, οπότε οι τιμές κελιών 100 ή 150 θα ικανοποιούν την προϋπόθεση.

Μορφοποίηση πολλαπλών όρων

Mayσως θελήσετε να ορίσετε αρκετούς κανόνες υπό όρους εντός του εύρους δεδομένων σας, έτσι ώστε όλες οι τιμές σε ένα εύρος να καλύπτονται από διαφορετικές συνθήκες:

12345678910111213141516171819 Sub MultipleConditionalFormattingExample ()Dim MyRange As Range«Δημιουργία αντικειμένου εύρουςΟρισμός MyRange = Range ("A1: A10")«Διαγραφή προηγούμενων μορφών υπό όρουςMyRange.FormatConditions.Delete"Προσθέστε τον πρώτο κανόναMyRange.FormatConditions.Add Type: = xlCellValue, Operator: = xlBetween, _Formula1: = "= 100", Formula2: = "= 150"MyRange.FormatConditions (1) .Interior.Color = RGB (255, 0, 0)"Προσθήκη δεύτερου κανόναMyRange.FormatConditions.Add Type: = xlCellValue, Operator: = xlLess, _Τύπος 1: = "= 100"MyRange.FormatConditions (2) .Interior.Color = vbBlue"Προσθέστε τον τρίτο κανόναMyRange.FormatConditions.Add Type: = xlCellValue, Operator: = xlGreater, _Τύπος 1: = "= 150"MyRange.FormatConditions (3) .Interior.Color = vbYellowΤέλος υπο

Αυτό το παράδειγμα καθορίζει τον πρώτο κανόνα όπως πριν, με το χρώμα του κελιού κόκκινο εάν η τιμή κελιού είναι μεταξύ 100 και 150.

Στη συνέχεια προστίθενται δύο ακόμη κανόνες. Εάν η τιμή κελιού είναι μικρότερη από 100, τότε το χρώμα του κελιού είναι μπλε και εάν είναι μεγαλύτερο από 150, τότε το χρώμα του κελιού είναι κίτρινο.

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

Εάν τα κενά κελιά βρίσκονται σε αυτό το εύρος, τότε θα εμφανιστούν ως μπλε, επειδή το Excel εξακολουθεί να τα θεωρεί ότι έχουν τιμή μικρότερη από 100.

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

1234567891011121314151617181920212223 Sub MultipleConditionalFormattingExample ()Dim MyRange As Range«Δημιουργία αντικειμένου εύρουςΟρισμός MyRange = Range ("A1: A10")«Διαγραφή προηγούμενων μορφών υπό όρουςMyRange.FormatConditions.Delete"Προσθέστε τον πρώτο κανόναMyRange.FormatConditions.Add Type: = xlExpression, Formula1: = _"= LEN (TRIM (A1)) = 0"MyRange.FormatConditions (1) .Interior.Pattern = xlΚανένα"Προσθήκη δεύτερου κανόναMyRange.FormatConditions.Add Type: = xlCellValue, Operator: = xlBetween, _Formula1: = "= 100", Formula2: = "= 150"MyRange.FormatConditions (2) .Interior.Color = RGB (255, 0, 0)"Προσθέστε τον τρίτο κανόναMyRange.FormatConditions.Add Type: = xlCellValue, Operator: = xlLess, _Τύπος 1: = "= 100"MyRange.FormatConditions (3) .Interior.Color = vbBlue"Προσθέστε τον τέταρτο κανόναMyRange.FormatConditions.Add Type: = xlCellValue, Operator: = xlGreater, _Τύπος 1: = "= 150"MyRange.FormatConditions (4) .Interior.Color = RGB (0, 255, 0)Τέλος υπο

Αυτό χρησιμοποιεί τον τύπο xlExpression και, στη συνέχεια, χρησιμοποιεί έναν τυπικό τύπο Excel για να καθορίσει εάν ένα κελί είναι κενό αντί για μια αριθμητική τιμή.

Το αντικείμενο FormatConditions είναι μέρος του αντικειμένου Range. Λειτουργεί με τον ίδιο τρόπο όπως μια συλλογή με το ευρετήριο να ξεκινά από το 1. Μπορείτε να επαναλάβετε αυτό το αντικείμενο χρησιμοποιώντας ένα For … Next ή For … Κάθε βρόχο.

Διαγραφή ενός κανόνα

Μερικές φορές, μπορεί να χρειαστεί να διαγράψετε έναν μεμονωμένο κανόνα σε ένα σύνολο πολλαπλών κανόνων, εάν δεν ταιριάζει στις απαιτήσεις δεδομένων.

12345678910111213 Sub DeleteConditionalFormattingExample ()Dim MyRange As Range«Δημιουργία αντικειμένου εύρουςΟρισμός MyRange = Range ("A1: A10")«Διαγραφή προηγούμενων μορφών υπό όρουςMyRange.FormatConditions.Delete"Προσθέστε τον πρώτο κανόναMyRange.FormatConditions.Add Type: = xlCellValue, Operator: = xlBetween, _Formula1: = "= 100", Formula2: = "= 150"MyRange.FormatConditions (1) .Interior.Color = RGB (255, 0, 0)«Διαγραφή κανόναMyRange.FormatConditions (1) .ΔιαγραφήΤέλος υπο

Αυτός ο κώδικας δημιουργεί έναν νέο κανόνα για το εύρος A1: A10 και στη συνέχεια τον διαγράφει. Πρέπει να χρησιμοποιήσετε τον σωστό αριθμό ευρετηρίου για τη διαγραφή, οπότε ελέγξτε το "Διαχείριση κανόνων" στο μπροστινό μέρος του Excel (αυτό θα δείξει τους κανόνες με τη σειρά εκτέλεσης) για να βεβαιωθείτε ότι έχετε τον σωστό αριθμό ευρετηρίου. Σημειώστε ότι δεν υπάρχει δυνατότητα αναίρεσης στο Excel εάν διαγράψετε έναν κανόνα μορφοποίησης υπό όρους στο VBA, σε αντίθεση με το εάν το κάνετε μέσω του front-end του Excel.

Αλλαγή κανόνα

Επειδή οι κανόνες είναι μια συλλογή αντικειμένων που βασίζονται σε ένα καθορισμένο εύρος, μπορείτε εύκολα να κάνετε αλλαγές σε συγκεκριμένους κανόνες χρησιμοποιώντας το VBA. Οι πραγματικές ιδιότητες μετά την προσθήκη του κανόνα είναι μόνο για ανάγνωση, αλλά μπορείτε να χρησιμοποιήσετε τη μέθοδο Τροποποίηση για να τις αλλάξετε. Ιδιότητες όπως τα χρώματα διαβάζονται / γράφονται.

123456789101112131415 Sub ChangeConditionalFormattingExample ()Dim MyRange As Range«Δημιουργία αντικειμένου εύρουςΟρισμός MyRange = Range ("A1: A10")«Διαγραφή προηγούμενων μορφών υπό όρουςMyRange.FormatConditions.Delete"Προσθέστε τον πρώτο κανόναMyRange.FormatConditions.Add Type: = xlCellValue, Operator: = xlBetween, _Formula1: = "= 100", Formula2: = "= 150"MyRange.FormatConditions (1) .Interior.Color = RGB (255, 0, 0)«Αλλαγή κανόναMyRange.FormatConditions (1) .Modify xlCellValue, xlLess, "10"«Αλλαγή χρώματος κανόναMyRange.FormatConditions (1) .Interior.Color = vbGreenΤέλος υπο

Αυτός ο κώδικας δημιουργεί ένα αντικείμενο εύρους (A1: A10) και προσθέτει έναν κανόνα για αριθμούς μεταξύ 100 και 150. Εάν η συνθήκη είναι αληθής τότε το χρώμα του κελιού αλλάζει σε κόκκινο.

Στη συνέχεια, ο κώδικας αλλάζει τον κανόνα σε αριθμούς μικρότερους από 10. Εάν η συνθήκη είναι αληθής, το χρώμα του κελιού αλλάζει τώρα σε πράσινο.

Χρήση Διαβαθμισμένου Χρώματος

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

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

1234567891011121314151617181920212223242526272829 Sub GraduatedColors ()Dim MyRange As Range«Δημιουργία αντικειμένου εύρουςΟρισμός MyRange = Range ("A1: A10")«Διαγραφή προηγούμενων μορφών υπό όρουςMyRange.FormatConditions.Delete«Καθορίστε τον τύπο κλίμακαςMyRange.FormatConditions.AddColorScale ColorScaleType: = 3'Επιλέξτε χρώμα για τη χαμηλότερη τιμή στο εύροςMyRange.FormatConditions (1) .ColorScaleCriteria (1) .Type = _xlConditionValueLowestValueΜε MyRange.FormatConditions (1) .ColorScaleCriteria (1) .FormatColor.Χρώμα = 7039480Τέλος με'Επιλέξτε χρώμα για τις μεσαίες τιμές στο εύροςMyRange.FormatConditions (1) .ColorScaleCriteria (2) .Type = _xlConditionValuePercentileMyRange.FormatConditions (1) .ColorScaleCriteria (2) .Αξία = 50'Επιλέξτε το χρώμα για το μεσαίο σημείο του εύρουςΜε MyRange.FormatConditions (1) .ColorScaleCriteria (2) .FormatColor.Χρώμα = 8711167Τέλος με'Επιλέξτε χρώμα για την υψηλότερη τιμή στο εύροςMyRange.FormatConditions (1) .ColorScaleCriteria (3) .Type = _xlConditionValueHighestValueΜε MyRange.FormatConditions (1) .ColorScaleCriteria (3) .FormatColor.Χρώμα = 8109667Τέλος μεΤέλος υπο

Όταν εκτελεστεί αυτός ο κώδικας, θα βαθμολογήσει τα χρώματα των κελιών σύμφωνα με τις αύξουσες τιμές στο εύρος A1: A10.

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

Μορφοποίηση υπό όρους για τιμές σφάλματος

Όταν έχετε τεράστιο όγκο δεδομένων, μπορεί εύκολα να χάσετε μια τιμή σφάλματος στα διάφορα φύλλα εργασίας σας. Εάν αυτό παρουσιαστεί σε έναν χρήστη χωρίς να επιλυθεί, θα μπορούσε να οδηγήσει σε μεγάλα προβλήματα και να χάσει την εμπιστοσύνη του χρήστη στους αριθμούς. Αυτό χρησιμοποιεί έναν τύπο κανόνα xlExpression και μια συνάρτηση Excel του IsError για την αξιολόγηση του κελιού.

Μπορείτε να δημιουργήσετε κώδικα έτσι ώστε όλα τα κελιά με σφάλματα να έχουν κόκκινο χρώμα κελιού:

1234567891011 Sub ErrorConditionalFormattingExample ()Dim MyRange As Range«Δημιουργία αντικειμένου εύρουςΟρισμός MyRange = Range ("A1: A10")«Διαγραφή προηγούμενων μορφών υπό όρουςMyRange.FormatConditions.Delete"Προσθήκη κανόνα σφάλματοςMyRange.FormatConditions.Add Type: = xlExpression, Formula1: = "= IsError (A1) = true"«Ορίστε το εσωτερικό χρώμα σε κόκκινοMyRange.FormatConditions (1) .Interior.Color = RGB (255, 0, 0)Τέλος υπο

Μορφοποίηση υπό όρους για ημερομηνίες στο παρελθόν

Ενδέχεται να έχετε εισαγάγει δεδομένα εκεί που θέλετε να επισημάνετε ημερομηνίες στο παρελθόν. Ένα παράδειγμα αυτού θα μπορούσε να είναι η αναφορά οφειλετών όπου θέλετε να ξεχωρίζουν τυχόν παλιές ημερομηνίες τιμολογίου ηλικίας άνω των 30 ημερών.

Αυτός ο κώδικας χρησιμοποιεί τον τύπο κανόνα της xlExpression και μια συνάρτηση Excel για την αξιολόγηση των ημερομηνιών.

1234567891011 Sub DateInPastConditionalFormattingExample ()Dim MyRange As Range«Δημιουργία αντικειμένου εύρους με βάση μια στήλη ημερομηνιώνΟρισμός MyRange = Range ("A1: A10")«Διαγραφή προηγούμενων μορφών υπό όρουςMyRange.FormatConditions.Delete"Προσθήκη κανόνα σφάλματος για ημερομηνίες στο παρελθόνMyRange.FormatConditions.Add Type: = xlExpression, Formula1: = "= Now ()-A1> 30"«Ορίστε το εσωτερικό χρώμα σε κόκκινοMyRange.FormatConditions (1) .Interior.Color = RGB (255, 0, 0)Τέλος υπο

Αυτός ο κωδικός θα λάβει μια σειρά ημερομηνιών στο εύρος A1: A10 και θα ορίσει το χρώμα του κελιού σε κόκκινο για κάθε ημερομηνία που έχει περάσει πάνω από 30 ημέρες στο παρελθόν.

Στον τύπο που χρησιμοποιείται στην κατάσταση, Now () δίνει την τρέχουσα ημερομηνία και ώρα. Αυτό θα συνεχίσει να υπολογίζει κάθε φορά που υπολογίζεται εκ νέου το φύλλο εργασίας, οπότε η μορφοποίηση θα αλλάζει από τη μια μέρα στην άλλη.

Χρήση γραμμών δεδομένων σε μορφοποίηση υπό όρους VBA

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

123456 Sub DataBarFormattingExample ()Dim MyRange As RangeΟρισμός MyRange = Range ("A1: A10")MyRange.FormatConditions.DeleteMyRange.FormatConditions.AddDatabarΤέλος υπο

Τα δεδομένα σας θα μοιάζουν με αυτό στο φύλλο εργασίας:

Χρήση εικονιδίων σε μορφοποίηση υπό όρους VBA

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

12345678910111213141516171819202122232425 Sub IconSetsExample ()Dim MyRange As Range«Δημιουργία αντικειμένου εύρουςΟρισμός MyRange = Range ("A1: A10")«Διαγραφή προηγούμενων μορφών υπό όρουςMyRange.FormatConditions.Delete"Προσθήκη συνόλου εικονιδίων στο αντικείμενο FormatConditionsMyRange.FormatConditions.AddIconSetCondition«Ορίστε το εικονίδιο σε βέλη - συνθήκη 1Με MyRange.FormatConditions (1).IconSet = ActiveWorkbook.IconSets (xl3Arrows)Τέλος με«ορίστε τα κριτήρια εικονιδίου για την απαιτούμενη ποσοστιαία τιμή - συνθήκη 2Με MyRange.FormatConditions (1) .IconCriteria (2).Type = xlConditionValuePercent.Αξία = 33.Operator = xlGreaterEqualΤέλος με«ορίστε τα κριτήρια εικονιδίου για την απαιτούμενη ποσοστιαία τιμή - συνθήκη 3Με MyRange.FormatConditions (1) .IconCriteria (3).Type = xlConditionValuePercent.Αξία = 67.Operator = xlGreaterEqualΤέλος μεΤέλος υπο

Αυτό θα δώσει μια άμεση προβολή που δείχνει εάν ένας αριθμός είναι υψηλός ή χαμηλός. Μετά την εκτέλεση αυτού του κώδικα, το φύλλο εργασίας σας θα μοιάζει με αυτό:

Χρήση μορφοποίησης υπό όρους για να επισημάνετε την πρώτη πεντάδα

Μπορείτε να χρησιμοποιήσετε τον κωδικό VBA για να επισημάνετε τους κορυφαίους 5 αριθμούς σε ένα εύρος δεδομένων. Χρησιμοποιείτε μια παράμετρο που ονομάζεται «AddTop10», αλλά μπορείτε να προσαρμόσετε τον αριθμό κατάταξης εντός του κώδικα σε 5. Ένας χρήστης μπορεί να θέλει να δει τους υψηλότερους αριθμούς σε μια περιοχή χωρίς να χρειάζεται να ταξινομήσει πρώτα τα δεδομένα.

1234567891011121314151617181920212223 Υπο Top5 Παράδειγμα ()Dim MyRange As Range«Δημιουργία αντικειμένου εύρουςΟρισμός MyRange = Range ("A1: A10")«Διαγραφή προηγούμενων μορφών υπό όρουςMyRange.FormatConditions.Delete"Προσθήκη συνθήκης Top10MyRange.FormatConditions.AddTop10Με MyRange.FormatConditions (1)«Ορισμός παραμέτρου από πάνω προς τα κάτω.TopBottom = xlTop10Top«Ορίστε το top 5 μόνο. Βαθμός = 5Τέλος μεΜε το MyRange.FormatConditions (1) .Τα γραμματοσειρά«Ορίστε το χρώμα της γραμματοσειράς.Χρώμα = -16383844Τέλος μεΜε MyRange.FormatConditions (1). Εσωτερικό«Ορίστε το χρώμα του φόντου του κυττάρου.Χρώμα = 13551615Τέλος μεΤέλος υπο

Τα δεδομένα στο φύλλο εργασίας σας θα μοιάζουν με αυτό μετά την εκτέλεση του κώδικα:

Σημειώστε ότι η τιμή 145 εμφανίζεται δύο φορές, ώστε να επισημανθούν έξι κελιά.

Σημασία των παραμέτρων StopIfTrue και SetFirstPriority

Το StopIfTrue είναι σημαντικό εάν μια περιοχή κελιών έχει πολλούς κανόνες μορφοποίησης υπό όρους. Ένα μεμονωμένο κελί εντός της περιοχής μπορεί να πληροί τον πρώτο κανόνα, αλλά μπορεί επίσης να ικανοποιεί τους επόμενους κανόνες. Ως προγραμματιστής, μπορεί να θέλετε να εμφανίζει τη μορφοποίηση μόνο για τον πρώτο κανόνα στον οποίο πρόκειται. Άλλα κριτήρια κανόνων ενδέχεται να αλληλεπικαλύπτονται και μπορεί να κάνουν ακούσιες αλλαγές, εάν επιτρέπεται να συνεχίσουν προς τα κάτω τη λίστα κανόνων.

Η προεπιλογή σε αυτήν την παράμετρο είναι True, αλλά μπορείτε να την αλλάξετε αν θέλετε να ληφθούν υπόψη όλοι οι άλλοι κανόνες για αυτό το κελί:

1 MyRange. FormatConditions (1) .StopIfTrue = Λάθος

Η παράμετρος SetFirstPriority υπαγορεύει αν αυτός ο κανόνας συνθήκης θα αξιολογηθεί πρώτα όταν υπάρχουν πολλοί κανόνες για αυτό το κελί.

1 MyRange. FormatConditions (1) .SetFirstPriority

Αυτό μετακινεί τη θέση αυτού του κανόνα στη θέση 1 μέσα στη συλλογή συνθηκών μορφής και τυχόν άλλοι κανόνες θα μετακινηθούν προς τα κάτω με τους αριθμούς ευρετηρίου που έχουν αλλάξει. Προσοχή εάν κάνετε αλλαγές στους κανόνες στον κώδικα χρησιμοποιώντας τους αριθμούς ευρετηρίου. Πρέπει να βεβαιωθείτε ότι αλλάζετε ή διαγράφετε τον σωστό κανόνα.

Μπορείτε να αλλάξετε την προτεραιότητα ενός κανόνα:

1 MyRange. FormatConditions (1). Προτεραιότητα = 3

Αυτό θα αλλάξει τις σχετικές θέσεις οποιωνδήποτε άλλων κανόνων στη λίστα μορφοποίησης υπό όρους.

Χρήση μορφοποίησης υπό όρους Αναφορά σε άλλες τιμές κελιών

Αυτό είναι ένα πράγμα που δεν μπορεί να κάνει η μορφοποίηση υπό όρους Excel. Ωστόσο, μπορείτε να δημιουργήσετε τον δικό σας κώδικα VBA για να το κάνετε αυτό.

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

Ο ακόλουθος κώδικας θα τρέξει προς τα κάτω τη λίστα με τους αριθμούς σας, θα αναζητήσει το παρακείμενο κελί για μορφοποίηση κειμένου και στη συνέχεια θα μορφοποιήσει τον αριθμό όπως απαιτείται:

123456789101112131415161718192021 Sub ReferToAnotherCellForConditionalFormatting ()«Δημιουργήστε μεταβλητές για να κρατήσετε τον αριθμό των γραμμών για τα δεδομένα των πινάκωνDim RRow As Long, N As Long«Αποτυπώστε τον αριθμό των γραμμών εντός του εύρους δεδομένων των πινάκωνRRow = ActiveSheet.UsedRange.Rows.Count"Επαναλάβετε όλες τις γραμμές στο εύρος δεδομένων πίνακαΓια N = 1 To RRow"Χρησιμοποιήστε μια δήλωση Επιλογή περίπτωσης για να αξιολογήσετε τη μορφοποίηση με βάση τη στήλη 2Επιλέξτε Case ActiveSheet.Cells (N, 2). Value«Μετατρέψτε το εσωτερικό χρώμα σε μπλεΘήκη "Μπλε"ActiveSheet.Cells (N, 1) .Interior.Color = vbBlue«Μετατρέψτε το εσωτερικό χρώμα σε κόκκινοΘήκη "Κόκκινο"ActiveSheet.Cells (N, 1) .Interior.Color = vbRed«Μετατρέψτε το εσωτερικό χρώμα σε πράσινοΘήκη "Πράσινο"ActiveSheet.Cells (N, 1) .Interior.Color = vbGreenΤέλος ΕπιλογήΕπόμενο ΝΤέλος υπο

Μόλις εκτελεστεί αυτός ο κώδικας, το φύλλο εργασίας σας θα μοιάζει τώρα με αυτό:

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

Χειριστές που μπορούν να χρησιμοποιηθούν σε Καταστάσεις μορφοποίησης υπό όρους

Όπως είδατε στα προηγούμενα παραδείγματα, οι τελεστές χρησιμοποιούνται για να καθορίσουν πώς θα εκτιμηθούν οι τιμές συνθήκης π.χ. xlΜεταξύ.

Υπάρχει ένας αριθμός από αυτούς τους τελεστές που μπορούν να χρησιμοποιηθούν, ανάλογα με τον τρόπο που θέλετε να καθορίσετε τα κριτήρια κανόνα.

Ονομα αξία Περιγραφή
xlΜεταξύ 1 Μεταξύ. Μπορεί να χρησιμοποιηθεί μόνο εάν παρέχονται δύο τύποι.
xlΕξίσου 3 Ισος.
xlΜεγαλύτερο 5 Μεγαλύτερος από.
xlGreaterEqual 7 Μεγαλύτερο ή ίσο με.
xlLess 6 Λιγότερο από.
xlLessEqual 8 Λιγότερο ή ίσο με.
xlNotBetween 2 Όχι μεταξύ. Μπορεί να χρησιμοποιηθεί μόνο εάν παρέχονται δύο τύποι.
xlNotEqual 4 Όχι ίσο.

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

wave wave wave wave wave