nikomas50 Δημοσ. 2 Μαΐου 2011 Δημοσ. 2 Μαΐου 2011 Εμ δεν κατάλαβα τι ακριβώς εννοείς. Του υπολογίζει στην μια στήλη όλες τις ώρες εργασίας και μετά σε άλλη τις νυχτερινές ώρες μετά τις 22:00. Αν θέλει να βγάλει τις υπερωρίες του οκτάωρου (πέρα από τις νυχτερινές) τότε απλά θα κάνει μια αφαίρεση Το νυχτερινό ωράριο είναι 8ωρο (αρχίζει στις 22:00 και τελειώνει στις 06:00) οπότε αν σχολάσει στις 07:00 ο τύπος σου θα του βγάλει 9 και όχι 8. Στο δικό του αρχείο αν βάλει =IF(IF(C3<B3;("24:00"-TIME(22;0;0)+C3)*24;IF(C3<TIME(22;0;0);"0";(C3-TIME(22;0;0))*24))<=8;IF(C3<B3;("24:00"-TIME(22;0;0)+C3)*24;IF(C3<TIME(22;0;0);"0";(C3-TIME(22;0;0))*24));8) σε οποιοδήποτε κελί της σειράς 3 νομίζω θα είναι εντάξει. Edit: (Εννοώ το αρχείο που φαίνεται στην εικόνα του αρχικού post)
orlox Δημοσ. 2 Μαΐου 2011 Δημοσ. 2 Μαΐου 2011 μου αρεσει που ηθελα να το παιω και εξυπνος Θα σου ανεβασω ενα σωστο σε λιγο
At0m0 Δημοσ. 2 Μαΐου 2011 Δημοσ. 2 Μαΐου 2011 Θέλω έναν τύπο να υπολογίζει πόσες ώρες έχουν περάσει μετά την 22:00. Μέχρι τώρα έχουμε βρει κάποιες λύσεις αλά αν το ωράριο πχ είναι 15:00 μέχρι 18:00 ο τύπος =IF(ISBLANK(C3);""; MOD(C3-0,916666666666667;1)) δίνει αποτέλεσμα. Ο παραπάνω που έδωσε το παιδί φαίνεται να δουλεύει μια χαρά απλά πρέπει να βάζω ώρα εξόδου αν είναι πχ 01:00 25:00 για να το υπολογίσει. Εχμ, αυτό που έγραψα, το έλεγξα ΚΑΙ για ώρα εισόδου π.χ. 17:00 και ώρα εξόδου 01:30 και μου δούλευε σωστά == 5 ώρες + 3,5 ώρες.Δεν χρειαζεται να βάλεις ωρα 25:00, που προφανώς δεν είναι σωστό. Τώρα μόλις το ξαναέλεγξα μπας και έκανα κανένα λάθος στο copy/paste και ακόμα λειτουργεί σωστά. Αυτό με το 06:00 δεν το ήξερα και προφανώς δεν το έχω λαβει υπόψη μου. Σε συνέχεια του "06:00", επίσης δεν έχω λάβει υπόψη μου την περίπτωση έναρξη 22:00 και λήξη 07:00.
orlox Δημοσ. 2 Μαΐου 2011 Δημοσ. 2 Μαΐου 2011 Βασικα θα βοηθουσε πολυ αν ενσωματωνες την ημερομηνια στις ωρες εξοδου και εισοδου καπως ετσι: ΩΡΑ ΕΙΣΟΔΟΥ ΩΡΑ ΕΞΟΔΟΥ 5/05/05 15:00 16/05/05 07:00
At0m0 Δημοσ. 3 Μαΐου 2011 Δημοσ. 3 Μαΐου 2011 Με τις #$*(#)ιες μέσα στο cell δεν έβγαινε άκρη οπότε... Το παρακάτω, μόνο τούμπες δεν κάνει. Δείχνει πόσο χρόνο εργάστηκε ο ταλαίπωρος και πόσος από αυτόν τον χρόνο ήταν μεταξύ "22:00" και "06:00" σε όλα τα απίθανα σενάρια π.χ. Είσοδος: 23:00 (σήμερα) και έξοδος 22:00 (αύριο) Δουλεύει με το που θα πατήσεις "ENTER" σε οποιοδήποτε από τα δύο κελιά = Είσοδος/Έξοδος (B3,C3) Οι guru του optimization μπορούν να το διορθώσουν όσο θέλουν Πιθανότατα να θέλει λίγο πείραγμα στα <,>,<=,>= των ορίων, αλλά αυτό διορθώνεται κατά βούληση. >Private Sub Worksheet_Change(ByVal Target As Range) Dim Win As Date Dim Wout As Date Dim nWork As Double Dim nTime As Double Dim nOverTime As Double If Target.Address = "$C$3" Or Target.Address = "$B$3" Then Win = fyllo1.Cells.Range("B3") Wout = fyllo1.Cells.Range("C3") ' bres poses wres doylepse If Win < Wout Then nWork = DateDiff("n", Win, Wout) / 60 If Win > Wout Then nWork = 24 - DateDiff("n", Wout, Win) / 60 ' xwrise tes se kanonikes kai nyxterines If Win >= "06:00" And Win < "22:00" Then nTime = DateDiff("n", Win, "22:00") / 60 nOverTime = nWork - nTime If nOverTime > 8 Then nOverTime = 8 nTime = nWork - nOverTime End If End If If Win >= "22:00" And Win <= "23:59" Or _ Win >= "00:00" And Win < "06:00" Then nOverTime = (DateDiff("n", Win, "06:00") / 60) If nOverTime < 0 Then nOverTime = nOverTime + 24 If nOverTime > nWork Then nOverTime = nWork Else nTime = nWork - nOverTime If nTime > 16 Then nTime = 16 nOverTime = nWork - nTime End If End If End If fyllo1.Cells.Range("D3") = nWork fyllo1.Cells.Range("E3") = nTime fyllo1.Cells.Range("F3") = nOverTime End If End Sub
nikomas50 Δημοσ. 3 Μαΐου 2011 Δημοσ. 3 Μαΐου 2011 Με τις #$*(#)ιες μέσα στο cell δεν έβγαινε άκρη οπότε.. Το παρακάτω, μόνο τούμπες δεν κάνει. Ξέχασες όμως να πεις στον agent_smith τι θα κάνει τον κώδικα !!! Ο άνθρωπος δε γνωρίζει να κάνει ούτε μια στοιχειώδη συνάρτηση σε κελί.
At0m0 Δημοσ. 3 Μαΐου 2011 Δημοσ. 3 Μαΐου 2011 Ξέχασες όμως να πεις στον agent_smith τι θα κάνει τον κώδικα !!! Ο άνθρωπος δε γνωρίζει να κάνει ούτε μια στοιχειώδη συνάρτηση σε κελί. @agent_smith Φίλε agent_smith, άν έχεις σχετικά φρέσκο Excel... Ανοίγεις το επίμαχο XLS αρχείο. Πατάς την "στρογγυλή Μαλ...Beep" πάνω αριστερά και επιλέγεις "Επιλογές του Excel" Στο πρώτο Tab = "Δημοφιλείς" επιλέγεις το checkbox με όνομα "Εμφάνιση καρτέλας 'Προγραματιστής' στην κορδέλα" και πατάς OK. Στην "κορδέλα", πλέον, δεξιά-δεξιά εμφανίζεται η καρτέλα "Προγραμματιστής", την επιλέγεις. Στην καρτέλα αυτή πατάς το "Visual Basic". Στο νέο παράθυρο που θα ανοίξει, κάπου πάνω και αριστερά αναφέρει τα "Φύλλα/Sheets" του τρέχοντος XLS, π.χ. "Φύλλο1(Φύλλο1)", "Φύλλο2(Φύλλο2)", "Φύλλο3(Φύλλο3)" (ή Sheet1, Sheet2, Sheet3) Επιλέγεις με διπλό αριστερό click του ποντικιού το "Φύλλο/Sheet" που σε ενδιαφέρει. Δεξιά, στο ... κενό χώρο ... κάνεις paste τον κώδικά που έστειλα. Τέλος, κάπου αριστερά και κάτω υπάρχει στο παράθυρο "Microsoft Visual Basic - Βιβλιο1 (Code)" (ή όπως λέγεται το δικό σου XLS) έχει κάποια Properties του "Φύλλου/Sheet" που έχεις επιλέξει. Για να δουλέψει ο κώδικας όπως είναι πρέπει να αλλάξεις το Property: (Name) και από "Φύλλο1" ή "Sheet1" ή όπως αλλιώς το γράφει εκεί, πρέπει να το μετονομάσεις σε "fyllo1", όπως δηλαδή το περιμένει ο κώδικας. Προσοχή. 1) Όταν σώσεις πλέον το αρχείο, πρέπει να το σώσεις σε μορφή "Βιβλίο εργασίας του Excel με δυνατότητα μακροεντολών (*.xlsm)" ώστε να αποθηκευτεί και ο κώδικας μαζί του. 2) Κάθε φορά που ανοίγεις αυτό το xlsm, το Excel είτε θα διαμαρτύρεται για τις μακροεντολές και θα πρέπει να επιλέγεις "ναι άστες να τρέξουν" είτε δεν θα τις επιτρέπει καθολου άν το έχεις πειράξει και δεν θα δουλεύει. Για να προσπεράσεις το πρόβλημα του (2)... Πατάς την "στρογγυλή Μαλ...Beep" πάνω αριστερά και επιλέγεις "Επιλογές του Excel" Επιλέγεις "Κέντρο αξιοπιστίας" και μετά "Ρυθμίσεις Κέντρου αξιοπιστίας" και μετά "Ρυθμίσεις μακροεντολών" και μετά επιλέγεις είτε "Απενεργοποίηση όλων των μακροεντολών με ειδοποίηση" ή "Ενεργοποίηση όλων των μακροεντολών (δεν συνίσταται blah, blah, blah)" Πατάς ΟΚ,ΟΚ. Αυτά... Εννοείται ότι τα Αγγλικά menu ούτε που θυμάμαι πως είναι. Ελπίζω να μην έχω ξεχάσει κάτι σημαντικό. @nikomas50 (χιουμοριστικά) Καταραμένε nikomas50 !! Αυτό ήταν χειρότερο από το να γράψω τον κώδικα !! Δεν ξαναγράφω τίποτα !!
nikomas50 Δημοσ. 3 Μαΐου 2011 Δημοσ. 3 Μαΐου 2011 @nikomas50 (χιουμοριστικά) Καταραμένε nikomas50 !! Αυτό ήταν χειρότερο από το να γράψω τον κώδικα !! Δεν ξαναγράφω τίποτα !! Ας πρόσεχες! (χιουμοριστικά) Γι' αυτό και εγώ έκανα τις ερωτήσεις σχετικά με το τί ακριβώς θέλει να κάνει αλλά όπως είδες οι απαντήσεις του φίλου δεν ήταν και τόσο κατατοπιστικές και γι' αυτό έφτιαξα κάτι πρόχειρο "κλέβοντας" στοιχεία τόσο από το πρώτο σου post όσο και από αντίστοιχα άλλων "Καλών Σαμαρειτών". Η όλη ιστορία μου θύμισε την προσπάθειά μου να πείσω φίλο που ήταν άσχετος με το άθλημα να μήν αγοράσει ακριβό υπολογιστή στον οκτάχρονο γυιό του (πριν από δέκα χρόνια) και αφού έψαξα αρκετά και έκανα μια σύνθεση ανάλογη της χρήσης για την οποία προοριζόταν, το αποτέλεσμα ήταν να πάει στο μαγαζί της προτίμησής του και να απευθυνθεί στον υπάλληλο λέγοντας (κυριολεκτώ) : Θέλω το καλύτερο κομπιούτερ που έχεις. Το αποτέλεσμα το φαντάζεσαι. Έκτοτε συνήθισα να προσπαθώ να συλλέξω επαρκή στοιχεία σε κάθε περίπτωση πριν απαντήσω αλλά καμιά φορά ξεχνιέμαι και δεν το κάνω. Αυτά!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.