Excel - Ερωτήσεις / Απαντήσεις Ότι έχει σχέση με συναρτήσεις, μορφοποίηση, εκτυπώσεις γραφήματα κτλ. |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| |||
| |||
Άθροιση υπό όρους
Καλημέρα σε όλη την κοινότητα, το θέμα μου είναι ότι έχω μία λίστα με ποσά μερικά από τα οποία θέλω να αθροίζω και να μου δίνουν σαν αποτέλεσμα ένα συγκεκριμένο ποσό που θα του ορίζω εγώ κάθε φορά. Επισυνάπτω συνημμένο για να δείτε τι εννοώ. Ευχαριστώ εκ των προτέρων, Μάρω |
#2
|
Καλησπέρα Μάρω, το θέμα σου μοιάζει πολύ με το κόψιμο βεργών σε Access δες εδώ Θα πρέπει να μας διευκρινήσεις μερικά πράγματα για να σε βοηθήσουμε. 1) Πόσο μεγάλη μπορεί να είναι η λίστα με τα ποσά από όπου θα γίνεται η επιλογή ? 2) Ποιος είναι ο στόχος το λιγότερο ή το μεγαλύτερο δυνατό αριθμό επιμέρους ποσων για πλησιασουμε το τελικό ? 3) Υπάρχει καμιά σχέση μεταξύ επιμέρους ποσών και ζητούμενου ποσού ? 4) Τα επιμέρους ποσά είναι μοναδικές τιμές ή μπορεί να υπάρχουν και επαναλήψεις ? Για πες μας: Αν ζητούσες να φτάσεις τον αριθμό 9 έχοντας στη διάθεσή σου τους αριθμούς από 1 έως 9 (από μια φορά τον κάθε έναν) ποιους θα διάλεγες και γιατί ? (1+2+6) (1+3+5) (1+8) (2+3+4) (2+7) (3+6) ή (4+5) Δώσε μας τα φώτα σου ώστε να μπορέσουμε να πάμε παραπέρα. Τα λέμε. Θανάσης. |
#3
| |||
| |||
Θανάση καλημέρα, 1) Η λίστα θα περιλαμβάνει περίπου 100 τιμές 2) Δεν με ενδιαφέρει ο αριθμός των επιμέρους ποσών 3) Καμία σχέση 4) Δύσκολο να έχω επαναλήψεις αλλά δεν αποκλείεται 5) Θα διάλεγα το 9 όσο λιγότεροι συνδυασμοί τόσο το καλύτερο. Από τη λίστα θα μπορώ να χρησιμοποιώ την κάθε τιμή μία μόνο φορά. Ελπίζω να σε διαφώτισα. Ευχαριστώ, Μάρω |
#4
| |||
| |||
Καλησπέρα στην παρέα Μάρω, σε συγχαίρω για το πρόβλημα, που έθεσες. Είναι απ’ αυτά που ακονίζουν το μυαλό. Παρόμοιο πρόβλημα, όπως διαπίστωσε και ο Θανάσης, τέθηκε και στην access. Εκεί , αν ισχύουν κάποιοι περιορισμοί, δόθηκε λύση με κώδικα και βασικά ένθετες δομές επανάληψης (For ...Next). Τώρα δίνεται η δυνατότητα το πρόβλημα να αντιμετωπιστεί και με το excel. Η παρακάτω διατύπωση του προβλήματος, πιθανόν να βοηθούσε στην επίλυσή του, από τους εδικούς στο excel (Θανάση, Τάσο, κλπ):
Φιλικά/Γιώργος |
#5
| |||
| |||
Καλημέρα σας, προσπάθησα με συναρτήσεις μπας και βγάλω άκρη αλλά τίποτα. Η λίστα που θα πρέπει να επεξεργαστώ είναι μεγάλη και το γεγονός ότι δεν μπορώ να χρησιμοποιήσω το ίδιο ποσό δύο φορές δυσκολεύει ακόμα περισσότερο την κατάσταση. Η VBA μήπως θα μπορούσε να μας δώσει τη λύση? Ευχαριστώ, Μάρω |
#6
|
Καλημέρα σε όλους. Αγαπητή Μάρω και όμως με συναρτήσεις μπορεί να βγει κάποια άκρη. Όχι για 100 αριθμούς αλλά ... Στο συνημμένο (from_cuts2sums.zip λόγω μεγέθους) έχω μια λύση με συναρτήσεις και όχι VBA. Στηρίζεται σε μια λύση που είχα φτιάξει για την κοπή ράβδων αλλά δεν την είχα ανεβάσει στο φόρουμ λόγω του ότι το θέμα είχε τεθεί για Access. Έχω χρησιμοποιήσει τους αριθμούς του δικού σου παραδείγματος. Ελέγχει για διπλούς αριθμούς όπως και για αριθμούς μεγαλύτερους του ζητούμενου αθροίσματος και σε ενημερώνει ανάλογα. Νομίζω θα σε βοηθήσει. Περιορίζεται σε max 12 αριθμούς λόγω πλήθους δυνατών συνδυασμών, που ισούται με 2 υψωμένο σε δύναμη ίση με το πλήθος των αριθμών. Δηλαδή για 12 αριθμούς έχουμε 2^12=4096 συνδυασμούς. Το from_cuts2sum θέλει πάρα πολλές αλλαγές για να αυξηθεί ο αριθμός των αριθμών. Με VBA θα μπορούσες επίσης να δώσεις λύση αλλά θα έλεγα πρέπει να μπούνε έξυπνοι έλεγχοι στον κώδικα για την ελαχιστοποίηση των επαναλαμβανόμενων πράξεων (loops), γιατί 100 αριθμοί είναι υπερβολικά πολλοί. Το αφήνω όμως να ασχοληθούν οι γκουρού της VBA αν θέλουν και μπορούν. Για πες μου γιατί πολύ θα με ενδιέφερε να μάθω σε τι σου χρησιμεύει να βρεις τους αριθμούς που μας δίνουν κάποιο συνολικό άθροισμα; Τα λέμε Θανάσης. |
#7
| |||
| |||
Καλημέρα στα μέλη του θέματος, καλημέρα Μάρω, Σκέφτηκα λίγο το θέμα αυτό και πιστεύω πως ο μόνος τρόπος είναι να γίνει η πρόσθεση για όλους τους δυνατούς συνδυασμούς για να κρατήσεις τους ας πούμε 10 ή 20 καλύτερους και στον καθένα από ποιον συνδυασμό παράχθηκε (τετράδα, πεντάδα, κλπ.). Ο τρόπος αυτός είναι γνωστός ως brute force αλγόριθμος και στην περίπτωση αυτή ο μόνος δυνατός. Κατά τη γνώμη μου θα έπρεπε όλες οι τιμές να εισαχθούν σε ένα array Στη συνέχεια ξεκινούμε ένα for loop από το j=1 έως το 100, όπου το κάθε j το μεταφράζουμε κάθε φορά στο δυαδικό σύστημα (bitmask). Αν μια ορισμένη θέση του bitmask έχει τιμή 1(true), τότε επιλέγουμε την αντίστοιχη τιμή από το array για πρόσθεση, διαφορετικά την παραλείπουμε. Όλο αυτό θα μπορούσε να το αναλάβει ένα VBA-module. Τώρα στην πράξη: Έστω ότι δεν έχουμε 100 διαφορετικές τιμές, αλλά:
Για τον κάθε συνδυασμό λοιπόν πρέπει να γίνει μια πρόσθεση. Επειδή δεν είμαι απόλυτα σίγουρος για τα παραπάνω, παρακαλώ ας σχολιάσουν οι υπόλοιποι. Αν όμως έχω δίκιο, καταλαβαίνεις ότι για τέτοιους υπολογισμούς τα PC μας δεν είναι έτοιμα ακόμη. Φιλικά Ανδρέας |
#8
| |||
| |||
Καλημέρα σε όλους, το ξέρω ότι ακούγεται υπερβολικό αλλά θα σας εξηγήσω και πιστεύω πως θα με καταλάβετε. Κάθε μήνα γίνονται κάποιες εργασίες - ποσά (περίπου 100). Θα πρέπει λοιπόν να επισυνάπτω πίσω από την πιστοποίηση - αρχικό ποσό τις επιμέρους εργασίες και να συμφωνώ στο σύνολο μόνο με απόκλιση ολίγων λεπτών. Αυτό το κάνω κάθε φορά χειροκίνητα και έλεγα μπας και το γλυτώσω. Όπως καταλαβαίνετε Θανάση, Γιώργο και Ανδρέα ....... έχω πρόβλημα........ Φιλικά, Μάρω |
#9
| |
Παράθεση:
Ακριβώς αυτή είναι και η δική μου προσέγγιση αν δεις στο προηγούμενο μήνυμά μου που μάλλον γράφαμε παράλληλα. Εγώ βέβαια το προσέγγισα με απλές συναρτήσεις του Excel και όχι VBA. Τέλος δεν θα έλεγα ότι το πλήθος των συνδυασμών είναι αυτό που θα μας εμποδίσει να κάνουμε τους υπολογισμούς. Είναι απλά θέμα χρόνου. Δηλαδή ποσο θα περιμένουμε για να πάρουμε την απάντηση. Το λές άλλωστε και στην υπογραφή σου "Οι υπολογιστές είναι εδώ για να μας λύνουν προβλήματα, που δίχως αυτούς δε θα είχαμε !! " Τώρα αν κάποιοι διαφωνούν ας το καταθέσουν έμπρακτα για να λύσει και η Μάρω το πρόβλημά της. Τα λέμε Θανάσης |
#10
| ||||
| ||||
Διαβαζοντας τα ποστ των φιλων του φορουμ καταθετω μια ΒΔ της ACCESS που την ειχα για καποιον αλλο σκοπο αλλα νομιζω οτι αντικατροπτιζει πανω - κατω αυτο που ζητατε. Μια γεννητρια αριθμων. Οι ειδικοι του EXCEL εαν μπορουν να το μετατρεψουν. Πιστευω οτι μπορει να γινει. Καλη συνεχεια...
__________________ http://www.facebook.com/home.php?ref...00000309992857 |
Ετικέτες |
recursion, vba |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
Παρόμοια Θέματα | ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
[Συναρτήσεις] Άθροιση ποσότητας ανά κωδικό. | nikosjc | Excel - Ερωτήσεις / Απαντήσεις | 3 | 02-04-14 14:36 |
[ Συναρτήσεις ] ΑΘΡΟΙΣΗ ΧΡΟΝΟΥ | vangelis67 | Access - Ερωτήσεις / Απαντήσεις | 4 | 29-11-11 16:58 |
[Συναρτήσεις] ΑΘΡΟΙΣΗ ΣΤΟ EXCEL | alatis | Excel - Ερωτήσεις / Απαντήσεις | 2 | 04-10-11 16:46 |
[Γενικά] Ευρεση και αθροιση δεδομένων | misirlis | Excel - Ερωτήσεις / Απαντήσεις | 2 | 08-05-11 18:05 |
[Γενικά] αθροιση | misirlis | Excel - Ερωτήσεις / Απαντήσεις | 11 | 11-01-11 06:17 |
Η ώρα είναι 08:16.