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

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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 14-12-10, 13:24
Το avatar του χρήστη mdragon
Όνομα: Μάρω
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 09-03-2010
Περιοχή: Αθήνα
Μηνύματα: 289
Προεπιλογή Άθροιση υπό όρους

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



Ευχαριστώ εκ των προτέρων,
Μάρω
Συνημμένα Αρχεία
Τύπος Αρχείου: xls Άθροισμα.xls (33,0 KB, 53 εμφανίσεις)
Απάντηση με παράθεση
  #2  
Παλιά 14-12-10, 23:32
Το avatar του χρήστη gr8styl
Super Moderator
Όνομα: Θανάσης Στυλιανίδης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 19-10-2009
Περιοχή: Βρυξέλλες, Βέλγιο
Μηνύματα: 823
Προεπιλογή

Καλησπέρα Μάρω,

το θέμα σου μοιάζει πολύ με το κόψιμο βεργών σε 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  
Παλιά 15-12-10, 10:23
Το avatar του χρήστη mdragon
Όνομα: Μάρω
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 09-03-2010
Περιοχή: Αθήνα
Μηνύματα: 289
Προεπιλογή

Θανάση καλημέρα,
1) Η λίστα θα περιλαμβάνει περίπου 100 τιμές
2) Δεν με ενδιαφέρει ο αριθμός των επιμέρους ποσών
3) Καμία σχέση
4) Δύσκολο να έχω επαναλήψεις αλλά δεν αποκλείεται
5) Θα διάλεγα το 9 όσο λιγότεροι συνδυασμοί τόσο το καλύτερο.

Από τη λίστα θα μπορώ να χρησιμοποιώ την κάθε τιμή μία μόνο φορά.
Ελπίζω να σε διαφώτισα.



Ευχαριστώ,
Μάρω
Απάντηση με παράθεση
  #4  
Παλιά 15-12-10, 17:08
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.737
Προεπιλογή

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

Μάρω, σε συγχαίρω για το πρόβλημα, που έθεσες. Είναι απ’ αυτά που ακονίζουν το μυαλό.
Παρόμοιο πρόβλημα, όπως διαπίστωσε και ο Θανάσης, τέθηκε και στην access. Εκεί , αν ισχύουν κάποιοι περιορισμοί, δόθηκε λύση με κώδικα και βασικά ένθετες δομές επανάληψης (For ...Next).
Τώρα δίνεται η δυνατότητα το πρόβλημα να αντιμετωπιστεί και με το excel.
Η παρακάτω διατύπωση του προβλήματος, πιθανόν να βοηθούσε στην επίλυσή του, από τους εδικούς στο excel (Θανάση, Τάσο, κλπ):
  • Δίνεται μία τιμή S.
  • Τα κελιά μιας στήλης έχουν σταθερές τιμές T1, T2, …, Tn.
  • Τα διπλανά κελιά έχουν αντίστοιχα ονόματα X1, X2, …, Xn και μπορούν να πάρουν τιμή 0 ή 1.
  • Ζητείται ο προσδιορισμός των μεταβλητών X1, X2, …, Xn, ώστε η απόλυτη τιμή της διαφοράς abs(T1*X1+T2*X2+…+Tn*Xn-S) να είναι ελάχιστη.
Χωρίς να είμαι σίγουρος, έχω τη γνώμη ότι το excel διαθέτει εργαλεία που επιλύουν προβλήματα αυτής της μορφής.

Φιλικά/Γιώργος
Απάντηση με παράθεση
  #5  
Παλιά 16-12-10, 09:18
Το avatar του χρήστη mdragon
Όνομα: Μάρω
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 09-03-2010
Περιοχή: Αθήνα
Μηνύματα: 289
Προεπιλογή

Καλημέρα σας,
προσπάθησα με συναρτήσεις μπας και βγάλω άκρη αλλά τίποτα.
Η λίστα που θα πρέπει να επεξεργαστώ είναι μεγάλη και το γεγονός ότι δεν
μπορώ να χρησιμοποιήσω το ίδιο ποσό δύο φορές δυσκολεύει ακόμα περισσότερο
την κατάσταση.
Η VBA μήπως θα μπορούσε να μας δώσει τη λύση?




Ευχαριστώ,
Μάρω
Απάντηση με παράθεση
  #6  
Παλιά 16-12-10, 14:01
Το avatar του χρήστη gr8styl
Super Moderator
Όνομα: Θανάσης Στυλιανίδης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 19-10-2009
Περιοχή: Βρυξέλλες, Βέλγιο
Μηνύματα: 823
Προεπιλογή

Καλημέρα σε όλους.
Αγαπητή Μάρω και όμως με συναρτήσεις μπορεί να βγει κάποια άκρη. Όχι για 100 αριθμούς αλλά ...

Στο συνημμένο (from_cuts2sums.zip λόγω μεγέθους) έχω μια λύση με συναρτήσεις και όχι VBA.
Στηρίζεται σε μια λύση που είχα φτιάξει για την κοπή ράβδων αλλά δεν την είχα ανεβάσει στο φόρουμ λόγω του ότι το θέμα είχε τεθεί για Access.

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

Νομίζω θα σε βοηθήσει.

Περιορίζεται σε max 12 αριθμούς λόγω πλήθους δυνατών συνδυασμών, που ισούται με 2 υψωμένο σε δύναμη ίση με το πλήθος των αριθμών. Δηλαδή για 12 αριθμούς έχουμε 2^12=4096 συνδυασμούς. Το from_cuts2sum θέλει πάρα πολλές αλλαγές για να αυξηθεί ο αριθμός των αριθμών.

Με VBA θα μπορούσες επίσης να δώσεις λύση αλλά θα έλεγα πρέπει να μπούνε έξυπνοι έλεγχοι στον κώδικα για την ελαχιστοποίηση των επαναλαμβανόμενων πράξεων (loops), γιατί 100 αριθμοί είναι υπερβολικά πολλοί.

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

Για πες μου γιατί πολύ θα με ενδιέφερε να μάθω σε τι σου χρησιμεύει να βρεις τους αριθμούς που μας δίνουν κάποιο συνολικό άθροισμα;

Τα λέμε

Θανάσης.
Συνημμένα Αρχεία
Τύπος Αρχείου: zip from_cuts2sums.zip (891,7 KB, 35 εμφανίσεις)
Απάντηση με παράθεση
  #7  
Παλιά 16-12-10, 14:05
Όνομα: Ανδρέας
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 06-12-2010
Περιοχή: Θεσσαλονίκη
Μηνύματα: 19
Προεπιλογή

Καλημέρα στα μέλη του θέματος, καλημέρα Μάρω,

Σκέφτηκα λίγο το θέμα αυτό και πιστεύω πως ο μόνος τρόπος είναι να γίνει η πρόσθεση για όλους τους δυνατούς συνδυασμούς
για να κρατήσεις τους ας πούμε 10 ή 20 καλύτερους και στον καθένα από ποιον συνδυασμό παράχθηκε (τετράδα, πεντάδα, κλπ.).
Ο τρόπος αυτός είναι γνωστός ως brute force αλγόριθμος και στην περίπτωση αυτή ο μόνος δυνατός.

Κατά τη γνώμη μου θα έπρεπε όλες οι τιμές να εισαχθούν σε ένα array

Στη συνέχεια ξεκινούμε ένα for loop από το j=1 έως το 100, όπου το κάθε j το μεταφράζουμε κάθε φορά στο δυαδικό σύστημα (bitmask).
Αν μια ορισμένη θέση του bitmask έχει τιμή 1(true), τότε επιλέγουμε την αντίστοιχη τιμή από το array για πρόσθεση, διαφορετικά την παραλείπουμε.
Όλο αυτό θα μπορούσε να το αναλάβει ένα VBA-module.

Τώρα στην πράξη: Έστω ότι δεν έχουμε 100 διαφορετικές τιμές, αλλά:
  • 8 => πλήθος συνδυασμών 2^8 = 256
  • 16 => πλήθος συνδυασμών 2^16 = 65536
  • 32 => πλήθος συνδυασμών 2^32 = 4 294 967 296
  • 64 => πλήθος συνδυασμών 2^64 = 18 446 744 073 709 551 616
  • 100 => πλήθος συνδυασμών 2^100 = 1 267 650 600 228 229 401 496 703 205 376
Μπορείς να μου διαβάσεις τον τελευταίο αριθμό; :)

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

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

Φιλικά
Ανδρέας
__________________
Οι υπολογιστές είναι εδώ για να μας λύνουν προβλήματα, που δίχως αυτούς δε θα είχαμε !!
Απάντηση με παράθεση
  #8  
Παλιά 16-12-10, 14:43
Το avatar του χρήστη mdragon
Όνομα: Μάρω
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 09-03-2010
Περιοχή: Αθήνα
Μηνύματα: 289
Προεπιλογή

Καλημέρα σε όλους,
το ξέρω ότι ακούγεται υπερβολικό αλλά θα σας εξηγήσω και πιστεύω πως θα με
καταλάβετε.
Κάθε μήνα γίνονται κάποιες εργασίες - ποσά (περίπου 100).
Θα πρέπει λοιπόν να επισυνάπτω πίσω από την πιστοποίηση - αρχικό ποσό
τις επιμέρους εργασίες και να συμφωνώ στο σύνολο μόνο με απόκλιση ολίγων λεπτών.
Αυτό το κάνω κάθε φορά χειροκίνητα και έλεγα μπας και το γλυτώσω.


Όπως καταλαβαίνετε Θανάση, Γιώργο και Ανδρέα ....... έχω πρόβλημα........





Φιλικά,
Μάρω
Απάντηση με παράθεση
  #9  
Παλιά 16-12-10, 15:03
Το avatar του χρήστη gr8styl
Super Moderator
Όνομα: Θανάσης Στυλιανίδης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 19-10-2009
Περιοχή: Βρυξέλλες, Βέλγιο
Μηνύματα: 823
Προεπιλογή

Παράθεση:
Αρχική Δημοσίευση από officeandi Εμφάνιση μηνυμάτων
Στη συνέχεια ξεκινούμε ένα for loop από το j=1 έως το 100, όπου το κάθε j το μεταφράζουμε κάθε φορά στο δυαδικό σύστημα (bitmask).
.....
Επειδή δεν είμαι απόλυτα σίγουρος για τα παραπάνω, παρακαλώ ας σχολιάσουν οι υπόλοιποι.
Αν όμως έχω δίκιο, καταλαβαίνεις ότι για τέτοιους υπολογισμούς τα PC μας δεν είναι έτοιμα ακόμη.

Φιλικά
Ανδρέας
Σωστά φίλε Ανδρέα με μια διόρθωση ότι το loop θα χρειαστεί να πάει μέχρι τον αριθμό που δεν διαβάζεται και όχι το 100.

Ακριβώς αυτή είναι και η δική μου προσέγγιση αν δεις στο προηγούμενο μήνυμά μου που μάλλον γράφαμε παράλληλα. Εγώ βέβαια το προσέγγισα με απλές συναρτήσεις του Excel και όχι VBA.
Τέλος δεν θα έλεγα ότι το πλήθος των συνδυασμών είναι αυτό που θα μας εμποδίσει να κάνουμε τους υπολογισμούς.
Είναι απλά θέμα χρόνου. Δηλαδή ποσο θα περιμένουμε για να πάρουμε την απάντηση. Το λές άλλωστε και στην υπογραφή σου "Οι υπολογιστές είναι εδώ για να μας λύνουν προβλήματα, που δίχως αυτούς δε θα είχαμε !! "

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

Τα λέμε
Θανάσης
Απάντηση με παράθεση
  #10  
Παλιά 16-12-10, 15:19
Το avatar του χρήστη editolis
Super Moderator
Όνομα: Τολης
Έκδοση λογισμικού Office: Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 02-01-2010
Περιοχή: ATHENS-GREECE
Μηνύματα: 199
Arrow

Διαβαζοντας τα ποστ των φιλων του φορουμ καταθετω μια ΒΔ της ACCESS που την ειχα για καποιον αλλο σκοπο αλλα νομιζω οτι αντικατροπτιζει πανω - κατω αυτο που ζητατε.

Μια γεννητρια αριθμων.

Οι ειδικοι του EXCEL εαν μπορουν να το μετατρεψουν. Πιστευω οτι μπορει να γινει.

Καλη συνεχεια...
Συνημμένα Αρχεία
Τύπος Αρχείου: zip CombineNumbers.zip (53,7 KB, 27 εμφανίσεις)
Απάντηση με παράθεση
Απάντηση στο θέμα

Ετικέτες
recursion, vba

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

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

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


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

Θέμα Δημιουργός 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


Η ώρα είναι 06:33.