ms-office.gr > Forum > Microsoft Office > Visual Basic for Applications (VBA) > [Excel - VBA] Ευέλικτος υπολογισμός μαθηματικών τύπων

Visual Basic for Applications (VBA) Ερωτήσεις / Απαντήσεις σε σχέση με τη χρήση της VBA.

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 22-02-11, 07:21
Το avatar του χρήστη gvarth
Όνομα: Γεώργιος Φ. Βαρθαλίτης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 21-02-2011
Περιοχή: Αθήνα - Σέριφος
Μηνύματα: 12
Post Ευέλικτος υπολογισμός μαθηματικών τύπων

Παιδιά καλημέρα,

Θα ήθελα να μοιραστώ μαζί σας την συνάρτηση EvalMath που έφτιαξα ώστε να μπορώ να κάνω εύκολη και ευέλικτη αποτίμηση μαθηματικών τύπων που μπορεί να βρίσκονται μέσα σε κείμενο. Το κείμενο βέβαια παίζει επεξηγηματικό ρόλο και διευκολύνει όσους θέλουν να κατανοήσουν και να ελέγξουν τους υπολογισμούς.

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

Η συνάρτηση αυτή παίρνει σαν όρισμα την διεύθυνση κάποιου κελλιού και μας επιστρέφει το αποτέλεσμα της πράξης που περιέχεται σ' αυτό.

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

Θα χαρώ αν φανεί χρήσιμη.
Συνημμένα Thumbnails
Ευέλικτος υπολογισμός μαθηματικών τύπων-deigma_evalmath.gif  
Συνημμένα Αρχεία
Τύπος Αρχείου: xls EvalMath.xls (25,5 KB, 90 εμφανίσεις)
__________________
Τα μάτια των παιδιών λένε την αλήθεια . Ας φροντίσουμε να τα κάνουμε να λάμπουν από χαρά. Το αξίζουν !
Απάντηση με παράθεση
  #2  
Παλιά 22-02-11, 19:19
Το avatar του χρήστη gr8styl
Super Moderator
Όνομα: Θανάσης Στυλιανίδης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-10-2009
Περιοχή: Βρυξέλλες, Βέλγιο
Μηνύματα: 823
Προεπιλογή

Καλή προσπάθεια, αλλά με το "3.124,50 χιλιοστά Χ 120,50 χιλιοστά" πως θα υπολογίσουμε το εμβαδόν
Εγώ βλέπω δύο προβλήματα
1) τα "χ" των χιλιοστών και
2) το "." μαζί με το "," όταν έχουμε δεκαδικό με διαχωριστικό χιλιάδων !!!

Ελπίζω να μην ξέχασες την αυστηρότητα μου
Απάντηση με παράθεση
  #3  
Παλιά 22-02-11, 20:47
Το avatar του χρήστη gvarth
Όνομα: Γεώργιος Φ. Βαρθαλίτης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 21-02-2011
Περιοχή: Αθήνα - Σέριφος
Μηνύματα: 12
Προεπιλογή

Ωραίες οι παρατηρήσεις σου .

Την συνάρτηση την έγραψα για χρήση σε προμετρήσεις οικοδομικών έργων .

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

Ο τρόπος που αντιμετωπίζει η συνάρτηση τα "," και "." , δεν της δίνει προς το παρόν την ευκαιρία να τα διαχωρίζει.

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

Σεβαστή η αυστηρότητά σου . Δεν την λησμόνησα . Μόνο με αυστηρή κριτική υπάρχει αυτοκριτική και εξελικτική διαδικασία με σκοπό τη βελτίωση .

Θα επανέλθω με βελτιώσεις

Ευχαριστώ για το χρόνο που αφιέρωσες και για τις παρατηρήσεις σου.
__________________
Τα μάτια των παιδιών λένε την αλήθεια . Ας φροντίσουμε να τα κάνουμε να λάμπουν από χαρά. Το αξίζουν !
Απάντηση με παράθεση
  #4  
Παλιά 22-02-11, 23:49
Το avatar του χρήστη gr8styl
Super Moderator
Όνομα: Θανάσης Στυλιανίδης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-10-2009
Περιοχή: Βρυξέλλες, Βέλγιο
Μηνύματα: 823
Προεπιλογή

Γιώργο,
έπρεπε να μας το πεις από την αρχή το περί "μετρήσεων οικοδομικών έργων"
Τέλος πάντων
Εγώ θα το προσέγγιζα με προσδιορισμό των τελεστών των 4 πράξεων και της υποδιαστολής στην κλήση της συνάρτησης Δηλαδή κάτι σαν
=evalmath(C4;"+";"-";"*";"/";",") ή =evalmath(C4;" και ";" - ";" χ ";" προς ";".")

Τα λέμε
Θανάσης
Απάντηση με παράθεση
  #5  
Παλιά 23-02-11, 11:58
Το avatar του χρήστη gvarth
Όνομα: Γεώργιος Φ. Βαρθαλίτης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 21-02-2011
Περιοχή: Αθήνα - Σέριφος
Μηνύματα: 12
Post

Παράθεση:
Γιώργο,
έπρεπε να μας το πεις από την αρχή το περί "μετρήσεων οικοδομικών έργων"
Τέλος πάντων
Μην με μαλώνεις Θανάση ... Ξέχασες ότι είμαι ευαίσθητος ;

Λησμόνησα να το διευκρινήσω από την αρχή οπότε τα σχόλιά σου ήταν εύστοχα .

Την δεύτερη εκδοχή ,
Παράθεση:
=evalmath(C4;" και ";" - ";" χ ";" προς ";".")
ΔΕΝ την κατάλαβα . Τι ακριβώς εννοείς ;
__________________
Τα μάτια των παιδιών λένε την αλήθεια . Ας φροντίσουμε να τα κάνουμε να λάμπουν από χαρά. Το αξίζουν !
Απάντηση με παράθεση
  #6  
Παλιά 23-02-11, 19:43
Το avatar του χρήστη gr8styl
Super Moderator
Όνομα: Θανάσης Στυλιανίδης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-10-2009
Περιοχή: Βρυξέλλες, Βέλγιο
Μηνύματα: 823
Προεπιλογή

Παράθεση:
Αρχική Δημοσίευση από gvarth Εμφάνιση μηνυμάτων
...
Την δεύτερη εκδοχή ,
...
ΔΕΝ την κατάλαβα . Τι ακριβώς εννοείς ;
Γιώργο,
Τίποτα περισσότερο από το ότι μπορεί να χρησιμοποιηθεί για να υπολογίσει τις προτάσεις όπου έχουμε
" και " αντί "+" στην πρόσθεση " - " αντί "-" στην αφαίρεση " χ " στον πολλαπλασιασμό αντί "*" και " προς " για διαίρεση αντί "/" με υποδιαστολή την τελεία "."

πχ
αν C4=35.20 τ.μ. και 24.30 τ.μ.
τότε =evalmath(C4;" και ";" - ";" χ ";" προς ";".")
δίνει αποτέλεσμα 59,50
προσοχή στο πως θα ξεχωρίσεις την τελεία υποδιαστολή από την τελεία στο τ.μ.

Βούτηξες σε βαθιά νερά νομίζω

Τα λέμε
Θανάσης
Απάντηση με παράθεση
  #7  
Παλιά 16-03-11, 18:14
Όνομα: ΚΥΡΙΑΚΟΣ
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 16-03-2011
Μηνύματα: 2
Προεπιλογή

Πως μπορώ να ενεργοποιώ την συνάρτηση σε κάθε αρχείο εργασίας ?

Τελευταία επεξεργασία από το χρήστη Tasos : 16-03-11 στις 18:38. Αιτία: ΚΕΦΑΛΑΙΑ
Απάντηση με παράθεση
  #8  
Παλιά 17-03-11, 09:50
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.249
Προεπιλογή

Καλημέρα Κυριάκο, καλωσόρισες στο φόρουμ και σ ευχαριστούμε για τη συμμετοχή σου!

Γενικά, μπορείς να χρησιμοποιείς μακροεντολές (κώδικα VBA) στην Excel που τις χρειάζεσαι
τακτικά χωρίς να τις γράφεις κάθε φορά σε κάθε βιβλίο εργασίας,
αν τις να αποθηκεύσεις στο Βιβλίο Προσωπικών Μακροεντολών.
Διαδρομή Personal.xls; Σε περιβάλλον Win 7 :C:\Users\Username\AppData\Roaming\Microsoft\Excel \XLSTART\Personal.xls.

Μετά από επιτυχή αποθήκευση, το βιβλίο αυτό θα φορτώνεται ( χωρίς να είναι ορατό) κάθε φορά που ξεκινά η Excel.

Για να επιτύχεις την αποθήκευση αυτή άνοιξε ένα νέο βιβλίο, άνοιξε το διάλογο καταγραφής
Μακροεντολής ( Εργαλεία > Μακροεντολή > Καταγραφή Μακροεντολής ) και φρόντισε να κάνεις τις ρυθμίσεις όπως φαίνεται στην εικόνα.

Ευέλικτος υπολογισμός μαθηματικών τύπων-recpersmacro.png

Προαιρετικά μπορείς να εισάγεις και πλήκτρο συντόμευσης.

Πάτησε ΟΚ και φρόντισε να διακόψεις την καταγραφή.
Στον VBE έχει ήδη φορτωθεί το Personal.xls, έχει προστεθεί και μια λειτουργική μονάδα
που περιέχει τον κώδικα που καταγράφηκε (βλ.Εικόνα)

Ευέλικτος υπολογισμός μαθηματικών τύπων-personal_macro.png

...όπου μπορείς να αποθηκεύσεις μία η περισσότερες μακροεντολές.

Καλή συνέχεια!

Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #9  
Παλιά 18-03-11, 09:16
Όνομα: ΚΥΡΙΑΚΟΣ
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 16-03-2011
Μηνύματα: 2
Προεπιλογή

Ευχαριστω πολυ .
διαπιστωσα ομως οτι χρησιμοποιωντας την συναρτηση Evalmath και γραφοντας
" 3,40 μηκος * 0,30 παχος " δεν δινει αποτελεσμα διοτι αναγνωριζει το "χ" της λεξης "παχος" ως *
και επομενως προσπαθει να λυσει την αρθμ παρασταση ως 3,40* * 0,30 και προφανως το διπλο * δεν δινει αποτελεσμα.
Υπαρχει τροπος να διορθωθει διοτι πολες λεξεις περιεχουν "χ' ή "Χ"
Ακομη σε ενα αρχειο excel που βρηκα στο mhchanikos.gr χρησιμοποιειται η συναρτηση μεσα στην συναρτηση ROUND , βρηκα τροπο να το κανω αυτο αλλα με αντιγραφη της Evalmath μεσα στην ROUND ( Evalmath(C5);2). υπαρχει τροπος αλλος?.
Ευχαριστω
Απάντηση με παράθεση
  #10  
Παλιά 18-03-11, 10:44
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.249
Προεπιλογή

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

Γενικότερα όμως, η συνάρτηση αυτή δεν είναι "All around" λύση.
Αυτό σημαίνει ότι λειτουργεί κάτω από συγκεκριμένες συνθήκες και πρέπει να θεωρηθεί ως
παράδειγμα προσέγγισης για όσους θέλουν και μπορούν να την προσαρμόσουν στις ανάγκες
τους.
Τα if, ElseIf, Else, Then, Select Case κτλ. θα πρέπει να είναι τόσο πολλά όσο και οι περιορισμοί που και αναρίθμητες διαφορετικές προτάσεις που θα πρέπει να αντιμετωπιστούν.

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

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

Πάντως τα περιθώρια ανάπτυξης/βελτίωσης της συνάρτησης αυτής είναι πολύ μεγάλα.

Δώσε μας κάτι πιο σαφές με ένα παράδειγμα του ζητούμενου σου. Να είσαι σίγουρος ότι θα υπάρξουν αρκετές λύσεις.

Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
Απάντηση στο θέμα


Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
Υπολογισμός φπα q.mrk Access - Ερωτήσεις / Απαντήσεις 1 18-03-15 18:10
[Γενικά] Αντιμετάθεση Πίνακα με Διατήρηση τύπων dalavouras Excel - Ερωτήσεις / Απαντήσεις 1 22-07-13 10:45
Μη εμφάνιση αποτελέσματος τύπων σε πίνακες mdragon Access - Ερωτήσεις / Απαντήσεις 20 29-05-10 09:54
Επί των τύπων των ήλων: like & elself...then συναρτήσεις PanosPan Access - Ερωτήσεις / Απαντήσεις 15 17-03-10 06:49


Η ώρα είναι 19:08.