Συνδυασμοί και Διατάξεις

Ο κώδικας της Myrna Larson για την κατασκευή συνδυασμών ή διατάξεων
Για τον υπολογισμό του πλήθους των συνδυασμών και του πλήθους των διατάξεων το excel έχει τις συναρτήσεις φύλλου COMBIN και PERMUT αντίστοιχα. Αν είστε προπονητής που έχει στη διάθεσή του 8 παίχτες και θέλετε να φτιάξετε από αυτούς μια ομάδα των 5, η συνάρτηση =COMBIN(8;5) θα σας πει ότι αυτό μπορείτε να το κάνετε με 56 διαφορετικούς τρόπους, και αν η κάθε θέση στην ομάδα είναι διακριτή, και παίζει ρόλο η θέση που θα παίζει ο καθένας παίχτης, η συνάρτηση =PERMUT(8;5) θα σας πει ότι αυτό γίνεται με 6720 τρόπους. Για να καταγραφούν όμως, ένας-ένας όλοι αυτοί οι τρόποι, θα χρειαστεί vba κώδικας. Ευτυχώς υπάρχει στο δίκτυο, εδώ και πολλά χρόνια, κώδικας που λύνει αποτελεσματικά αυτό το θέμα γραμμένος από Myrna Larson.(I)   Τον κώδικα μπορείτε να βρείτε σε πολλά σημεία στο δίκτυο, όπως και σε σελίδες της Microsoft. Αρκετές φορές φίλοι του ιστολογίου έχουν ζητήσει τρόπο να κατασκευάζουν συνδυασμούς και διατάξεις, και στο παρελθόν, τους παρέπεμπα στον κώδικα της κας Larson. Για να διευκολύνω μελλοντικούς χρήστες που θα χρειαστούν τον ίδιο κώδικα, ετοίμασα δύο excel βιβλία, ένα για τις παλαιότερες εκδόσεις 97-2003 και ένα για τις νεώτερες 2007-13, που τυποποιούν την εργασία. Ο χρήστης αρκεί να εισάγει τα δεδομένα του σε ένα φύλλο και να τρέξει τον κώδικα από ένα κουμπί. Ο κώδικας είναι ακριβώς όπως γράφτηκε το 2000 από την Myrna Larson, έκανα μόνο πολύ μικρές απαραίτητες τροποποιήσεις στην έκδοση 2007-13, και πρόσθεσα μία ρουτίνα ελέγχου των δεδομένων που εισάγει ο χρήστης.

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

CombinPermut11
Στο κελί Α2 γράψτε τον αριθμό των αντικειμένων που θα περιέχει κάθε συνδυασμός ή διάταξη. Ο αριθμός πρέπει να είναι μικρότερος ή ίσος από το πλήθος των αντικειμένων που θα γράψετε στη στήλη Α, από το κελί Α3 και κάτω.
Στη στήλη Α, από το κελί Α3 και κάτω (χωρίς ενδιάμεσα κενά), γράψτε τα αντικείμενα από τα οποία θα κατασκευαστούν οι συνδυασμοί ή οι διατάξεις. Μπορούν να είναι αριθμοί, ημερομηνίες, γράμματα, λέξεις, ονόματα, σύμβολα, οτιδήποτε.
Μόλις πατήσετε το κουμπί, ένα μήνυμα θα σας ενημερώσει για το πλήθος των σ/δ που πρόκειται να κατασκευαστούν και σας καλεί να αποφασίσετε αν θα συνεχίσετε ή όχι.

CombinPermut22
Αν επιλέξετε ΝΑΙ, ένα νέο φύλλο θα προστεθεί στο βιβλίο και οι σ/δ που θα δημιουργηθούν, θα εμφανιστούν σε μία ή περισσότερες στήλες του νέου φύλλου:

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

  • Κατεβάστε από εδώ ή από εδώ το βιβλίο CombinationAndPermutations07_13.xlsm (για excel 2007-2010-2013)
  • ή από εδώ ή από εδώ το βιβλίο CombinationAndPermutations97_03.xls  (για excel 1997-2000-2002-2003)
    . . . . . . . . . . . . . . . . .
    (I) Η γιατρός αιματολόγος Myrna Larson υπήρξε ένα πολύ δραστήριο μέλος των αγγλόφωνων ομάδων συζήτησης για το excel, την προηγούμενη δεκαετία. Μόνο τα έτη 2001 έως 2005 συμμετείχε σε περισσότερες από 7000 συζητήσεις δίνοντας ευφυέστατες λύσεις σε πολλά προβλήματα.
This entry was posted in excel, Μακροεντολές, Συναρτήσεις φύλλου, VBA and tagged , , , , , , , , , , . Bookmark the permalink.

5 Responses to Συνδυασμοί και Διατάξεις

  1. Ο/Η Κασαπάκης Μιχάλης λέει:

    Γιάννη γειά χαρά
    Νομίζω πως χρειάζονται δυο διευκρινίσεις στο θέμα για να μην απογοητευτεί κανείς φίλος.
    α. Τα στοιχεία για το συνδυασμό ή τη διάταξη πρέπει να είναι όλα διακριτά, δηλαδή διαφορετικά μεταξύ τους (πχ τα στοιχεία δεν μπορεί να είναι τα 1, 1, 2, 2, 3)
    β. Δεν δίνονται οι συνδυασμοί ή διατάξεις με επανάληψη στοιχείων (πχ συνδυασμοί των 1, 2, 3 ανά δύο δεν θα δοθούν οι 1, 1 ούτε 2, 2 ή 3,3)

    Νά ‘σαι πάντα καλά να μας βοηθάς
    Καλό καλοκαίρι να ‘χουμε όλοι

  2. Ο/Η vioannis λέει:

    Πολύ σωστές και οι δύο παρατηρήσεις – διευκρινίσεις Μιχάλη.
    Ευχαριστώ πολύ.
    Καλό καλοκαίρι και σε σένα και σε όλους τους φίλους του ιστολογίου

  3. Ο/Η elc.kostas λέει:

    Γεια σας κ. Βαρλάμη
    Θα μπορούσαν τα αποτελέσματα του κώδικα της κας Larson να αναπτύσσονται σε πίνακα αντί να βρίσκονται μέσα στο κελί διαχωρισμένα με κόμμα?
    Ευχαριστώ
    Κώστας

  4. Ο/Η vioannis λέει:

    Κώστα, Ο ίδιος ο κώδικας όχι, γιατί πρέπει να καλύπτει και τις περιπτώσεις με εκατομμύρια συνδυασμούς ή διατάξεις, και αν τα επίστρεφε σε πίνακα, θα δημιουργούσε τεράστια δύσχρηστα φύλλα. Για λίγα δεδομένα που επιστρέφονται σε μία στήλη, μπορείς να τις μετατρέψεις σε πίνακα με τη βοήθεια της συνάρτησης φύλλου MID
    Αν παράδειγμα στο κελί Α1 έχεις a,b,c,d,e τότε στα κελιά B1, C1, D1, E1, F1 γράψε αντίστοιχα τους τύπους:

    =MID(A1;1;1)
    =MID(A1;3;1)
    =MID(A1;5;1)
    =MID(A1;7;1)
    =MID(A1;9;1)
    
  5. Ο/Η elc.kostas λέει:

    Ευχαριστώ πολύ!

Τα σχόλια είναι απενεργοποιημένα.