Excel - Ερωτήσεις / Απαντήσεις Ότι έχει σχέση με συναρτήσεις, μορφοποίηση, εκτυπώσεις γραφήματα κτλ. |
![]() |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| |||
| |||
![]()
Καλησπέρα σε όλους. Έχω μία στήλη(Ο), στην οποία θέλω να παίρνω, το σύνολο των υπερωριών ενός εργαζόμενου και να το επεξεργάζομαι. Δηλαδή, υπάρχουν σε στήλες η ώρα άφιξης, η ώρα αναχώρησης και η αφαίρεσή τους, μας κάνει τις ώρες εργασίας τους. Ορίζοντας κάπου ότι το ωράριο, είναι 8 ώρες, σε διπλανή στήλη, μας δίνει το άθροισμα των υπερωριών.Δίπλα, παίρνει από άλλη βάση το καθαρό ημερομίσθιο και δίπλα την αμοιβή των υπερωριών. Εντάξει ως εδώ..Αλλά, όταν η ημερομηνία είναι αργία, τότε η αμοιβή, είναι διαφορετική. Έφτιαξα την στήλη με το ημερομίσθιο και καταλαβαίνει ότι είναι αργία(κρυφές στήλες Α:C), και δεν υπολογίζει ημερομίσθιο, αλλά ....κόλησα στη στήλη των υπερωριών...Δεν μπορώ να το κάνω να καταλάβει, πως όλες οι ώρες, πρέπει να υπολογίζονται, σαν υπερωρία, αν η ημερομηνία είναι αργία, ή Σαβ/κα, ή ειδική Ημέρα....Άρα, μου βγάζει λάθος και το συνολοκό ημερήσιο ποσό αμοιβής. Τί κάνω λάθος;; Κάποια ιδέα;; Φιλικά/Λευτέρης |
#2
| ||||
| ||||
![]()
Καλησπέρα Λευτέρη! Για να είναι πιο κατανοητός και πιο μικρός ο τύπος, όρισε 2 ονόματα! Περιοχή: Επίσημες αργίες = Holidays Περιοχή: Ειδικές ημερομηνίες = SpecialDays Και ο τύπος (παράδειγμα): Κώδικας: =IF(K4="";"";IF(OR(WEEKDAY(J4;2)>5;NOT(ISNA(MATCH(J4;Holidays;))); NOT(ISNA(MATCH(J4;SpecialDays;))));N4;IF(N4<=O$1;0;N4-O1))) Προσοχή στα κενά κατά την αντιγραφή - επικόλληση. Φιλικά Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
#3
| |||
| |||
![]()
Καλημέρα σε όλους. Τάσο μου, σε ευχαριστώ πολύ. Δούλεψε άψογα. Προσάρμοσα τον τύπο σου και στην διπλανή στήλη(με INDEX&MATCH), που "φέρνει" τα καθαρά ημερομίσθια, κατήργησα και τις στήλες C ,D ,E,που στην εξέλιξη θα "φρέναραν" το σύστημα. Όλα καλά και προχωράω. |
#4
| |||
| |||
![]()
Καλησπέρα σε όλους. Τάσο, προσπαθώ να ενώσω την δουλειά σου με τις καρτέλλες ανα ημερολογιακό διάστημα σε αυτή την δουλειά, αλλά.....κόλλησα. Δεν μου βγαίνει με τίποτα και το χειρότερο είναι, πως ΔΕΝ καταλαβαίνω το γιατί...... Όταν μπορέσεις, ρίχτου μία ματιά σε παρακαλώ. Στο μεταξύ ψάχνω...επιδή με πιέζει και ο χρόνος παράδοσής του. Όλη η δουλειά, έχει τελειώσει και απομένει αυτό.. Τα λέμε.. |
#5
| ||||
| ||||
![]()
Καλησπέρα Λευτέρη! Φρόντισε τα ονόματα που εμπλέκονται στις συναρτήσεις SUMPRODUCT() να έχουν το ίδιο μήκος (πολύ σημαντικό). Επίσης πρέπει να προσέξεις ο τύπος δεδομένων να είναι ενιαίος σε κάθε όνομα. πχ. ο τύπος =IF(I18<>"";J17;"") αν η συνθηκη I18<>"" είναι αληθής θα επιστρέφει αριθμό (ώρα) διαφορετικά θα επιστρέψει κείμενο ( "" ) με αποτέλεσμα να μη μπορεί να επεξεργαστεί από την .SUMPRODUCT(). Οι τύποι που μπορείς να χρησιμοποιήσεις: Κώδικας: H16: =IF(ISBLANK(G16);;INDEX(DataBase!$F$2:$F$8;MATCH(Καταχώρηση!G16;DataBase!$B$2:$B$8;0))) Κώδικας: I17: =IF(G18<>"";I17;) Κώδικας: J17: =IF(G17<>"";J16;0) Κώδικας: K16: =IF(G16="";;SUM(J16-I16)) Κώδικας: L16: =IF(G16="";;IF(OR(WEEKDAY(F16; 2)>5;NOT(ISNA(MATCH(F16;Holidays;)));NOT(ISNA(MATCH(F16;SpecialDays;))));K16;IF(K16<=CL$13;0;K16-CL$13))) Κώδικας: M16: =IF(G16="";;IF(OR(WEEKDAY(F16;2)>5;NOT(ISNA(MATCH(F16;Holidays;))); NOT(ISNA(MATCH(F16;SpecialDays;))));K16;IF(K16<=CL$13;0;K16-CL$13))) Κώδικας: N16: =IF(G16<>"";SUM($CN$13*(L16)*24);) Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών Τελευταία επεξεργασία από το χρήστη Tasos : 29-08-11 στις 22:18. |
#6
| |||
| |||
![]()
Καλημέρα σε όλους. Φίλε Τάσο, ευχαριστώ πολύ για τον χρόνο σου, αλλά δυστυχώς δεν μου βγαίνει... Αν εξαιρέσουμε τον τύπο της στήλης Μ, που θεωρώ πως(απο κεκτημένη ταχύτητα;;;) είναι λάθος(Είναι ίδιος με αυτόν στην στήλη L), νομίζω πως εφάρμοσα σωστά τις υποδείξεις σου. Το ότι δεν βγαίνει το ζητούμενο, οφείλεται μόνο σε αυτό; ή δεν κατάλαβα κάτι σωστά;; |
#7
| ||||
| ||||
![]()
Καλημέρα Λευτέρη! Η Sumproduct() στην συμπεριφέρεται όπως μια συνάρτηση πίνακα και προϋποθέτει: 1) Συνέπεια στον τύπο δεδομένων της κάθε στήλης του πίνακα τον οποίο επεξεργάζεται. Θα πρέπει λοιπόν οι τύποι σου που σε κάθε περίπτωση να επιστρέφουν τον ίδιο τύπο δεδομένων, ανεξάρτητα από το αν η συνθήκη τους είναι αληθής, ψευδής ή σφάλμα. 2) Όταν δίνουμε στην Sumproduct() ή σε άλλες συναρτήσεις πίνακα πίνακες (Arrays) προς επεξεργασία, θα πρέπει οι δεύτεροι να έχουν το ίδιο μέγεθος δηλαδή τον ίδιο αριθμό κελιών και (επαναλαμβάνω) τον ίδιο τύπο δεδομένων ο καθένας τους για να μπορέσει να τους συγκρίνει. Επίσης ποτέ δεν συμπεριλαμβάνουμε συγχωνευμένα κελιά σε αυτούς τους πίνακες. Θα πρέπει λοιπόν , να διορθώσεις την αναφορά των ονομάτων All* του αρχείου σου έτσι που αυτά να έχουν τον ίδιο αριθμό κελιών. Δες και το παράδειγμα παρακάτω: Καλή συνέχεια! Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών Τελευταία επεξεργασία από το χρήστη Tasos : 30-08-11 στις 13:39. |
#8
| |||
| |||
![]()
Καλησπέρα σε όλους. Φίλε Τάσο, ακολούθησα τις συμβουλές σου και κατάφερα πολύ δύσκολα ομολογώ, να στήσω όλα αυτά τα δεδομένα, στο κανονικό προγραμματάκι και να το κάνω να λειτουργήσει σωστά. Το βασικό δε, δεν είναι πως κατάφερα να το κάνω, αλλά το ότι για να το κάνω, έπρεπε να ψάξω πολύ και να κατανοήσω την διαδικασία που χρειάζεται για να βγεί το αποτέλεσμα.. Έδινα όλη την προσοχή μου, στους ορισμούς των All..και δεν είχα δώσει σημασία στο ότι όλες οι στήλες που βάλαμε τους νέους τύπους(H:N), έπρεπε και αυτές να έχουν το ίδιο μήκος. Προσπαθώ στή στήλη Ν, με τον τύπο: =IF(OR(H16>"Database$BD$2;H16<Database$BD$2);"";SUM($CN$13*(L16)*24);) (Με κόκκινο, ο δικός σου τύπος), αλλά ενώ δουλεύει στην στήλη(τον "τραβάω" ίδια με τις διπλανές, μου χαλάει στα Συγκεντρωτικά.. Ο τύπος "λέει": Αν δεν είναι εργάτης, μην γράφεις χρήματα απο Υπερωρίες.. Δηλαδή θέλω να πληρώνονται υπερωρίες ΜΟΝΟΝ οι εργάτες. Οχι οι υπόλοιποι.. Γιατί;; |
#9
| ||||
| ||||
![]() Λευτέρη, Στον τύπο γράφεις: =IF(OR(H16>DataBase!$BD$2;H16<DataBase!$BD$2);"";SUM($CN$13*(L16)*24)) Κατ αρχήν, αφού συγκρίνεις κείμενα, ο τελεστής < ή > δεν είναι ο κατάλληλος. Γιατί όχι: =IF(H16=DataBase!$BD$2;..... Όμως, ακόμα και αν διορθώσεις το παραπάνω, το πρόβλημα σου δεν θα λυθεί αφού ο τύπος σου θα είναι: =IF(H16=DataBase!$BD$2;"";SUM($CN$13*(L16)*24)) που επιστρέφει ("") αν πρόκειται για εργάτη(α). Όπως είπαμε, θα πρέπει οι τύποι σου που σε κάθε περίπτωση να επιστρέφουν τον ίδιο τύπο δεδομένων. Δύο εισαγωγικά ("") = τιμή με τύπο δεδομένων: κείμενο. Ναι είναι τιμή (Στη VB τη συναντούμε σαν vbNullstring) Αν πχ στο ένα κελί A1 γράψεις: ="" το κελί δεν είναι κενό και θα πάρει τον τύπο δεδομένων: Κείμενο. Για του λόγου το αληθές, αφου βάλεις τον παραπάνω τύπο (="") στο A1 δοκίμασε: =ISBLANK(A1). Συνεπώς, η περιοχή AllIncoming όπου περνάς τον τύπο αυτό, περιέχει δεδομένα με ετεροειδείς τύπους δεδομένων. Έχεις δηλαδή αριθμούς και κείμενα στην περιοχή αυτή με αποτέλεσμα να μην μπορούν να επεξεργαστούν από την Sumproduct() αλλά και από σχεδόν όλες τις συναρτήσεις πίνακα. Αν όμως μετατρέψεις τον τύπο έτσι: =IF(H16=DataBase!$BD$2;0;SUM($CN$13*(L16)*24)) τα περιεχόμενα της περιοχής AllIncoming θα έχουν μόνο έναν τύπο δεδομένων (αριθμό) και θα μπορούν να επεξεργαστούν απροβλημάτιστα από την Sumproduct(). Καλή συνέχεια! Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
#10
| |||
| |||
![]()
Καλημέρα σε όλους και Καλό Μήνα. Τάσο,τελείωσε. Τα έφτιαξα σύμφωνα με τις υποδείξεις σου, πρόσθεσα αρκετά πράγματα που είναι απαραίτητα, δημιούργησα δύο συγκεντρωτικά φύλλα με όλα τα στοιχεία που μπορεί να χρειαστούμε(Δύο, επειδή άλλα στοιχεία, ενδιαφέρουν τον Λογιστή και άλλα την Διοίκηση) και λειτουργούν όλα κανονικά. Απο σήμερα κιόλας, μπαίνει και στην κυκλοφορία... Το πιό σημαντικό όμως, είναι πως γιά μιά ακόμη φορά, με έμαθες καινούργια πράγματα, τα οποία θεωρώ πως εμπέδωσα και θα μπορώ να τα χρησιμοποιώ σε άλλες δουλειές. Να ρωτήσω όμως κάποια πράγματα που δεν έχω καταλάβει, για να έχω(θεωρώ)όλο το πακέτο. 1)Δεν καταλαβαίνω τον ρόλο των κελιών Α1:Α5(Καταχώρηση--=Dates) Μού εξηγείς σε παρακαλώ; 2) Μού γράφεις: (Αν όμως μετατρέψεις τον τύπο έτσι: =IF(H16=DataBase!$BD$2;0;SUM($CN$13*(L16)*24)) τα περιεχόμενα της περιοχής AllIncoming θα έχουν μόνο έναν τύπο δεδομένων (αριθμό) και θα μπορούν να επεξεργαστούν απροβλημάτιστα από την Sumproduct().) Με αυτόν τον τύπο, παίρνουμε το αντίθετο αποτέλεσμα από το ζητούμενο. Παίρνουν Υπερωρίες όλοι οί άλλοι, εκτός απο τους Εργάτες. Τον αντικατέστησα με τον παρακάτω τύπο και πήρα το ζητούμενο αποτέλεσμα. Θεωρώ πως είναι σωστό. Τι λές; IF(OR(H16>DataBase!$BD$2;H16<DataBase!$BD$2);0;SUM ($CN$13*(L16)*24)) Εκείνο όμως που δεν καταλαβαίνω, είναι πως όλη η εφαρμογή, δουλεύει σωστά ΚΑΙ με αυτόν τον τύπο. Πώς γίνεται αυτό φίλε μου; IF(OR(H16>DataBase!$BD$2;H16<DataBase!$BD$2);"";SU M($CN$13*(L16)*24)) 3) Μού γράφεις: (Δύο εισαγωγικά ("") = τιμή με τύπο δεδομένων: κείμενο. Ναι είναι τιμή (Στη VB τη συναντούμε σαν vbNullstring) Αν πχ στο ένα κελί A1 γράψεις: ="" το κελί δεν είναι κενό και θα πάρει τον τύπο δεδομένων: Κείμενο.) Δεν το ήξερα Τάσο μου! Θεωρούσα πως είναι το ίδιο. Δεν μου είχε τύχει ποτέ να μην μου βγαίνει και να χρειαστεί να ψάξω...! Ευχαριστώντας σε και πάλι πολύ, περιμένω, όταν μπορέσεις, μία απάντηση στα δύο ερωτήματά μου. *Ερώτηση τηε τελευταίας στιγμής; Παιά ακριβώς, είναι η δουλειά που κάνει το 0(Μηδέν), σε αυτή τη συνάρτηση; Γαιτί χωρίς το 0, δεν "βγαίνει το αποτέλεσμα; =INDEX(DataBase!N2:N40;MATCH(O10;Articles;0)) Τελευταία επεξεργασία από το χρήστη Lefteris : 01-09-11 στις 11:38. Αιτία: Ερώτηση τελευταίας στιγμής... |
![]() |
Ετικέτες |
index, match, sum, sumproduct |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
Εργαλεία Θεμάτων | |
Τρόποι εμφάνισης | |
| |
| ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
[Excel07] συνολα ωρων-αργιων-νυκτερινων-ρεπω-αδειων | pnemtsa | Excel - Ερωτήσεις / Απαντήσεις | 5 | 20-11-16 09:54 |
Η ώρα είναι 07:56.