Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Excel > Excel - Ερωτήσεις / Απαντήσεις > [Συναρτήσεις] Άθροιση υπό όρους

Excel - Ερωτήσεις / Απαντήσεις Ότι έχει σχέση με συναρτήσεις, μορφοποίηση, εκτυπώσεις γραφήματα κτλ.

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #31  
Παλιά 23-12-10, 01:09
Όνομα: Ανδρέας
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 06-12-2010
Περιοχή: Θεσσαλονίκη
Μηνύματα: 17
Προεπιλογή

Και να 'μαι πάλι,

Εδώ ανεβάζω ένα Demo με 20.0000 τιμές (randoms), καθώς και τα TOP50 αποτελέσματα.

Προσοχή! Για ν' αωοιχτεί αυτό το αρχείο χωρίς πρόβλημα, θα πρέπει να έχει γίνει η εγκατάσταση που έστειλα με το προηγούμενο μήνυμα.

Φιλικά
Ανδρέας
Συνημμένα Αρχεία
Τύπος Αρχείου: zip mdragon_Solution_Demo.zip (374,8 KB, 12 εμφανίσεις)
Απάντηση με παράθεση
  #32  
Παλιά 23-12-10, 17:36
Το avatar του χρήστη nisgia
Super Moderator
Όνομα: Γιάννης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 12-10-2009
Περιοχή: Ηγουμενίτσα
Μηνύματα: 161
Προεπιλογή

Καλησπέρα στη παρέα!

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

Η αλήθεια είναι πως το πιο δύσκολο ήταν να κατανοήσω τον τρόπο σκέψης μου στην αναζήτηση
του πιο κοντινού στο στόχο αθροίσματος μέσα σε μια λίστα με ποσά.
(ίσως αυτό οφείλεται και στο ότι τελευταία το "καίω" με πιο αφηρημένες έννοιες το τσερβέλο μου )

Αυτή τη φορά όμως νομίζω πως η σημερινή μου προσπάθεια πλησιάζει αρκετά το επιθυμητό
και αυτό φαίνεται να οφείλεται στην πραγματικά αναδρομική (και πολύ πιο απλή) νέα SumNums.
(Δείτε το σχετικό αρχείο "Sum2Target" στο συνημμένο.)

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

Γι' αυτό έχω φροντίσει η συνάρτηση SumToTarget να εκτυπώνει κάποια αποτελέσματα στο παράθυρο Immediate
ώστε να γίνει πιο εύκολη η εξέταση της συμπεριφοράς της.
Σε περίπτωση ανάγκης, να θυμάστε πως η εκτέλεση μπορεί να διακοπεί και με Ctrl+Break
όμως μετά θα χρειαστεί Reset η Static μεταβλητή (n) της SumNums.
Αυτό μπορεί να γίνει και με επανεκκίνηση του αρχείου.


Επίσης, αν η προηγούμενη SumNums προτιμούσε τα ποσά σε φθήνουσα ταξινόμηση, η σημερινή (για την ώρα) τα απαιτεί έτσι.

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

Γιώργο (kapetang), χαίρομαι που χαίρεσαι τη συμμετοχή μου αλλά να ξέρεις πως εγώ την απολαμβάνω ειλικρινά.
Όσο για τις αποκλίσεις που ανέφερες, εκτός από την έλλειψη νοημοσύνης της συνάρτησης, ευθύνη έφεραν και οι μεταβλητές
τύπου Double με αποτέλεσμα συνθήκες του τύπου 123,24 = 123,24 να βγαίνουν ψευδείς (!!!).
Γι' αυτόν ακριβώς το λόγο άλλαξα τον τύπο τους με αυτόν του Currency.

Τα λέμε!
Γιάννης

Υ.Γ.
Φίλε Ανδρέα, αρπάζω την ευκαιρία και σε καλωσορίζω και εγώ με τη σειρά μου στην παρέα!

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

Θα ήθελα όμως να μου επιτρέψεις να θεωρήσω πως η χρήση γλωσσών τύπου C σε ένα φόρουμ σχεδιασμένο
για χρήστες του MS Office+VBA ξεπερνάει κάπως τα θεματικά του πλαίσια.
Εδώ ο Τόλης μας "βάζει χέρι" όταν δίνουμε "έτοιμες" λύσεις με VBA, πόσο μάλλον όταν η υλοποίηση
δεν μπορεί να εξετασθεί από τον αποδέκτη
.

Πραγματικά δεν θέλω να με παρεξηγήσεις ως αντίθετο στην (όποια) εξέλιξη ή ως δογματικό όμως πιστεύω
πως η πρόταση εργαλείων εκτός του "πακέτου" (που αναμφίβολα αυξάνουν την αποτελεσματικότητα),
μοιάζει με πρόταση χρήσης εκτυπωτή Inkject σε ομάδα συζήτησης ζωγράφων.

Παρόλο που μοιάζει να στη "λέω" λίγο με το "καλημέρα", θέλω να σε διαβεβαιώσω πως
χαίρομαι ειλικρινά που βρίσκεσαι στη παρέα μας!

(Σας ζητώ συγγνώμη για το "σεντόνι"...)
Γιάννης
Συνημμένα Αρχεία
Τύπος Αρχείου: zip Sum2Target.zip (12,5 KB, 8 εμφανίσεις)
__________________
Αν δεν το ρωτούσες, δεν θα το μαθαίναμε ποτέ...!
-----------------------------------------------
Τελικά η γνώση, αντίθετα με ό,τι μέχρι σήμερα πίστευα, είναι η φυλακή της σκέψης.
Όταν η αφετηρία είναι η ελεύθερη σκέψη, δεν χρειάζεται πλέον να φτάσεις πουθενά!

Τελευταία επεξεργασία από το χρήστη nisgia : 23-12-10 στις 18:08.
Απάντηση με παράθεση
  #33  
Παλιά 23-12-10, 19:28
Όνομα: Μάρω
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 09-03-2010
Περιοχή: Αθήνα
Μηνύματα: 287
Προεπιλογή

Γιάννη καλησπέρα και χρόνια πολλά.
Έχεις κάνει καλή δουλειά αλλά.......νομίζω πως κάτι δεν παει καλά.
Τι γίνεται στην περίπτωση που δεν έχουμε ακριβές αποτέλεσμα?
Το προσπάθησα πολλές φορές (για ποσά που ήξερα ότι δεν είχα αποτέλεσμα)
και όλες της φορές μου κόλλαγε η excel και δεν ανταποκρινόταν το πρόγραμμα.
Ρίξ΄του μια ματιά και εσύ, δεν ξέρω τι φταίει.



Φιλικά,
Μάρω
Απάντηση με παράθεση
  #34  
Παλιά 24-12-10, 23:31
Όνομα: Ανδρέας
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 06-12-2010
Περιοχή: Θεσσαλονίκη
Μηνύματα: 17
Προεπιλογή

Καλησπέρα σε όλα τα μέλη,

Εύχομαι σε όλους χαρούμενα Χριστούγεννα, ό,τι ποθείτε, και άντε να δούμε πόσο καλά θα τραγουδήσουμε το «πάει ο παλιός ο χρόνος…».

Αγαπητέ Γιάννη (nisgia),

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

Σχετικά με αυτά που αναφέρεις στο μήνυμά σου για μένα, θα ήθελα να ξέρεις, ότι το τελευταίο που θα έκανα, θα ήταν να σε παρεξηγήσω. Ίσα, ίσα αυτό με ώθησε να το ξαναγράψω σε VBA και το επισυνάπτω σε αυτό το μήνυμα. Απλά νιώθω λίγο πιο άνετα με την C#, και νομίζω ότι όταν κάποιος έχει μια ιδέα, προσπαθεί να την καταγράψει όσο πιο εύκολα είναι γι’ αυτόν.

Πολύ σύντομα όμως θα ήθελα να αναφερθώ στους λόγους, για τους οποίους ανέβασα το προηγούμενο σαν εγκατάσταση.
  • Τις επιλογές που πρέπει να κάνει ο χρήστης πριν από την εκκίνηση για την εύρεση των αθροισμάτων, ήθελα να είναι έξω από το φύλλο εργασίας των δεδομένων, διότι οι επιλογές οι ίδιες δεν είναι δεδομένα. Σκέφτηκα να φτιάξω ένα Ribbon, αλλά όπως γνωρίζουμε το Office 2007 δεν έχει τα απαραίτητα εργαλεία. Μια ματιά στη βοήθεια του Excel και ξεκαθαρίζεται αμέσως. Ίσως αυτό όμως να έχει αλλάξει στο Office 2010.
  • Όταν ταξινομώ εσωτερικά το array που σχηματίζεται από την επιλογή του χρήστη, χρησιμοποιώ για αυτό ένα ξένο Module για τη ταξινόμηση, δηλαδή πράγματα, τα οποία σε άλλες γλώσσες έχουν λυθεί εδώ και καιρό. Θα μπορούσα και να ταξινομήσω με τη βοήθεια του Excel, αλλά θεωρώ ότι δεν είναι καλό για το χρήστη να αλλάζει η προβολή των δεδομένων.
  • Τέλος, για να είμαι από μέρος μου σίγουρος ότι ο χρήστης έχει εγκατεστημένο ό,τι χρειάζεται για να λειτουργεί το αρχείο, δημιούργησα την εγκατάσταση. Η εναλλακτική λύση θα ήταν να κατεβάσει ο ίδιος αυτά που χρειάζονται από το Διαδίκτυο σε περίπτωση που δεν τα έχει, να ξέρει που θα τα βρει και να εισάγει ορισμένες ρυθμίσεις στο μητρώο του υπολογιστή, πράγμα επικίνδυνο.

Ο αλγόριθμος σε VBA συμπεριφέρεται ακριβώς το ίδιο. Ως προς την ταχύτητα δεν νομίζω ότι διαφέρει και πάρα πολύ. Ο προηγούμενος ενώ είναι πολύ πιο γρήγορος στον υπολογισμό (και θα μπορούσε να γίνει ακόμη πιο γρήγορος), χάνει ώρα στη επικοινωνία με το Excel. Η μόνη διαφορά είναι ότι ο καινούργιος (VBA) κατά τον υπολογισμό δείχνει και την πρόοδο (ποσοστό).

Προσπάθησα να σχολιάσω τον κώδικά όσο πιο πιο αναλυτικά μπορούσα.

Και πάλι καλά Χριστούγεννα, υγεία και καλή καρδιά σε όλους!

Φιλικά
Ανδρέας
Συνημμένα Αρχεία
Τύπος Αρχείου: zip mdragon.solution.vba.xlsm.zip (206,0 KB, 17 εμφανίσεις)
Απάντηση με παράθεση
Απάντηση στο θέμα

Ετικέτες
recursion, vba

Εργαλεία Θεμάτων
Τρόποι εμφάνισης

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

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


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

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[Συναρτήσεις] Άθροιση ποσότητας ανά κωδικό. nikosjc Excel - Ερωτήσεις / Απαντήσεις 3 02-04-14 13:36
[ Συναρτήσεις ] ΑΘΡΟΙΣΗ ΧΡΟΝΟΥ vangelis67 Access - Ερωτήσεις / Απαντήσεις 4 29-11-11 15:58
[Συναρτήσεις] ΑΘΡΟΙΣΗ ΣΤΟ EXCEL alatis Excel - Ερωτήσεις / Απαντήσεις 2 04-10-11 15:46
[Γενικά] Ευρεση και αθροιση δεδομένων misirlis Excel - Ερωτήσεις / Απαντήσεις 2 08-05-11 17:05
[Γενικά] αθροιση misirlis Excel - Ερωτήσεις / Απαντήσεις 11 11-01-11 05:17


Η ώρα είναι 18:27.