Μετάβαση στο περιεχόμενο

John_John

Members
  • Περιεχόμενα

    21
  • Εντάχθηκε

  • Τελευταία επίσκεψη

  • Days Won

    2

John_John's Achievements

Newbie

Newbie (1/15)

12

Φήμη στην κοινότητα

  1. Να ΄σαι καλά φίλε μου! Η σχέση "πολλά μυαλά=πολλές λύσεις" ισχύει πάντα!
  2. Για να πετύχεις λοιπόν το ζητούμενο με τύπους του Excel, κάνεις τα εξής: Εισάγεις μια νέα στήλη "Α" η οποία θα χρησιμοποιηθεί ως βοηθητική με αποτέλεσμα τα πραγματικά δεδομένα να μεταφερθούν στις στήλες Β και C. Στο Α1 εισάγεις τον τύπο: =IF((B1-C1)<50;1;0) Στο D1 εισάγεις τον τύπο: =IF(A1=1;50-(B1-C1);IF(E1="";B1-C1;"")) Στο E1 εισάγεις τον τύπο: =IF(SUM(A:A)>0;B1-C1;"") Κρύβεις τη βοηθητική στή Α. Το αποτέλεσμα είναι: Αρχικά, η στήλη D εμφανίζει το υπόλοιπο της πράξης "Βx-Cx". Αν σε οποιαδήποτε γραμμή ισχύει η συνθήκη "(Βx-Cx)<50" οι πράξεις της στήλης D "μεταφέρονται" στη στήλη Ε. Σε αυτήν την περίπτωση, η στήλη D, εμφανίζει το αποτέλεσμα της πράξης "50-(Βx-Cx)" μόνο όταν ισχύει η "(Βx-Cx)<50", αλλιώς δεν εμφανίζει τίποτα. Δοκίμασέ το και πες μας αν γίνεται αυτό που ζητάς. Υ.Γ. Συγχώρα με αν γίνομαι επίμονος για λύση με τύπους του Excel, όμως, αυτή είναι και η ενδεδειγμένη χρήση του για αποδοτικά, ασφαλή και "error free" αρχεία και θα πρέπει να εξαντλούμε τα περιθώριά του πριν περάσουμε στην "αυτοματοποίηση".
  3. Γεια χαρά και από μένα! Αν στο κελί C1 υπάρχει ο τύπος >=IF((A1-B1)<50;50-(A1-B1);A1-B1) ενώ στο κελί D1 ο τύπος >=IF((A1-B1)<50;A1-B1;"") δεν γίνεται αυτό που ζητάς;
  4. Με τη πορεία που έχει πάρει ο άνθρωπος, το επόμενο ανθρώπινο είδος θα είναι ο ...Νεάτερνταλ!
  5. Να 'σαι καλά slalom! Δική μου η ευχαρίστηση, αν και λυπάμαι που τελικά δεν σε βοηθάει. Οι συναρτήσεις πάντως που χρησιμοποιούνται δεν είναι και τόσο άγνωστες,απλά, είναι η φύση των τύπων του Excel που πολλές φορές παίρνουν εκφοβιστικές μορφές. Τα λέμε λοιπόν! Καλή συνέχεια!
  6. Καλημέρα slalom! Βασικά το πρόβλημα είναι πως στον υπολογισμό κάθε χώρου λαμβάνουν μέρος σύνολα υπολογισμών για όλους τους χώρους. Έτσι λοιπόν, και μια συνάρτηση να είχες, τα ορίσματά της θα ήταν αρκετά περίπλοκες εκφράσεις και ίσως να πέφταμε και σε κυκλικές αναφορές. Συνεπώς και πάλι η χρήση πολλών κελιών θα ήταν αναγκαία. Εμένα πάντως η χρήση ξεχωριστού πίνακα χρεώσεων για κάθε σεζόν δεν μου φαίνεται και πολύ λειτουργική. Αντίθετα θα προτιμούσα ξεχωριστούς πίνακες για κάθε γεγονός (Παραλαβή καυσίμου, Μέτρηση ωρών, Πληρωμές κτλ) και έναν πίνακα κατανομής δαπανών ο οποίος θα συλλέγει τα δεδομένα από τους παραπάνω πίνακες. Μια τέτοια διάταξη θα βρεις στο παρακάτω συνημμένο στο φύλλο "Χρεώσεις". Αν τη βρεις βολική, προσάρμοσέ τη στα μέτρα σου και αν χρειαστείς βοήθεια εδώ είμαστε. Φιλικά, Γιάννης. Υ.Γ. Δεν ξέρω κατά πόσο είναι σωστά τα αποτελέσματα στα πορτοκαλί κελιά που θα βρεις στο συνημμένο διότι η λογική χρεώσεων στα πινακάκια του αρχείου σου δεν μου ήταν και πολύ σαφής. ΚΑΤΑΝΟΜΗ ΔΑΠΑΝΩΝ2.zip
  7. Όπως φαίνεται σε κάλυψε ο Απόστολος. Thank's Απόστολε! Αν κατάλαβα καλά, έχεις έναν πίνακα με 12 γραμμές και 37 στήλες. Σωστά; Άρα την 1/1/2011 θα εισάγεις άλλες 12 στήλες, τους μήνες δηλαδή της νέας χρονιάς. Σωστά; Αν όμως στα μέσα της χρονιάς κάποιο διαμέρισμα αλλάξει ένοικο τότε τι θα γίνει; Θα τον εισάγεις σε νέα γραμμή ή θα αντικαταστήσεις το όνομα του παλιού ένοικου με αυτό του νέου; Αν αντικαταστήσεις το όνομα, πώς θα ξέρεις πόσα έχεις εισπράξει από τον κάθε ένοικο; Αν δημιουργήσεις νέα γραμμή, πως θα ξέρεις πόσα έχεις εισπράξει από κάθε διαμέρισμα για κάποια χρονική περίοδο; Αν δεν σου είναι κόπος, ανέβασε ένα αρχείο με ψεύτικα στοιχεία ώστε να έχουμε και μια εικόνα του τι έχεις κάνει μέχρι τώρα και τι προσπαθείς να κάνεις. (πχ οριζόντιο φιλτράρισμα με χρήση της επικύρωσης δεδομένων) Θα είναι πολύ πιο εύκολο να λάβεις τη βοήθεια που θέλεις. Φιλικά, Γιάννης.
  8. Οι πίνακες όμως των χρεώσεων βλέπουν όλοι στον ίδιο πίνακα υπολογισμών. Έτσι κάθε νέος υπολογισμός θα επηρεάζει όλους του πίνακες χρεώσεων. Συνεπώς, και με δεδομένο το στήσιμο του βιβλίου, ο μόνος τρόπος να έχεις ανεξάρτητα αποτελέσματα σε κάθε πίνακα χρεώσεων είναι να αναπαράγεις τον υπολογισμό σε κάθε έναν πίνακα χωριστά. Αυτό γίνεται μεταφέροντας σε κάθε πίνακα χρέωσης τα απαραίτητα δεδομένα από τον πίνακα υπολογισμών. Αυτό ακριβώς έγινε στον τελευταίο πίνακα χρέωσης στο συνημμένο. Τα κίτρινα κελιά περιέχουν τους τύπους που χρησιμοποίησα. Το όνομα περιοχής CalcTable αντιστοιχεί στον πίνακα υπολογισμών. Ελπίζω να κατάλαβα το ζητούμενο... Φιλικά, Γιάννης. ΚΑΤΑΝΟΜΗ ΔΑΠΑΝΩΝ.zip
  9. Καλησπέρα st2! Το σύνθετο φίλτρο είναι μια από τις πιο δυνατές λειτουργίες του Excel. Για να δουλέψει όμως χρειάζεται σωστή δομή δεδομένων. Και το τρένο αποτελεί ισοδύναμο παράδειγμα, όμως μίλησα για ουρανοξύστη μιας και είσαι πολιτικός μηχανικός και όχι σταθμάρχης. Και σ' αυτή όμως την περίπτωση, εσύ θα προσπαθούσες να βάλεις τα βαγόνια το ένα δίπλα στο άλλο και όχι πάνω στις γραμμές, οι οποίες αντιστοιχούν στις στήλες του Excel. Όταν λέω βάση δεδομένων δεν εννοώ εφαρμογή βδ τύπου Access. Βάση δεδομένων είναι και μια απλή παραγγελία με είδος και ποσότητα αλλά και ένα απλό τιμολόγιο με είδος, ποσότητα, τιμή μονάδος και σύνολο. Δεν είναι τυχαίο που όλα αυτά τα στοιχεία ενός προϊόντος αποτελούν επικεφαλίδες στηλών του τιμολογίου και όχι γραμμών. Δεν είναι τυχαίο που μετά από τόσες εκδόσεις του Excel οι δημιουργοί του δεν έχουν φροντίσει να προσθέσουν όλες αυτές τις "χρήσιμες" λειτουργίες που θεωρείς ότι λείπουν. Ως τεχνικός άνθρωπος, φαντάζομαι θα γνωρίζεις πως όταν κάτι ξεκινάει στραβά, πολύ δύσκολα και με χοντρές πατέντες συμμαζεύεται. Όπως στις κατασκευές σου λοιπόν, βάζε σωστά θεμέλια και στις εφαρμογές σου στο Excel. Όσο μικρές και ασήμαντες κι αν είναι. Στο συνημμένο θα βρεις ένα βιβλίο εργασίας με δυο παραδειγματάκια βασισμένα στο παράδειγμα με τις πληρωμές ανά μήνα. Τα φύλλα είναι κλειδωμένα για προστασία των τύπων από ακούσια διαγραφή και εύκολη μετακίνηση στα ξεκλείδωτα κελιά αλλά χωρίς κωδικό. Ξεκλείδωσέ τα για να δεις τους τύπους που χρησιμοποιούνται. Ελπίζω να σε βοηθήσει. Γιάννης Υ.Γ. Πολύ ρηχά είναι τα νερά στη Καλαμάτα... DateSamble.zip
  10. Καλημέρα! st2, με προβληματίζει ο τρόπος με τον οποίο αντιμετωπίζεις τα πράγματα. Οι στήλες/πεδία σε μια βάση δεδομένων αντιστοιχούν στις κολόνες (στήλες) ενός κτιρίου ενώ οι γραμμές/εγγραφές στους ορόφους του. Αν παρατηρήσεις και στο λινκ που μας έδωσε ο Απόστολος, αυτό που προσπαθείς να κάνεις, είναι να χτίσεις έναν ουρανοξύστη σε οριζόντια διάταξη. Άλλαξε τον προσανατολισμό των δεδομένων σου αλλά και τον τρόπο που χρησιμοποιείς το Excel για να διευκολύνεις τη ζωή σου. Αλλιώς θα πέφτεις πάντα σε τέτοιου είδους αδιέξοδα. Σχετικά με την IF(), αν η τιμή του Α1 είναι αριθμητική, τότε μπορείς να πεις: =IF(A1;"σωστό";"λάθος")
  11. Καλησπέρα και πάλι! Ειλικρινά Απόστολε, όταν έγραφα το "παρατήρηση και σχόλιο" δεν είχα στο μυαλό μου ένα τέτοιο επιθετικό μήνυμα. Θα το προσπεράσω όμως αποδίδοντάς το στον εκνευρισμό σου εξαιτίας των Αλβανών και θα προχωρήσω στις απαντήσεις μου χωρίς ενδοιασμούς. 1ο Όντως, αρχικά φαίνεται για μειονέκτημα η χρήση του φύλλου εργασίας, όμως μια δεύτερη και πιο ψύχραιμη ματιά, αποκαλύπτει αρκετά πλεονεκτήματα. Δεν ξέρω κατά πόσο έχεις προχωρήσει αλλά φαντάζομαι θα γνωρίζεις πως ο επεξεργαστής κώδικα της VBA δεν υποστηρίζει Unicode κωδικοποίηση. Αυτό σημαίνει πως σε ένα σύστημα χωρίς ελληνική υποστήριξη, η εξαγωγή ελληνικών από τον κώδικα θα επιστρέψει κάτι σαν αυτό: Ýíá äõï ôñéá ôÝóóåñá ðÝíôå Ýîé åöôÜ ï÷ôþ åííéÜ (Μπορείς να το διαπιστώσεις και ο ίδιος τι θα μπορούσε να γίνει αντιγράφοντας ένα κομμάτι από τον κώδικά σου που να περιέχει ελληνικά και επικολλώντας το στο φύλλο εργασίας.) Εκτός αυτού, η χρήση φύλλου εργασίας θα μπορούσε να δώσει τη δυνατότητα υποστήριξης και άλλων γλωσσών εκτός από της ελληνικής αν δοθεί η δυνατότητα με κάποιον ασφαλή τρόπο στον χρήστη να επεξεργάζεται και να αλλάξει την περιοχή με όνομα "Names". Όσο για το θέμα της φορητότητας, τέτοιου είδους αρχεία προορίζονται για πρόσθετα, οπότε δεν υπάρχει θέμα. Αλλιώς θα έπρεπε να γκρινιάζεις και για τα αρχεία υποστήριξης και τις βιβλιοθήκες (*.dll) που κουβαλάνε τα εκτελέσιμα (*.exe) μαζί τους. 2o Η επιθυμία να τα κάνεις όλα με VBA και να δημιουργείς συναρτήσεις μετονομάζοντας άλλες συναρτήσεις ίδιας λειτουργικότητας, αν μη τι άλλο φανερώνει "προγραμματιστική εφηβεία" και ελλειπή γνώση του Excel. Ένας από τους θεμελιώδης κανόνες στην ανάπτυξη προσαρμοσμένων συναρτήσεων και κλάσεων αντικειμένων για το Excel, είναι να κρατάς τα πράγματα λιτά. Φαντάζεσαι να παρείχε το Excel μια SUM() για κάθε πράγμα που θέλεις να προσθέσεις; Κάνε λοιπόν με κώδικα ό,τι δεν σου παρέχει το Excel και για όλα τ' άλλα εκμεταλλεύσου τη λειτουργικότητά του για μέγιστη απόδοση. Τότε ναι, θα έχεις προχωρήσει, αλλά προς τη σωστή κατεύθυνση. 3ο Όταν μίλησα για υπερβολικό κώδικα δεν εννοούσα τον κώδικα της δικής σου olografws αλλά για τον κώδικα της olografws που μας έδωσε ο st2 η οποία κυκλοφορεί εδώ και χρόνια στο διαδίκτυο. Θα έπρεπε να το είχες καταλάβει από το "...είχα σκεφτεί εδώ και πολύ καιρό...". Ελπίζω να μην θέλεις να βάζω σχόλια και στα μηνύματά μου... Δεν μπορώ όμως να εντοπίσω τον λόγο του ανταγωνισμού στο ύφος του μηνύματός σου. Άλλωστε στις UDF δεν μετράει η ποσότητα του κώδικα αλλά η ταχύτητα στην εκτέλεσή του. 4ο Ομοίως με το 2ο. 5ο Όντως! Είναι μια κακή συνήθεια που δεν λέω να την αλλάξω. Εξαιτίας της όμως αναγκάστηκα και έμαθα να διαβάζω τον κώδικα και όχι τα σχόλιά του. Εξαιτίας της έμαθα και στη ζωή να εξετάζω τα δεδομένα και όχι την περιγραφή τους. Σου εύχομαι μετά από χρόνια να έχεις αποκτήσει τη δυνατότητα να καταλαβαίνεις άμεσα τι έχεις κάνει και γιατί. @st2 Ευχαριστώ για τα καλά σου λόγια st2! Το να χρησιμοποιείς το Excel ως κειμενογράφο, είναι σαν να σκαλίζεις τις τριανταφυλλιές σου με ...εκσκαφέα! Εγώ θα σε συμβούλευα να φέρεσαι στα δεδομένα σου όπως τους αξίζει και να τα εισάγεις στο Excel με τέτοιο τρόπο ώστε να μπορείς να εκμεταλλευτείς στο έπακρο τις πραγματικά τεράστιες δυνατότητές του. Για την επεξεργασία κειμένου είναι το Word και για την επικοινωνία τους η VBA. Κλείνοντας, ζητώ ειλικρινά συγγνώμη αν έγινα κουραστικός και ελπίζω να επανέλθω σύντομα με πιο χρήσιμα μηνύματα. Καλό βράδυ σε όλους! Φιλικά, Γιάννης. Υ.Γ. Έχοντας υπόψη το τι κάνουν οι εφαρμογές λογιστικών φύλλων και την ονομασία της αντίστοιχης εφαρμογής του OpenOffice, το όνομα πιστεύω που τους αξίζει στα ελληνικά δεν είναι άλλο από το υπολογιστής.
  12. Καλησπέρα και από μένα! Για το 2.θα πρότεινα το =SUM(LARGE(A1:A50;{1;2;3})) με Ctrl+Shift+Enter για κλείσιμο (τύπος πίνακα) ενώ για το 3. υπάρχουν και οι συναρτήσεις CEILING και FLOOR στις οποίες μπορούμε να καθορίσουμε το βήμα στρογγυλοποίησης (singificance). Για το 1. ...απλά υποκλίνομαι. Όσον αφορά την EvalMath, νομίζω πως κάθε προσπάθεια εύρεσης μιας μεθόδου η οποία θα κάνει υπολογισμούς με τιμές ανακατεμένες με κείμενο, κρίνεται άστοχη και άσκοπη. Αναρωτιέμαι ποιος αρέσκεται στο να εισάγει δεδομένα (και μάλιστα καθαρές αριθμητικές τιμές) με τη μορφή "15 μέτρα μήκος χ 10 μέτρα πλάτος" και στη συνέχεια να προσπαθεί να βρεί το εμβαδόν μέσα από αυτή την έκφραση. Αντί αυτού, μπορούμε κάλλιστα να εισάγουμε τις τιμές στη φυσική τους μορφή σε ξεχωριστά κελιά, να κάνουμε τους υπολογισμούς μας και τα γραφήματα μας και στη συνέχεια αν θέλουμε μπορούμε με έναν τύπο σε κάποιο κελί να "χτίσουμε" την έκφραση που μας αρέσει. Αυτός άλλωστε είναι και ο ενδεδειγμένος τρόπος χρήσης του Excel (και κάθε εφαρμογής λογιστικών φύλλων). Εισάγουμε τα δεδομένα μας σε κατανοητή μορφή για το Excel και αντλούμε τις πληροφορίες μας σε κατανοητή για εμάς μορφή. Όποιος κατανοήσει τη διαφορά τις αποθηκευμένης τιμής σε ένα κελί και της εμφανιζόμενης σε ένα κελί τιμής, έχει κατανοήσει τουλάχιστον τη μισή λειτουργικότητα του Excel. Παίρνουμε λοιπόν αυτό που πραγματικά θέλουμε από το Excel, δίνοντάς του αυτό που πραγματικά χρειάζεται. Σχετικά με την olografws, η άποψή μου είναι πως μια τέτοια συνάρτηση θα πρέπει να είναι όσο γίνεται πιο λιτή στην επιστρεφόμενη τιμή της ώστε να προσφέρει τη μέγιστη ευελιξία στους τύπους που θα εισαχθεί. Συνεπώς οι εκφράσεις των μετρικών μονάδων (μέτρα κτλ) είναι περιττές διότι αυτές μπορούν να εισαχθούν στο τύπο που θα φιλοξενήσει την olografws. Δεδομένου του υπερβολικού κώδικα της Olografws, είχα σκεφτεί εδώ και πολύ καιρό και εγώ να δημιουργήσω μια πολύ μικρότερη όμως αυτή τη φορά οι προσπάθειές σας, ομολογώ πως με βάλανε στη πρίζα. Έτσι λοιπόν έφτιαξα την NUMTEXT που θα βρείτε στο συνημμένο (NUM_TEXT.zip) η οποία επιστρέφει είτε το ακέραιο μέρος μια τιμής σε ολογράφως, είτε το δεκαδικό. Τα ονόματα των αριθμών έχουν αποθηκευτεί σε φύλλο εργασίας για την αποφυγή προβλημάτων συμβατότητας γλωσσικών θεμάτων. Ένας απλός τρόπος χρήσης της είναι ο =NUMTEXT(Α1)&" ευρώ και "&NUMTEXT(Α1;;TRUE)&" λεπτά." Επειδή πρόκειται για πρώτη έκδοση σίγουρα θα επιδέχεται βελτίωσης, γιαυτό οποιαδήποτε παρατήρηση και σχόλιο είναι ευπρόσδεκτα. Περισσότερα όμως στο συνημμένο. Τέλος θα ήθελα να πω ένα μεγάλο μπράβο σε όλους εσάς που με τις προσπάθειές σας διατηρείτε ζωντανό αυτό εδώ το νήμα. Φιλικά, Γιάννης. NUM_TEXT.zip
  13. Καλησπέρα st2! Πρώτα απ' όλα, δημιούργησε το αρχείο "C:\Test.xls" και αν θέλεις άνοιξέ το. Σε ένα νέο σχέδιο στο Autocad, πάτα Alt+F11 να ανοίξει το περιβάλλον του VBE και διπλοπάτησε στο αντικείμενο ThisDrawing. Στο παράθυρο κώδικα που θα ανοίξει επικόλλησε τον κώδικα που έδωσα παραπάνω αλλά αντικατέστησε τη διαδικασία "Private Sub AcadDocument_ObjectModified" με την παρακάτω: >Private Sub AcadDocument_ObjectModified(ByVal Object As Object) If TypeName(Object) Like "*Polyline" Then If XLBook Is Nothing Then AcadDocument_Activate If Not XLBook Is Nothing Then XLBook.sheets(1).range("b2:g2") = Object.Coordinates End If End If End Sub Στη συνέχεια σχεδίασε μια polyline και δες τα αποτελέσματα στο "Test.xls". Αν δεν είναι ανοιχτό το "Test.xls", πριν το ανοίξεις κλείσε το σχέδιο από το Autocad διότι είναι ανοιχτό στο παρασκήνιο. Πιθανόν το παράθυρο του "Test.xls" να είναι κρυμμένο όταν το ανοίξεις οπότε επανεμφάνισέ το από το αντίστοιχο μενού (Παράθυρο-->Επανεμφάνιση ή Window-->Unhide) Μην ξεχνάς πως είναι απλά ένα παράδειγμα κώδικα χωρίς ιδιαίτερη μέριμνα για σφάλματα. Ελπίζω να πάνε όλα καλά... Γιάννης
  14. Να 'σαι καλά terry! Χαίρομαι που σ' άρεσε! Όσο για το άλλο ερώτημα που έθεσες, μπορείς να εκμεταλευτείς το συμβάν AcadDocument_ObjectModified όπως φαίνεται στο παρακάτω απλοϊκό παράδειγμα: >Option Explicit Private XLBook As Object Private Sub AcadDocument_Activate() On Error Resume Next Set XLBook = GetObject("C:\Test.xls") Debug.Print "Open " & XLBook.Name End Sub Private Sub AcadDocument_BeginClose() On Error Resume Next Debug.Print "Close " & XLBook.Name XLBook.Close True Set XLBook = Nothing End Sub Private Sub AcadDocument_ObjectModified(ByVal Object As Object) If TypeName(Object) Like "*Polyline" Then XLBook.sheets(1).range("b2:g2") = Object.Coordinates End If End Sub Ελπίζω να σε βοηθάω.
  15. Καλησπέρα και από μένα! Ας μην ξεχνάμε πως η συνάρτηση Text() επιστρέφει τιμή κειμένου με αποτέλεσμα το κελί να μην μπορεί να συμμετέχει σε κάποια παραπέρα αριθμητική πράξη. (πχ άθροισμα των εμβαδών) Η προσωπική μου πρόταση είναι η μορφοποίηση να μπει στο κελί ώστε η τιμή να μείνει αριθμητική. Οπότε terry, στη μορφοποίηση κελιών της περιοχής των εμβαδών, δώσε (όπως ακριβώς τον βλέπεις) τον τύπο μορφοποίησης: "E= " #.##0,00 " τ.μ." Έτσι έχεις και το οπτικό αποτέλεσμα που θέλεις στο κελί αλλά και την αριθμητική τιμή του εμβαδού διαθέσιμη.
×
×
  • Create New...

Σημαντικό

Χρησιμοποιούμε cookies για να βελτιώνουμε το περιεχόμενο του website μας. Μπορείτε να τροποποιήσετε τις ρυθμίσεις των cookie, ή να δώσετε τη συγκατάθεσή σας για την χρήση τους.