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

Excel - Για όσους θέλουν να ψάξουν παραπέρα ...


gvarth

Recommended Posts

Χαίρετε

 

Ανεβάζω μια ελαφρά ενημερωμένη έκδοση με προσθήκη δυνατότητας επιλογής:

* Θηλυκών μονάδων

* Μερικά επιπλέον σχόλια στον κώδικα

* Διόρθωση για χειρισμό Μηδέν

* Προσθήκη διατήρησης προσήμου μείον

Δεν ενημερώνω ακόμα το αρχείο στα downloads μέχρι να σιγουρευτώ ότι είναι όλα οκ.

 

Για λόγους συμβατότητας μπήκε ως optional στο τέλος της OlografwsFull. Παράδειγμα αλλαγών:

Παλιό =Olografwsfull($A$20;TRUE;"κότες κότα χήνες χήνα";2)

εκατό ένα εκατομμύρια έντεκα χιλιάδες διακόσια κότες και ένα χήνα

Νέο: =Olografwsfull($A$20;TRUE;"κότες κότα χήνες χήνα";2;FALSE)

εκατό μια εκατομμύρια έντεκα χιλιάδες διακόσιες κότες και μια χήνα

 

 

Καλησπέρα και από μένα!

 

Σχετικά με την olografws, οι άποψή μου είναι πως μια τέτοια συνάρτηση θα πρέπει να είναι όσο γίνεται πιο λιτή στην επιστρεφόμενη τιμή της ώστε να προσφέρει τη μέγιστη ευελιξία στους τύπους που θα εισαχθεί.

Συνεπώς οι εκφράσεις των μετρικών μονάδων (μέτρα κτλ) είναι περιττές διότι αυτές μπορούν να εισαχθούν στο τύπο που θα φιλοξενήσει την olografws.

 

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

Έτσι λοιπόν έφτιαξα την NUMTEXT που θα βρείτε στο συνημμένο (NUM_TEXT.zip) η οποία επιστρέφει είτε το ακέραιο μέρος μια τιμής σε ολογράφως, είτε το δεκαδικό.

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

 

Ένας απλός τρόπος χρήσης της είναι ο

=NUMTEXT(Α1)&" ευρώ και "&NUMTEXT(Α1;;TRUE)&" λεπτά."

Επειδή πρόκειται για πρώτη έκδοση σίγουρα θα επιδέχεται βελτίωσης, γιαυτό

οποιαδήποτε παρατήρηση και σχόλιο είναι ευπρόσδεκτα.

Περισσότερα όμως στο συνημμένο.

 

Τέλος θα ήθελα να πώ ένα μεγάλο μπράβο σε όλους εσάς

που με τις προσπάθειές σας διατηρείτε ζωντανό αυτό εδώ το νήμα.:)

 

Φιλικά, Γιάννης.

 

Να απαντήσει κανείς ή να μην απαντήσει??? :???:

1o κύριο μειονέκτημα είναι ότι χρειάζεται το 2ο Excel-όφυλλο για να δουλέψει, άρα πρέπει να το κουβαλάς μαζί σου. Και εγώ έτσι το ξεκίνησα αλλά... προχώρησα 8-)

2o Η olografwsFull είναι "εργαλείο" ; όχι παιχνίδι. Την συντάσσεις όπως θες ανά περίπτωση και αν θες κάτι πιο απλό για συχνή χρήση έχω παράδειγμα πώς να κάνεις πιο απλή olografws

3ο Σχετικά με τον κώδικα της olografws, είναι ο ελάχιστος απαραίτητος για να κάνει όσα κάνει. H Num to text είναι 2-3 γραμμές λιγότερες αλλά κάνει ελάχιστα. Για την ίδια λειτουργικότητα και χωρίς εξάρτηση από Excel-όφυλλο η olografws είναι πολύ μικρότερη

4ο Αν κάποιος θέλει προσαρμοσμένη στα μέτρα του εντολή, γράφεις μια όπως στη παρατήρηση 2ο. πχ

Public Function Num2Text(Ari8mos_mou, Optional Akribeia As Integer = 0)

If Akribeia = 0 Then

Num2Text= OlografwsFull(Fix(Ari8mos_mou), False, , 0)

Else

Num2Text= OlografwsFull((Ari8mos_mou - Fix(Ari8mos_mou)) * 10 ^ Akribeia, False, , 0)

End If

End Function

5ο Καλός κώδικας <==> σχόλια στον κώδικα. Όποιος πάει να διαβάσει δεν χρειάζεται να σπάσει το κεφάλι του. Όποιος θέλει να προσθέσει-αφαιρέσει...αλλάξει κάτι το κάνει πιο εύκολα. Μετά από χρόνια όταν θα τη χρειαστείς και τη ξαναπιάσεις, θα καταλάβεις άμεσα τι έκανες και γιατί το έκανες!

6ο άσχετο αλλά δεν υπάρχει τίποτα χειρότερο από αλβανούς εργάτες να πλακώνονται στο διπλανό μπαλκόνι την ώρα που προσπαθώ να σχεδιάσω :(

No 2 Text - Olografws.zip

  • Upvote 1
Link to comment
Share on other sites

Καλησπέρα και πάλι!

Να απαντήσει κανείς ή να μην απαντήσει??? :???:

1o κύριο μειονέκτημα είναι ότι χρειάζεται το 2ο Excel-όφυλλο για να δουλέψει, άρα πρέπει να το κουβαλάς μαζί σου. Και εγώ έτσι το ξεκίνησα αλλά... προχώρησα 8-)

2o Η olografwsFull είναι "εργαλείο" ; όχι παιχνίδι. Την συντάσσεις όπως θες ανά περίπτωση και αν θες κάτι πιο απλό για συχνή χρήση έχω παράδειγμα πώς να κάνεις πιο απλή olografws

3ο Σχετικά με τον κώδικα της olografws, είναι ο ελάχιστος απαραίτητος για να κάνει όσα κάνει. H Num to text είναι 2-3 γραμμές λιγότερες αλλά κάνει ελάχιστα. Για την ίδια λειτουργικότητα και χωρίς εξάρτηση από Excel-όφυλλο η olografws είναι πολύ μικρότερη

4ο Αν κάποιος θέλει προσαρμοσμένη στα μέτρα του εντολή, γράφεις μια όπως στη παρατήρηση 2ο. πχ

Public Function Num2Text(Ari8mos_mou, Optional Akribeia As Integer = 0)

If Akribeia = 0 Then

Num2Text= OlografwsFull(Fix(Ari8mos_mou), False, , 0)

Else

Num2Text= OlografwsFull((Ari8mos_mou - Fix(Ari8mos_mou)) * 10 ^ Akribeia, False, , 0)

End If

End Function

5ο Καλός κώδικας <==> σχόλια στον κώδικα. Όποιος πάει να διαβάσει δεν χρειάζεται να σπάσει το κεφάλι του. Όποιος θέλει να προσθέσει-αφαιρέσει...αλλάξει κάτι το κάνει πιο εύκολα. Μετά από χρόνια όταν θα τη χρειαστείς και τη ξαναπιάσεις, θα καταλάβεις άμεσα τι έκανες και γιατί το έκανες!

6ο άσχετο αλλά δεν υπάρχει τίποτα χειρότερο από αλβανούς εργάτες να πλακώνονται στο διπλανό μπαλκόνι την ώρα που προσπαθώ να σχεδιάσω :(

Ειλικρινά Απόστολε, όταν έγραφα το "παρατήρηση και σχόλιο" δεν είχα στο μυαλό μου ένα τέτοιο επιθετικό μήνυμα.:???:

Θα το προσπεράσω όμως αποδίδοντάς το στον εκνευρισμό σου εξαιτίας των Αλβανών και θα προχωρήσω στις απαντήσεις μου χωρίς ενδοιασμούς.

 

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

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

Αυτό σημαίνει πως σε ένα σύστημα χωρίς ελληνική υποστήριξη, η εξαγωγή ελληνικών από τον κώδικα θα επιστρέψει κάτι σαν αυτό:

Ýíá äõï ôñéá ôÝóóåñá ðÝíôå Ýîé åöôÜ ï÷ôþ åííéÜ

(Μπορείς να το διαπιστώσεις και ο ίδιος τι θα μπορούσε να γίνει αντιγράφοντας ένα κομμάτι από τον κώδικά σου που να περιέχει ελληνικά και επικολλώντας το στο φύλλο εργασίας.)

 

Εκτός αυτού, η χρήση φύλλου εργασίας θα μπορούσε να δώσει τη δυνατότητα υποστήριξης και άλλων γλωσσών εκτός από της ελληνικής αν δοθεί η δυνατότητα με κάποιον ασφαλή τρόπο στον χρήστη να επεξεργάζεται και να αλλάξει την περιοχή με όνομα "Names".

 

Όσο για το θέμα της φορητότητας, τέτοιου είδους αρχεία προορίζονται για πρόσθετα, οπότε δεν υπάρχει θέμα.

Αλλιώς θα έπρεπε να γκρινιάζεις και για τα αρχεία υποστήριξης και τις βιβλιοθήκες (*.dll) που κουβαλάνε τα εκτελέσιμα (*.exe) μαζί τους.

 

2o Η επιθυμία να τα κάνεις όλα με VBA και να δημιουργείς συναρτήσεις μετονομάζοντας άλλες συναρτήσεις ίδιας λειτουργικότητας, αν μη τι άλλο φανερώνει "προγραμματιστική εφηβεία" και ελλειπή γνώση του Excel.

Ένας από τους θεμελιώδης κανόνες στην ανάπτυξη προσαρμοσμένων συναρτήσεων και κλάσεων αντικειμένων για το Excel, είναι να κρατάς τα πράγματα λιτά.

 

Φαντάζεσαι να παρείχε το Excel μια SUM() για κάθε πράγμα που θέλεις να προσθέσεις;

Κάνε λοιπόν με κώδικα ό,τι δεν σου παρέχει το Excel και για όλα τ' άλλα εκμεταλλεύσου τη λειτουργικότητά του για μέγιστη απόδοση.;)

Τότε ναι, θα έχεις προχωρήσει, αλλά προς τη σωστή κατεύθυνση.

 

3ο Όταν μίλησα για υπερβολικό κώδικα δεν εννοούσα τον κώδικα της δικής σου olografws αλλά για τον κώδικα της olografws που μας έδωσε ο st2 η οποία κυκλοφορεί εδώ και χρόνια στο διαδίκτυο.

Θα έπρεπε να το είχες καταλάβει από το "...είχα σκεφτεί εδώ και πολύ καιρό...".

Ελπίζω να μην θέλεις να βάζω σχόλια και στα μηνύματά μου...:P

Δεν μπορώ όμως να εντοπίσω τον λόγο του ανταγωνισμού στο ύφος του μηνύματός σου.

Άλλωστε στις UDF δεν μετράει η ποσότητα του κώδικα αλλά η ταχύτητα στην εκτέλεσή του.

 

4ο Ομοίως με το 2ο.

 

5ο Όντως! Είναι μια κακή συνήθεια που δεν λέω να την αλλάξω.:sad:

Εξαιτίας της όμως αναγκάστηκα και έμαθα να διαβάζω τον κώδικα και όχι τα σχόλιά του.

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

 

Σου εύχομαι μετά από χρόνια να έχεις αποκτήσει τη δυνατότητα να καταλαβαίνεις άμεσα τι έχεις κάνει και γιατί.;)

 

@st2

Ευχαριστώ για τα καλά σου λόγια st2!

 

Το να χρησιμοποιείς το Excel ως κειμενογράφο, είναι σαν να σκαλίζεις τις τριανταφυλλιές σου με ...εκσκαφέα!

 

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

Για την επεξεργασία κειμένου είναι το Word και για την επικοινωνία τους η VBA.;)

 

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

Καλό βράδυ σε όλους!

 

Φιλικά, Γιάννης.

 

Υ.Γ.

Έχοντας υπόψη το τι κάνουν οι εφαρμογές λογιστικών φύλλων και την ονομασία της αντίστοιχης εφαρμογής του OpenOffice, το όνομα πιστεύω που τους αξίζει στα ελληνικά δεν είναι άλλο από το υπολογιστής.:)

Link to comment
Share on other sites

Γιάννη, δεν υπήρχε επιθετικότητα, απλά απάντησα σε κάποια θέματα που έθιξες, και συνεχίζω.

 

Προφανώς υπάρχει διάσταση απόψεων στη βάση του προγραμματισμού, και στο ρόλο αυτού του thread.

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

2ο Όταν διαβάζεις διάβασε και κανένα σχόλιο ή ιστορία του thread, για καλύτερη κατανόηση. Έχοντας το βασικό εργαλείο μπορείς να κάνεις μικρότερα εργαλεία για πιο συχνή χρήση, ανάλογα με το τι θες και πόσο αξίζει. Αν έχεις ένα περιορισμένο εργαλείο… κάθε φορά μπαίνεις μέσα στον κώδικα (άρα εργαλείο για πιο λίγους)

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

4ο

5ο Όταν πιάσεις καμιά εκατοστή σελίδες μαθηματικού κώδικα με 0 σχόλια ίσως κατανοήσεις την αξία τους. Μέχρι τότε, και εφόσον πρόκειται για forum με έννοια τη συνεργασία, κάνε την καρδιά σου πέτρα και βάζε τα για τους υπόλοιπους. Οι κανόνες στο προγραμματισμό έχουν βγει με βάση την εμπειρία και το κοινό καλό, και όχι τι αναγκάστηκες να μάθεις από κακούς προγραμματιστές και τι ακολουθείς στη ζωή. Λάθη των παλαιότερων και η νοοτροπία του "όπως δυσκολεύτηκα εγώ για να το μάθω έτσι να παιδευείτε και εσείς..." ελπίζουμε ότι ανήκει στο παρελθόν.

 

Γενικά η olografws (πλέον OlografwsFull) φτιάχτηκε με την έννοια black-box για αρχαρίους και προχωρημένους, και όχι για διαγωνισμό ταχύτητας. Black-box εννοούμε να φτάσει σε σημείο να βάζεις κάτι και να ξέρεις τι παίρνεις, χωρίς επεμβάσεις μέσα στη συνάρτηση. Άρα πρέπει να μπορεί και να κάνει ότι ενδέχεται να χρειαστεί. Όπως πάντα αναμένω σχόλια για βελτιώσεις

Καλησπέρα και πάλι!

 

Ειλικρινά Απόστολε, ....

 

Σου εύχομαι μετά από χρόνια να έχεις αποκτήσει τη δυνατότητα να καταλαβαίνεις άμεσα τι έχεις κάνει και γιατί.;)

Παρομοίως Γιάννη

Link to comment
Share on other sites

Έχω ένα αρχείο excel για υπολογισμό Κατανομής Δαπανών

 

Στο πρώτο φύλλο είναι ο τύπος με 3 ιδιοκτησίες

 

Στο δεύτερο φύλλο έχω φτιάξει πίνακές, κάθε φορά που μπαίνει πετρέλαιο, ανατρέχω με τις ώρες στο πρώτο φύλλο και παίρνω τα ποσοστά του καθένα και με c/p προκύπτουν οι δαπάνες επί του συνολικού ποσού.

 

Μπορώ να συνδέσω τα κελιά ώρες-ποσοστά με το πρώτο φύλλο χωρίς να αντιγράψω τους τύπους υπολογισμού??? (εννοείται)

Link to comment
Share on other sites

@ slalom

 

αν μπορεις σηκωσε ενα αρχειακι εδω γιατι δεν καταλαβαινω καθολου τι θες να κανεις

 

 

 

Ξερει κανεις πως μπορω να χρησιμοποιησω στην if το διαφορο του μηδενος ?????

Link to comment
Share on other sites

Μια φορά που ήθελα να το κάνω, χρησιμοποίησα το =0 αλλά ανάποδα τα false και true.

Δηλαδή ενώ αυτό που ήθελα ήταν αν το Χ διάφορο του 0 τότε κάνε πρόσθεση αλλιώς αφαίρεση, του είπα αν το χ =0 τότε κάνε αφαίρεση αλλιώς πρόσθεση.

Link to comment
Share on other sites

erling το σκεφτηκα και αυτο

αλλα δεν βολευει και παρα πολυ

ακομα σκεφτηκα μια συνταξη του τυπου

 

=if(and(A1<0;0<A1);"σωστο";"λαθος")

Link to comment
Share on other sites

@ slalom

αν μπορεις σηκωσε ενα αρχειακι εδω γιατι δεν καταλαβαινω καθολου τι θες να κανεις

Ξερει κανεις πως μπορω να χρησιμοποιησω στην if το διαφορο του μηδενος ?????

 

αυτό δε δουλεύει?

=IF(A2<>0;"true";"false")

Link to comment
Share on other sites

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε προκειμένου να αφήσετε κάποιο σχόλιο

Πρέπει να είστε μέλος για να μπορέσετε να αφήσετε κάποιο σχόλιο

Δημιουργία λογαριασμού

Κάντε μια δωρεάν εγγραφή στην κοινότητά μας. Είναι εύκολο!

Εγγραφή νέου λογαριασμού

Σύνδεση

Εάν έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
×
×
  • Create New...

Σημαντικό

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