Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [Γενικά] Αρχείο καταγραφής αδειών (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/3380-arxeio-katagrafis-adeion.html)

mmanoum 23-10-14 22:44

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

Ευχαριστώ προκαταβολικά για την βοήθεια σας και καλή συνέχεια στην αξιόλογη προσπάθεια σας.

Θα ήθελα λοιπόν την πολύτιμη βοήθεια σας στο εξής:

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

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

Θεωρώ ότι αυτό που ψάχνω δεν υπολογίζεται με φόρμουλα, αλλά μάλλον χρειάζεται κώδικα VBA, όμως το επίπεδο μου δεν μου επιτρέπει κάτι τέτοιο....:013:

Οπότε οποιαδήποτε βοήθεια σας είναι ευπρόσδεκτη.

kapetang 24-10-14 16:08

1 Συνημμένο(α)
Καλησπέρα

Μάνο, καλωσόρισες στην παρέα μας.

Στο επισυναπτόμενο αρχείο μπορείς να δεις μια λύση με κώδικα.

Τα χρονικά διαστήματα υπολογίζονται για όλες τις άδειες απουσίας (ΚΑ, ΑΣ).

Πατώντας το κουμπί «Υπολογισμός διαστημάτων απουσίας», εκτελείται η διαδικασία Intervals η οποία σε γενικές γραμμές:

1) Καθαρίζει την περιοχή στην οποία θα αντιγραφούν τα αποτελέσματα.

2) Υπολογίζει τα διαστήματα απουσίας με κανονική ή αναρρωτική άδεια.

3) Αντιγράφει τα ονόματα, τις ετικέτες και τα διαστήματα στην περιοχή αποτελεσμάτων.

Ο κώδικας περιέχει κατατοπιστικά σχόλια και είναι προσαρμοσμένος στο παράδειγμά σου.

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

Για να δούμε τον κώδικα πατούμε Alt+F11.

Φιλικά/Γιώργος

ΥΓ. Κάνε έλεγχο μήπως κάτι μου διέφυγε

mmanoum 24-10-14 18:50

1 Συνημμένο(α)
Γιώργο καλησπέρα,

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

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

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

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

kapetang 24-10-14 19:02

Μάνο, σ' ευχαριστώ και χαίρομαι που μπόρεσα να βοηθήσω.

kapetang 24-10-14 19:27

1 Συνημμένο(α)
Καλησπέρα

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

Στο επισυναπτόμενο αρχείο, άλλαξα λίγο τον κώδικα, για να αντιμετωπίζεται και η περίπτωση αυτή.

Φιλικά/Γιώργος

mpixlhs 25-10-14 13:06

1 Συνημμένο(α)
DES KAI AYTO AN SE ENDIAFEREI

mmanoum 26-10-14 09:17

Καλημέρα Γιώργο (mpixlhs),

κάθε βοήθεια είναι πάντα ευπρόσδεκτη.

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

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

mmanoum 30-10-14 09:09

1 Συνημμένο(α)
Καλημέρα σε όλους!

Θα ήθελα πάλι την πολύτιμη βοήθεια σας στο εξής:

Έφτιαξα το ετήσιο πλάνο καταγραφής αδειών με όλους τους μήνες τους έτους, Ορίζοντας τα αντίστοιχα διαστήματα του VBA κώδικα.
Όμως μου δημιουργείται ένα "μπάχαλο" στην απεικόνιση των διαστημάτων...

Προσπάθησα να φτιάξω τον κώδικα διαφορετικά, αλλά χωρίς επιτυχία.

Τι θέλω λοιπόν να κάνω:
Τα διαστήματα των αδειών (πίνακας Α, πίνακας Β κλπ) στο φύλλο "Καταχώρηση" να μεταφέρονται με την χρήση του κώδικα στο φύλλο "Διαστήματα", αλλά στους ορισμένους πίνακες αντίστοιχα ανά μήνα (αφήνοντας φυσικά και κάποια κενά κελιά για τις περιπτώσεις μεγαλύτερου εύρους αδειών).

Στο επισυναπτόμενο έχω το νέο παράδειγμα, χωρίς κάποια αλλαγή στον κώδικα (παράδειγμα 3).

Κάθε βοήθεια ευπρόσδεκτη.

kapetang 30-10-14 18:34

1 Συνημμένο(α)
Καλησπέρα

Μάνο, δες μια προσέγγιση στο επισυναπτόμενο αρχείο.

1) Στον κώδικα η περιοχή εισόδου ορίστηκε ώστε να περιλαμβάνει όλους τους πίνακες Α, Β, κλπ.

2) Επίτηδες η περιοχή εξόδου ορίστηκε στο κελί A20 του φύλλου Διαστήματα (στο VBAProject είναι το Sheet4) για να μπορέσεις να συγκρίνεις το αποτέλεσμα με το ζητούμενο.

Μπορείς να την ορίσεις στο κελί A1.

3) Ο ορισμός των παραπάνω περιοχών γίνεται στην ρουτίνα DefineMοnths

4) Ο πίνακας για κάθε μήνα έχει ακριβώς το απαιτούμενο μέγεθος, χωρίς κενά.

5) Ο κώδικας σχεδιάστηκε για να δίνει αποτελέσματα και για περιόδους που εκτείνονται σε περισσότερα έτη.

Χρειάζεται όμως να δοκιμαστεί.

Φιλικά/Γιώργος

mmanoum 30-10-14 21:47

1 Συνημμένο(α)
Καλησπέρα Γιώργο.

Ευχαριστώ για την βοήθεια σου και ζητώ προκαταβολικά συγνώμη αν καταχράζομαι τον χρόνο σου:dft005:

Στο επισυναπτόμενο έχω τρέξει δυο διαφορετικές περιπτώσεις αδειών και έχω προσθέσει έναν ακόμα μήνα.

Το πρόβλημα όπως μπορεί να παρατηρήσει κανείς είναι ότι στο φύλλο "Διαστήματα" όπου υπάρχουν περισσότερα διαστήματα αδειών πχ στον μήνα Οκτώβριο καλύπτονται 42 στήλες ακριβώς σε αντίθεση με το φύλλο "Διαστήματα (2)", όπου στον αντίστοιχο μήνα τα διαστήματα είναι μικρότερα.

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

Άρα λοιπόν στο φύλλο "Διαστήματα" θα υπάρχει ένας πίνακας 12x42 (12 μήνες επί 42 στήλες ανά μήνα) και εκεί μέσα στα ορισμένα κελιά του εκάστοτε μήνα θα πρέπει να μεταφέρονται τα διαστήματα των αδειών και σύνολα αυτών.

Προσπάθησα να "πειράξω" τον κώδικα αλλά χωρίς τύχη, όποτε θα χρειαστώ τα φώτα σας και πάλι...:026:

kapetang 30-10-14 22:48

Καλησπέρα

Δεν καταλαβαίνω το πρόβλημα.

Γράφεις «Το πρόβλημα όπως μπορεί να παρατηρήσει κανείς είναι ότι στο φύλλο "Διαστήματα" όπου υπάρχουν περισσότερα διαστήματα αδειών πχ στον μήνα Οκτώβριο καλύπτονται 42 στήλες ακριβώς σε αντίθεση με το φύλλο "Διαστήματα (2)", όπου στον αντίστοιχο μήνα τα διαστήματα είναι μικρότερα.».

Στο αρχείο που ανέβασες «ExampleAdeies5.xlsm», με βάση το οποίο διαμόρφωσα τον κώδικα, υπάρχουν μόνο δύο φύλλα τα «Καταχώρηση» και «Διαστήματα».

Στο «Καταχώρηση» καταχωρούνται οι απουσίες κάθε μέρα. Το πλήθος των στηλών κάθε μήνα εξαρτάται από τη διάρκειά του (28 έως 31) και συνεπώς δεν είναι σταθερό.

Στο φύλλο «Διαστήματα» γίνεται η εξαγωγή των διαστημάτων.
Στο παράδειγμά σου για το μήνα Οκτώβριο χρησιμοποιούνται 17 στήλες και για το Νοέμβριο 19.

Οι 42 στήλες που αναφέρεις δεν ξέρω από πού προέκυψαν. Επίσης δεν ξέρω πως προέκυψαν τα στοιχεία του φύλλου Διαστήμα(2) του νέου αρχείου που ανέβασες.

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

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

Φιλικά/Γιώργος

mmanoum 30-10-14 23:13

Γιώργο γεια και πάλι,

Ζητώ συγνώμη αν δεν έγινα κατανοητός.:blushing:

Το φύλλο "Διαστήματα (2)" είναι μια αντιγραφή του φύλλου "Διαστήματα" (έχοντας τρέξει τον κώδικα) με διαφορετικές ημερομηνίες αδειών απλά για να περιγράψω το πως καταγράφονται διαφορετικά εύρη διαστημάτων των απουσιών...
Το λάθος είναι δικό μου που δεν εξήγησα την παραδειγματική δημιουργία του τρίτου φύλλου.

Οι 42 στήλες ανά μήνα προκύπτουν από 3 στήλες (Έναρξη/Λήξη/Σύνολο) επί 14...Κατέληξα σε αυτό τον αριθμό υπολογίζοντας ένα ακραίο σενάριο αδειών βάσει του οποίου χρειάζονται 14 τουλάχιστον διαστήματα (όπως πχ τον μήνα Οκτώβριο).

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

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

kapetang 30-10-14 23:49

1) Αν ήθελες 42 στήλες σταθερά θα έπρεπε να το διευκρινίσεις, Στο παράδειγμα που ανέβασες ήταν 17 και 19.

2) Γιατί να είναι σταθερά 42 στήλες, αφού στους περισσότερους μήνες χρειάζονται λιγότερες.

3) Υπάρχουν και πιο ακραία σενάρια. Δοκίμασε μια εναλλαγή ΚΑ και ΑΣ.

kapetang 31-10-14 08:51

1 Συνημμένο(α)
Καλημέρα

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

Ελέγχοντας τον κώδικα διαπίστωσα ότι υπήρχε κάποιο λάθος.

Στο επισυναπτόμενο αρχείο το διόρθωσα.

Αντικατέστησα επίσης τα συνημμένα αρχεία και στα προηγούμενα μηνύματά μου

Φιλικά/Γιώργος

mmanoum 31-10-14 11:11

Καλημέρα Γιώργο,

Ευχαριστώ πολύ για την βοήθεια σου...:worthy:
Το τελευταίο αρχείο ομολογώ ότι με "ξεκόλλησε"!

kapetang 31-10-14 15:35

1 Συνημμένο(α)
Καλησπέρα

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

Στο συνημμένο αρχείο AdeiesPerDayToIntervals3 δίνεται και η δυνατότητα να μη γίνεται η παραπάνω διάκριση.

Έτσι συνεχόμενα διαστήματα απουσίας, ανεξάρτητα από το λόγο απουσίας, συνενώνονται σε ένα.

Φιλικά/Γιώργος

mmanoum 02-11-14 22:19

Γιώργο καλησπέρα,

Πραγματικά κάθε βοήθεια και προσθήκη σου αναβαθμίζει το παράδειγμα.

Θα ήθελα να ρωτήσω το εξής:
Υπάρχει δυνατότητα τα αποτελέσματα στο φύλλο "Διαστήματα" να μην εμφανίζονται συνεχόμενα;

Δλδ κάθε μήνας ξεχωριστά να βρίσκεται σε διαφορετικό εύρος κελιών (πχ Οκτώβριος Α1:Ρ5, Νοέμβριος Α20:Μ24 στην εντολή του "Υπολογισμού διαστημάτων απουσίας χωρίς διάκριση ΚΑ, ΑΣ") και να επαναλαμβάνονται φυσικά οι σταθερές στήλες των υπαλλήλων (ΥΠΑΛΛΗΛΟΣ Α, ΥΠΑΛΛΗΛΟΣ Β κλπ);

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

Ευχαριστώ προκαταβολικά:011:

kapetang 02-11-14 23:44

Καλησπέρα και Καλημέρα

Υπάρχει αυτή η δυνατότητα.

Στον κώδικα η θέση των αποτελεσμάτων κάθε μήνα καθορίζεται από τη μεταβλητή rngOutMonth.

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

Φιλικά/Γιώργος.

kapetang 03-11-14 10:39

1 Συνημμένο(α)
Καλημέρα

Μάνο, νόμισα ότι ήθελες τα μηνιαία αποτελέσματα να διατάσσονται οριζόντια, αλλά όχι συνεχόμενα.

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

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

Φιλικά/Γιώργος

mmanoum 03-11-14 13:56

Γιώργο καλησπέρα,

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

Η βοήθεια σου μέχρι τώρα με παρακίνησε να ψάξω περισσότερο την VBA. Ευχαριστώ και πάλι.
Πραγματικά οι υποδείξεις και τα παραδείγματα σου προσωπικά με κατατόπισαν πλήρως.:icon_hihi::respect:


Η ώρα είναι 18:46.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2