![]() |
Excel Υπολογισμοί ωραρίων - ωρών, προβλήματα 1 Συνημμένο(α) Αγαπητέ διαχειριστή Αγαπητοί επισκέπτες Παρακολουθώ και επισκέπτομαι τακτικά τη σελίδα σας αφού τη βρίσκω εξαιρετικά ενδιαφέρουσα και χρήσιμη, το τελευταίο δε διάστημα έχω δημιουργήσει και λογαριασμό μέλους. Σήμερα θα ήθελα να σας εκθέσω ένα θέμα που με έχει ταλαιπωρήσει αρκετά. Σε υπολογισμούς ωρών, ωραρίων, όταν χρησιμοποιείται ένας τύπος - συνάρτηση για την αφαίρεση του 7,5 - 7,5 που θεωρητικά μας δίνει αποτέλεσμα 0 (μηδέν), το Excel δημιουργεί ένα ανεξήγητο bag και δίνει ένα αποτέλεσμα με πάρα πολλά δεκαδικά ψηφία. Στο αναφερόμενο παράδειγμα χρησιμοποιούμε φύλλα του Excel για την καταχώρηση των εβδομαδιαίων προγραμμάτων εργασίας των Υπαλλήλων μιας εταιρείας, που λειτουργεί σε 24ωρη βάση όλες τις μέρες της εβδομάδος. Χρειάζεται να υπολογίζονται και να καταχωρούνται οι ώρες εργασίας και οι υπερωρίες των υπαλλήλων σε καθημερινή βάση για όλο το προσωπικό. Το πρόβλημα αυτό εμφανίζεται μόνο στο ωράριο 10:00 - 17:30 και σε κανένα άλλο, παρ' όλο που χρησιμοποιούνται προφανώς οι ίδιες ακριβώς συναρτήσεις για όλα τα ωράρια. Ευχαριστώ |
Καλησπέρα Άκη, δεν πρόκειται για λάθος του excel. Το excel, όπως και άλλα προγράμματα, για την αποθήκευση των αριθμών χρησιμοποιεί ένα περιορισμένο πλήθος ψηφίων. Έτσι υπάρχουν αριθμοί που αποθηκεύονται με απόλυτη ακρίβεια και άλλοι με προσέγγιση. Υπάρχει περίπτωση ένας υπολογισμός με θεωρητικό αποτέλεσμα 7,5 να δώσει ως αποτέλεσμα, λόγω των στρογγυλοποιήσεων που κάνει το excel, έναν αριθμό παραπλήσιο του 7,5, αλλά διαφορετικό. Η διαφορά τους συνεπώς θα είναι ένας αριθμός κοντά στο μηδέν, αλλά όχι μηδέν. Για την αντιμετώπιση αυτού του προβλήματος συνήθως χρησιμοποιείται η συνάρτηση ROUND(). Αν οι υπερωρίες υπολογίζονται με ακρίβεια δεκάτου, μπορείς να τις υπολογίζεις με ένα τύπο της μορφής: =IF(F64="";"";ROUND(F64-7,5;1)) Φιλικά/Γιώργος |
Kαλησπέρα μήπως με μορφοποίηση της περιοχής σε αριθμό , με δεκαδικά θανάσης |
Σας ευχαριστώ όλους για τις απαντήσεις σας. Δεν υπήρξε άμεση δική μου παρέμβαση γιατί έλειψα για λίγες ώρες, χωρίς εκ παραδρομής να έχω αποσυνδεθεί. Το πρόβλημα θα έπρεπε να εμφανίζεται σε όλες τις αφαιρέσεις 7,5 - 7,5 άλλων ωραρίων (που δεν εμφανίζεται,) ενώ εμφανίζεται στην αφαίρεση που προέρχεται από ωράριο 10:00 - 17:30. Δεν αφορά δηλ. θέμα ακρίβειας υπολογισμού αφού σε όλες τις περιπτώσεις το αποτέλεσμα είναι μηδέν (ακριβώς,) όπως βλέπετε στο συνημμένο παράδειγμα και όχι περίπου μηδέν και μάλιστα στα είκοσι δεκαδικά ψηφία. Είναι εμφανές στο xlsx αν διευρύνουμε τις στήλες πάρα πολύ. Άκης |
Καλησπέρα Στο κελί G68 από την τιμή του κελιού F68 αφαιρείται το 7,5. Αν σε κάποιο κελί βάλουμε τον τύπο: =F68=7,5 θα πάρουμε TRUE (δηλαδή F68=7,5). Υπολογίζοντας όμως το excel την παράσταση F68-7,5 , λόγω στρογγυλοποιήσεων, δε δίνει το αναμενόμενο αποτέλεσμα, που είναι το μηδέν, αλλά ένα αρνητικό αριθμό πολύ κοντά στο μηδέν. Αν βάλουμε σε κάποιο κελί τον τύπο: =F68-7,5=0 θα πάρουμε FALSE (δηλαδή το αποτέλεσμα της πράξης F68-7,5<>0 ). Αυτή η συμπεριφορά, είναι παράλογη για την ανθρώπινη λογική, αλλά για τη λογική του PC φυσιολογική. Το παραπάνω πρόβλημα είναι πολύ γνωστό στους προγραμματιστές και όταν γράφουν κώδικα παίρνουν μέτρα για να το αντιμετωπίσουν. Για παράδειγμα αντί να γράψουν: If x=a Then … γράφουν: If Abs(x-a)<=e Then … (e πολύ μικρός θετικός). Όπως πρότεινα και στο προηγούμενο μήνυμά μου το πρόβλημα στο excel μπορεί να αντιμετωπιστεί με τη συνάρτηση ROUND. Φιλικά/Γιώργος |
Καλησπέρα Ο Γιώργος έχει δίκιο, με την διαφορά η στρογγυλοποίηση θα γίνει στο τύπο που δημιουργεί τα δεκαδικά δηλ =...(G65-F65+(G65<F65))*24 σε =....round((G65-F65+(G65<F65))*24;1) Θανάσης |
Γιώργο, Θανάση, αγαπητοί φίλοι, καλησπέρα Πολύ αναλυτικές οι απαντήσεις σας και κατατοπιστικές. Όμως εξακολουθώ και αναρωτιέμαι, γιατί αυτή η "ιδιομορφία" του excel εμφανίζεται μόνο στο συγκεκριμένο υπολογισμό (10:00 - 17:30) και όχι στα υπόλοιπα ωράρια αφενός και αφετέρου, δεν εμφανίζεται στην αρχική διαδικασία υπολογισμών, που γίνονται με απλές πράξεις προσθαφαιρέσεων, (επάνω μέρος του φύλλου row 1;34), αλλά στη δεύτερη περίπτωση (row 44;74) όπου υπάρχουν τα κριτήρια αριθμών ή κενών κελιών. Τι είναι δηλ. αυτό που το "ενοχλεί" και δεν βγαίνουν οι πράξεις ακριβώς με το σωστό αποτέλεσμα. Τι διαφορά έχει το κελί G68 από το αντίστοιχο G28. Συγχωρέστε με που ξαναρωτάω, αλλά προσπαθώ να το ξεκαθαρίσω. Ευχαριστώ Άκης |
Καλημέρα σε όλους! Άκη καλωσόρισες στο φόρουμ! Ο τύπος που χρησιμοποιείται στο G28 είναι: =F28-7,5 (δεν περιβάλλεται από παρενθέσεις) ενώ ο τύπος στο G68 είναι: =IF(F68="";"";F68-7,5) (περιβάλλεται από παρενθέσεις). Άρα μιλάμε για διαφορετικές προσεγγίσεις. Πιο απλά, αν στο G68 χρησιμοποιήσεις: =F68-7,5 το αποτέλεσμα θα είναι το αναμενόμενο ενώ αν στο G68 χρησιμοποιήσεις: =(F68-7,5) δεν θα πάρεις το στρογγυλοποιημένο από την Excel αποτέλεσμα ( 0 ) αλλά το ακριβές αποτέλεσμα (-1,77636E-15 η -2E-15). Βλέπουμε λοιπόν ότι η Excel (πολύ σωστά κατά τη γνώμη μου) δεν στρογγυλοποιεί τιμές όταν βρίσκονται μέσα στις παρενθέσεις ενός τύπου. Αυτό θα μπορούσε να προκαλέσει μεγαλύτερες αποκλίσεις στο τελικό αποτέλεσμα ενός τύπου με ότι συνεπάγεται απ' αυτό. Με εκτίμηση Τάσος |
Καλημέρα Άκη, από τη φύση τους, τα σφάλματα στρογγυλοποίησης μπορεί να συμβαίνουν για κάποιους συνδυασμούς αριθμών, πράξεων και σειράς εκτέλεσης των πράξεων και για άλλους όχι. Οι δεκαδικοί αριθμοί που αντιστοιχούν στα ωράρια 10:10-17:30 είναι διαφορετικοί από αυτούς που αντιστοιχούν στα υπόλοιπα, συνεπώς δεν είναι αδικαιολόγητα τα διαφορετικά αποτελέσματα. Αν αναζητήσεις στο διαδίκτυο τη φράση excel precision , θα βρεις πάρα πολλά στοιχεία που εξηγούν το θέμα με κάθε λεπτομέρεια.. Φιλικά/Γιώργος |
Καλησπέρα σε όλους Λόγω απουσίας δεν είχα δυνατότητα να συνδεθώ τις προηγούμενες ημέρες. Τάσο, Γιώργο σας ευχαριστώ για τις εξειδικευμένες λύσεις σας. Ομολογουμένως δεν τις είχα προσεγγίσει στο παρελθόν και μου παρέχουν σημαντική βοήθεια για την επίλυση και άλλων προβλημάτων, αλλά και την προτροπή για περαιτέρω μελέτη και εμβάθυνση. Όπως είδατε στο αναφερόμενο φύλλο, υπάρχουν αρκετά διαφορετικά ωράρια εκτός του 10:10 - 17:30, στα οποία δεν έχει προκύψει ζήτημα ακρίβειας αποτελέσματος, ούτε στην περίπτωση φερ' ειπείν υπερωριακής απασχόλησης που περιλαμβάνει αντίστοιχη ώρα 07:30 - 17:30 ή 10:00 - 22:00. Εν τέλει excel precision εμφανίζεται μόνο στο 10:10 - 17:30 και σε καμία άλλη περίπτωση, αυτό θεωρείτε είναι σύμπτωση, υπάρχει κάποια άλλη εξήγηση; Φιλικά Άκης |
1 Συνημμένο(α) Καλημέρα Άκη! Στο αρχείο που επισυνάπτεται έκανα μια προσπάθεια όχι να δώσω εξήγηση αλλά να παρουσιάσω τι ακριβώς κάνει η Excel στο παρασκήνιο. Μελέτησε το και τα λέμε. Καλό ξημέρωμα! Με εκτίμηση Τάσος |
1 Συνημμένο(α) Καλημέρα Ένα μικρό παράδειγμα για το πως μπορούν να υπολογιστούν ωράρια και αμοιβές με ασφάλεια Χρήση απλών αφαιρέσεων και των συναρτήσεων Hour και Minute Υπολογίζει 24 ωρη εργασία σε βάρδιες που πιθανόν να υπάρχει αλλαγή ημερομηνίας στην βάρδια επάνω (πχ Αρχή 8 βράδυ και Τέλος 4 χαράματα) Με κατάλληλες διορθώσεις και προσθήκες μπορεί να υπολογίσει και υπερωρία και υπερεργασία καθώς και ημερήσιο ή νυχτερινό ωράριο και αμοιβές |
πρόγραμμα σε βαρδιες 1 Συνημμένο(α) Καλησπέρα σε όλους. Θα ήθελα την πολύτιμη βοήθειά σας. Τον τελευταίο καιρό ανέλαβα να βγάζω τη βάρδια στην υπηρεσία μου, χρισημοποιώντας ένα αυτοσχέδιο φύλλο σε exel. Οι βάρδιες είναι 6ωρες και 12ωρες. Είναι Μ απο 08:00 εως 20:00,πρωί-απόγεμα Είναι Π πρωί Είναι Α απόγεμα Είναι Ν απο 20:00 εως 08:00 Είναι Ν1 απο 20:00 εως 02:00 Είναι Ν2απο 02:00 ΕΩς 08:00 Γίνεται να επιλέγω βάρδιες να εργάζονται 2 ΣΚ το μήνα για παράδειγμα. Μπορώ να βάζω κάποιον να εργάζεται μόνο ΣΚ Θα πρέπει να έχουν ισάριθμες βάρδιες-και ρεπό Γίνεται να επιλέξω συγκεκριμένα άτομα για βάρδια και ατομικά και αριθμητικά; πχ ο χ μόνο βράδυ και ο ψ μόνο πρωί την Δευτέρα το πρωί να δουλεύουν 12,το απόγεμα 10 και το Ν1,Ν2 απο 5 άτομα. Έγινα κουραστικός ευχαριστώ εκ τον προτέρων. |
Ουσιαστικά, ζητάς, ένα πλήρες πρόγραμμα... με κυλιόμενες κατ' επιλογήν βάρδιες, να το πάρεις ... έτοιμο;! Ξέρεις πόσο χρονοβόρο είναι κάτι τέτοιο; Να φτάσεις κάπου και να σε βοηθήσουμε, το καταλαβαίνω. Να στο δώσουμε, στο «πιάτο», δεν είναι δυνατόν... |
Πηγαίνω για παραγγελία !!!! Γνωρίζεις που θα βρω κάποιο έτοιμο πρόγραμμα; |
ΒΟΗΘΕΙΑ 1 Συνημμένο(α) Καλησπέρα και συγχαρητηρια για τις γνωσεις και την βοηθεια που δίνετε. χρειάζομαι και εγω μια βοήθεια. στο excel που επισυνάπτω δεν μπορώ να βρω την συνάρτηση που πρέπει να κάνω για να μου υπολογίζει την βάρδια 22:00 έως 06:00. θα μπορούσατε να με βοηθήσετε? |
=IF(B2>C2;1-(B2-C2);(C2-B2)) |
Και μια άλλη πρόταση: =C2-B2+(C2<B2) |
| Η ώρα είναι 14:10. |
Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.