Προσδιορισμός διπλών χρονικών πλαισίων

Anonim

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

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

Μπορείτε να βρείτε την αρχική ερώτηση εδώ

Ακολουθεί το στιγμιότυπο του φύλλου πριν:

Ακολουθεί το στιγμιότυπο του μετά φύλλου:

Για να πάρετε τον κωδικό? πρέπει να ακολουθήσουμε τα παρακάτω βήματα για να ξεκινήσει η οθόνη επεξεργασίας της Visual Basic

  • Κάντε κλικ στην καρτέλα Προγραμματιστής
  • Από την ομάδα κωδικών, επιλέξτε Visual Basic

  • Αντιγράψτε τον παρακάτω κώδικα στην τυπική μονάδα
Sub FindOverlapTime () Dim rng As Range, cell As Range, trng As Range, tcell As Range Dim lr As Long lr = Cells (Rows.Count, "A"). End (xlUp). Row Range ("A2: H" & lr) .Interior.ColorIndex = xlNone Set rng = Range ("C2: C" & lr) Για κάθε κελί σε rng If Application.CountIf (Range ("C2", cell), cell.Value)> 1 Στη συνέχεια ορίστε trng = Εύρος ("F2: F" & cell.Row - 1) Για κάθε tcell In trng If tcell.Offset (0, -3) = cell then If (cell.Offset (0, 3)> = tcell And cell.Offset (0, 3) = tcell And cell.Offset (0, 4) <= tcell.Offset (0, 1)) Στη συνέχεια Εύρος ("A" & cell.Row & ": H" & cell.Row). Εσωτερικό ColorIndex = 3 Τέλος Αν Τέλος Αν Επόμενο Τέλος tcell Αν Επόμενο Κελί Τέλος Υπο 

  • Καθώς τρέχουμε τη μακροεντολή, θα έχουμε το αποτέλεσμα. ανατρέξτε παρακάτω στιγμιότυπο:

Επεξήγηση κώδικα:

  • Δηλώστε rng, cell, trng, tcell ως εύρος
  • Lr όσο καιρό
  • lr = Κελιά (Rows.Count, "A"). End (xlUp). Η σειρά θα ελέγξει την τελευταία σειρά του τρέχοντος φύλλου.
  • Εύρος ("A2: H" & lr) .Interior.ColorIndex = xlΚανένα; Αυτό θα επιλέξει εύρος ξεκινώντας από το κελί A2 έως τη στήλη H έως την τελευταία σειρά (A2: H5 θα επιλεγεί στο παράδειγμά μας) και θα διασφαλίσει ότι δεν έχει συμπληρωθεί χρώμα.
  • Ρύθμιση rng = Εύρος ("C2: C" & lr); η στήλη C (αναγνωριστικά προφίλ) θα αποθηκευτεί σε rng
  • Για κάθε κελί σε rng? τώρα θα τρέξουμε Για κάθε βρόχο στο rng, δηλαδή στη στήλη C
  • Εάν Application.CountIf (Εύρος ("C2", κελί), cell.Value)> 1 Στη συνέχεια, Αυτό θα ελέγξει τον αριθμό των φορών που η τιμή κελιού είναι μεγαλύτερη από 1. αν βρεθεί μεγαλύτερη από 1, τότε
  • Ορισμός trng = Range ("F2: F" & cell.Row - 1); τώρα θα ορίσουμε τη στήλη F δηλ. το IN in time σε trng
  • Το επόμενο θα τρέξουμε για κάθε βρόχο στο trng και θα ελέγξουμε αν υπάρχει διπλή σειρά και θα το επισημάνουμε με κόκκινο χρώμα αν βρεθεί.

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

Αν σας άρεσαν τα ιστολόγια μας, μοιραστείτε το με τους φίλους σας στο Facebook. Επίσης, μπορείτε να μας ακολουθήσετε στο Twitter και το Facebook.
Θα θέλαμε πολύ να σας ακούσουμε, ενημερώστε μας πώς μπορούμε να βελτιώσουμε, να συμπληρώσουμε ή να καινοτομήσουμε το έργο μας και να το κάνουμε καλύτερο για εσάς. Γράψτε μας στον ιστότοπο email