Χρησιμοποιώντας κυκλικές αναφορές στο πλεονέκτημά μας - Συμβουλές Excel

Η Μισέλ ρωτά,

Νομίζω ότι είμαι στο σωστό δρόμο με κυκλική αναφορά. Εδώ είναι το πρόβλημά μου. Έχω δύο κελιά A1=5και B1=5. Αυτό που θέλω να κάνω είναι να κάνω το B1 να απομνημονεύσει 5 και μετά να θέσω μια νέα τιμή στο A1, ας πούμε ότι το A1 τώρα ισούται με το 10. Μπορώ να έχω έναν τύπο B1 που απομνημονεύει το 5, αλλά επίσης προσθέτει 10; Λοιπόν τώρα B1=15;

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

  • Από το μενού Excel, επιλέξτε Εργαλεία> Επιλογές.
  • Μεταβείτε στην καρτέλα Υπολογισμός. Επιλέξτε το πλαίσιο για Επαναλήψεις. Αλλαγή μέγιστων επαναλήψεων σε 1.
  • Κάντε κλικ στο OK για να κλείσετε το παράθυρο διαλόγου επιλογών.
  • Εισαγάγετε 5 στο κελί A1.
  • Εισαγάγετε 0 στο κελί B1
  • Εισαγάγετε =A1+B1στο κελί B1
  • Τώρα, καθώς εισάγετε νέες τιμές στο A1, η καταχώριση στο B1 θα θυμάται το παλιό σύνολο και θα προσθέσει την τιμή από το A1.

Εδώ είναι ο τεράστιος περιορισμός. Δεν μπορείτε να εισαγάγετε τιμές αλλού στο φύλλο! Κάθε φορά που εισάγετε μια τιμή ή το φύλλο υπολογίζεται εκ νέου, η τιμή στο A1 θα προστίθεται στην τιμή στο B1. Έτσι, πατώντας το F9 πολλές φορές, θα παρακολουθήσετε αύξηση B1 κατά 5 για κάθε F9.

Ο ασφαλέστερος τρόπος για να το κάνετε αυτό είναι με μια μικρή μακροεντολή χειριστή συμβάντων. Θα χρειαστεί να προσθέσετε αυτόν τον κωδικό στο παράθυρο κώδικα για το Sheet1 (υποθέτοντας ότι εργάζεστε στο Sheet1). Ο κωδικός χειριστή συμβάντων θα έχει ως εξής:

Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = “$A$1” Then Application.EnableEvents = False Range(“B1”).Value = Range(“B1”).Value + Target.Value Application.EnableEvents = True End If End Sub

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

ενδιαφέροντα άρθρα...