Θέμα: Γενικά τυχαιες μεταβλητες

Εμφάνιση ενός μόνο μηνύματος
  #8  
Παλιά 24-12-14, 11:52
Το avatar του χρήστη Spirosgr
Spirosgr Ο χρήστης Spirosgr δεν είναι συνδεδεμένος
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 22-11-2011
Περιοχή: Αθήνα
Μηνύματα: 2.321
Προεπιλογή

Καλημέρα

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

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

Αφού δεν μπορούμε να χρησιμοποιήσουμε (για κάποιο λόγο) την RANDBETWEEN, θα πάμε σε μια άλλη συνάρτηση, που κι αυτή δημιουργεί τυχαίους αριθμούς.
Η =RAND() είναι μια συνάρτηση, χωρίς ορίσματα, που δημιουργεί τυχαίους αριθμούς, δεκαδικούς, υποδιαιρέσεις της μονάδας.

Θα βασιστούμε σε αυτό και με ένα τέχνασμα, θα κάνουμε μια χαρά την δουλειά μας.

Αν γράψουμε σε ένα κελί:

=ROUND(RAND()*(50-1)+1;0)

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

Σύνταξη:

=ROUND(RAND()*(μεγαλύτερος-μικρότερος)+μικρότερος ; δεκαδικά της round 0)

Από την άλλη (αν κι εφ' όσον μας το επιτρέπει η εργασία την οποία έχουμε)
μπορούμε με κώδικα, να «κατασκευάσουμε» μόνοι μας μια δικιά μας RANDBETWEEN
και μάλιστα με περισσότερα χαρακτηριστικά, από αυτήν που έχει η Excel.

Η RANDBETWEEN δημιουργεί, τυχαίους αριθμούς, ακεραίους μόνο.
Για να δημιουργήσει και δεκαδικούς χρειάζεται κι αυτή ένα τέχνασμα.

Αν συνοψίσουμε το σκεπτικό μας, και το εφαρμόσουμε σε μια Function τότε:

Κώδικας:
Public Function CustomRandBetween(StartNumb As Long, EndNumb As Long, DecNum As Integer)
    Application.Volatile
    Randomize
    If DecNum = 0 Then
        CustomRandBetween = Int((EndNumb + 1 - StartNumb) * Rnd + StartNumb)
    Else
        CustomRandBetween = Round((EndNumb - StartNumb) * Rnd + StartNumb, DecNum)
    End If
End Function
Ο πιο πάνω κώδικας, μας επιτρέπει, να έχουμε μια Custom Function στο βιβλίο* μας.
Η συνάρτηση, αποθηκεύεται στο σημείο με τις υπόλοιπες συναρτήσεις,
στην ενότητα User Defined.

*Αν δημιουργήσουμε ένα πρόσθετο και το ενσωματώσουμε στα Add-ins, μπορούμε εκτός από το βιβλίο που έχουμε την εργασία μας,
να την έχουμε στην εφαρμογή.

Επιλέξτε ένα κελί, πληκτρολογήστε =CustomRandBetween και
θα εμφανιστεί η συνάρτηση, έτοιμη για χρήση.

Σύνταξη:

=CustomRandBetween( αριθμός από ; αριθμός έως ; δεκαδικά )

Τα τρία ορίσματα είναι υποχρεωτικά και αν δεν θέλουμε δεκαδικά βάζουμε (0) μηδέν.

Καλή συνέχεια και καλά Χριστούγεννα σ' όλους!!!

Τελευταία επεξεργασία από το χρήστη Spirosgr : 27-12-14 στις 22:56. Αιτία: Ορθογραφία, σύνταξη
Απάντηση με παράθεση