Συντονιστική Επιλογή

Έχετε μια μεγάλη οθόνη, αλλά τα τραπέζια με τα οποία εργάζεστε είναι ακόμα μεγαλύτερα. Και, κοιτάζοντας πάνω από την οθόνη αναζητώντας τις απαραίτητες πληροφορίες, υπάρχει πάντα η ευκαιρία να «γλιστρήσετε» τα μάτια σας στην επόμενη γραμμή και να κοιτάξετε προς τη λάθος κατεύθυνση. Ξέρω ακόμη και ανθρώπους που για τέτοιες περιστάσεις κρατούν πάντα κοντά τους έναν ξύλινο χάρακα για να τον στερεώσουν στη γραμμή της οθόνης. Τεχνολογίες του μέλλοντος! 

Και αν η τρέχουσα γραμμή και στήλη επισημαίνονται όταν το ενεργό κελί μετακινείται στο φύλλο; Ένα είδος επιλογής συντεταγμένων όπως αυτό:

Καλύτερο από χάρακα, σωστά;

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

Μέθοδος 1. Προφανές. Μακροεντολή που επισημαίνει την τρέχουσα σειρά και στήλη

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

Ανοίξτε ένα φύλλο με έναν πίνακα στον οποίο θέλετε να λάβετε μια τέτοια επιλογή συντεταγμένων. Κάντε δεξί κλικ στην καρτέλα του φύλλου και επιλέξτε την εντολή από το μενού περιβάλλοντος Κείμενο πηγής (Κωδικός πηγής).Θα πρέπει να ανοίξει το παράθυρο του Visual Basic Editor. Αντιγράψτε αυτό το κείμενο αυτών των τριών μακροεντολών σε αυτό:

Dim Coord_Selection As Boolean 'Παγκόσμια μεταβλητή για επιλογή ενεργοποίηση/απενεργοποίηση Sub Selection_On() 'Μακροεντολή στην επιλογή Coord_Selection = True End Sub Selection_Off() 'Απενεργοποίηση μακροεντολής επιλογής Coord_Selection = False End Sub' Κύρια διαδικασία που εκτελεί την επιλογή Ιδιωτικό δευτερεύον φύλλο εργασίας_SelectionChange(ByVal Εύρος) Dim WorkRange As Range Εάν Target.Cells.Count > 1 Στη συνέχεια, πραγματοποιήστε έξοδο από το Sub 'εάν έχουν επιλεγεί περισσότερα από 1 κελιά, έξοδος Εάν Coord_Selection = False Στη συνέχεια, Exit Sub 'εάν η επιλογή είναι απενεργοποιημένη, έξοδος από Application.ScreenUpdating = False Set WorkRange = Range ("A6:N300") «διεύθυνση του εύρους εργασίας εντός του οποίου είναι ορατή η επιλογή  

Αλλάξτε τη διεύθυνση του εύρους εργασίας στη δική σας – μέσα σε αυτό το εύρος θα λειτουργήσει η επιλογή μας. Στη συνέχεια, κλείστε το πρόγραμμα επεξεργασίας Visual Basic και επιστρέψτε στο Excel.

Πατήστε τη συντόμευση πληκτρολογίου ALT + F8για να ανοίξετε ένα παράθυρο με μια λίστα με τις διαθέσιμες μακροεντολές. Μακροεντολή Selection_On, όπως μπορείτε να μαντέψετε, περιλαμβάνει την επιλογή συντεταγμένων στο τρέχον φύλλο και τη μακροεντολή Selection_Off – το σβήνει. Στο ίδιο παράθυρο, κάνοντας κλικ στο κουμπί παράμετροι (Επιλογές) Μπορείτε να αντιστοιχίσετε συντομεύσεις πληκτρολογίου σε αυτές τις μακροεντολές για εύκολη εκκίνηση.

Πλεονεκτήματα αυτής της μεθόδου:

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

Μειονεκτήματα αυτής της μεθόδου:

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

Μέθοδος 2. Πρωτότυπο. CELL + Λειτουργία μορφοποίησης υπό όρους

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

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

  • μια κωδική λέξη για την παράμετρο, όπως "στήλη" ή "γραμμή"
  • τη διεύθυνση του κελιού για το οποίο θέλουμε να προσδιορίσουμε την τιμή αυτής της παραμέτρου

Το κόλπο είναι ότι το δεύτερο όρισμα είναι προαιρετικό. Εάν δεν έχει καθοριστεί, τότε λαμβάνεται το τρέχον ενεργό κελί.

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

  1. Επιλέγουμε τον πίνακα μας, δηλαδή εκείνα τα κελιά στα οποία θα πρέπει να εμφανίζεται στο μέλλον η επιλογή συντεταγμένων.
  2. Στο Excel 2003 και παλαιότερες εκδόσεις, ανοίξτε το μενού Μορφή – Μορφοποίηση υπό όρους – Τύπος (Μορφή — Μορφοποίηση υπό όρους — Τύπος). Στο Excel 2007 και νεότερα – κάντε κλικ στην καρτέλα Αρχική (Σπίτι)κουμπί Μορφοποίηση υπό όρους – Δημιουργία κανόνα (Μορφοποίηση υπό όρους — Δημιουργία κανόνα) και επιλέξτε τον τύπο κανόνα Χρησιμοποιήστε έναν τύπο για να προσδιορίσετε ποια κελιά θα μορφοποιηθούν (Χρησιμοποιήστε τον τύπο)
  3. Εισαγάγετε τον τύπο για την επιλογή των συντεταγμένων μας:

    =OR(CELL("σειρά")=ROW(A2),CELL("στήλη")=COLUMN(A2))

    =OR(CELL(«σειρά»)=ROW(A1),CELL(«στήλη»)=COLUMN(A1))

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

  4. Κάντε κλικ στο κουμπί Πλαίσιο (Μορφή) και ορίστε το χρώμα πλήρωσης.

Όλα είναι σχεδόν έτοιμα, αλλά υπάρχει μια απόχρωση. Το γεγονός είναι ότι το Excel δεν θεωρεί μια αλλαγή στην επιλογή ως αλλαγή στα δεδομένα στο φύλλο. Και, ως αποτέλεσμα, δεν ενεργοποιεί εκ νέου υπολογισμό των τύπων και επαναχρωματισμό της μορφοποίησης υπό όρους μόνο όταν αλλάξει η θέση του ενεργού κελιού. Επομένως, ας προσθέσουμε μια απλή μακροεντολή στη μονάδα φύλλου που θα το κάνει αυτό. Κάντε δεξί κλικ στην καρτέλα του φύλλου και επιλέξτε την εντολή από το μενού περιβάλλοντος Κείμενο πηγής (Κωδικός πηγής).Θα πρέπει να ανοίξει το παράθυρο του Visual Basic Editor. Αντιγράψτε αυτό το κείμενο αυτής της απλής μακροεντολής σε αυτό:

Ιδιωτικό δευτερεύον φύλλο εργασίας_SelectionChange(ByVal Target As Range) ActiveCell.Calculate End Sub  

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

Πλεονεκτήματα αυτής της μεθόδου:

  • Η μορφοποίηση υπό όρους δεν διακόπτει τη μορφοποίηση προσαρμοσμένου πίνακα
  • Αυτή η επιλογή επιλογής λειτουργεί σωστά με συγχωνευμένα κελιά.
  • Δεν υπάρχει κίνδυνος διαγραφής μιας ολόκληρης σειράς και στήλης δεδομένων σε τυχαίο κλικ Διαγραφή.
  • Οι μακροεντολές χρησιμοποιούνται ελάχιστα

Μειονεκτήματα αυτής της μεθόδου:

  • Ο τύπος για τη μορφοποίηση υπό όρους πρέπει να εισαχθεί χειροκίνητα.
  • Δεν υπάρχει γρήγορος τρόπος για να ενεργοποιήσετε/απενεργοποιήσετε μια τέτοια μορφοποίηση – είναι πάντα ενεργοποιημένη μέχρι να διαγραφεί ο κανόνας.

Μέθοδος 3. Βέλτιστη. Μορφοποίηση υπό όρους + Μακροεντολές

Χρυσή τομή. Χρησιμοποιούμε τον μηχανισμό για την παρακολούθηση της επιλογής στο φύλλο χρησιμοποιώντας μακροεντολές από τη μέθοδο-1 και προσθέτουμε ασφαλή επισήμανση σε αυτήν χρησιμοποιώντας μορφοποίηση υπό όρους από τη μέθοδο-2.

Ανοίξτε ένα φύλλο με έναν πίνακα στον οποίο θέλετε να λάβετε μια τέτοια επιλογή συντεταγμένων. Κάντε δεξί κλικ στην καρτέλα του φύλλου και επιλέξτε την εντολή από το μενού περιβάλλοντος Κείμενο πηγής (Κωδικός πηγής).Θα πρέπει να ανοίξει το παράθυρο του Visual Basic Editor. Αντιγράψτε αυτό το κείμενο αυτών των τριών μακροεντολών σε αυτό:

Dim Coord_Selection As Boolean Sub Selection_On() Coord_Selection = True End Sub Sub Selection_Off() Coord_Selection = False End Sub Private Subsheet_SelectionChange(ByVal Target as Range) Dim WorkRange As Range, CrossRange As Range Set:A"7" 'διεύθυνση рабочего диапазона с таблицей If Target.Count > 300 Στη συνέχεια, Exit Sub If Coord_Selection = False Τότε WorkRange.FormatConditions.Delete Exit Sub End If Application.ScreenUpdating = False If Not Intersect(Target, WorkRange) Is Nothing WorkRange, Union(Target.EntireRow, Target.EntireColumn)) WorkRange.FormatConditions.Delete CrossRange.FormatConditions.Add Type:=xlExpression, Formula1:="=1" CrossRange.FormatConditions(1).ColorIndergetrg. .Delete End If End Sub  

Μην ξεχάσετε να αλλάξετε τη διεύθυνση εύρους εργασίας στη διεύθυνση του πίνακα. Κλείστε το πρόγραμμα επεξεργασίας της Visual Basic και επιστρέψτε στο Excel. Για να χρησιμοποιήσετε τις μακροεντολές που προστέθηκαν, πατήστε τη συντόμευση πληκτρολογίου ALT + F8  και προχωρήστε με τον ίδιο τρόπο όπως η μέθοδος 1. 

Μέθοδος 4. Όμορφη. Πρόσθετο FollowCellPointer

Ο MVP του Excel, Jan Karel Pieterse από την Ολλανδία, προσφέρει ένα δωρεάν πρόσθετο στον ιστότοπό του FollowCellPointer(36Kb), το οποίο λύνει το ίδιο πρόβλημα σχεδιάζοντας γραμμές γραφικών βέλους χρησιμοποιώντας μακροεντολές για να επισημάνετε την τρέχουσα σειρά και στήλη:

 

Ωραία λύση. Όχι χωρίς δυσλειτουργίες κατά τόπους, αλλά σίγουρα αξίζει να δοκιμάσετε. Κατεβάστε το αρχείο, αποσυσκευάστε το στο δίσκο και εγκαταστήστε το πρόσθετο:

  • σε Excel 2003 και παλαιότερες εκδόσεις – μέσω του μενού Υπηρεσία – Πρόσθετα – Επισκόπηση (Εργαλεία — Πρόσθετα — Περιήγηση)
  • στο Excel 2007 και μεταγενέστερα Αρχείο – Επιλογές – Πρόσθετα – Μετάβαση – Περιήγηση (Αρχείο — Επιλογές Excel — Πρόσθετα — Μετάβαση — Περιήγηση)

  • Τι είναι οι μακροεντολές, πού να εισαγάγετε κώδικα μακροεντολής στη Visual Basic

 

Αφήστε μια απάντηση