nickolasemp Δημοσ. 25 Μαρτίου 2011 Δημοσ. 25 Μαρτίου 2011 Καλημέρα παιδιά, έχω ένα μικρό ζήτημα με μια συνάρτηση στο excel. Θέλω να κάνω summation, οπότε χρησιμοποιώ VBA macro. Ωστόσο, μέσα στο άθροισμα θέλω να βάλω μια υπάρχουσα συνάρτηση του excel (εδώ η BINOMDIST), αλλά μου βγάζει error ότι δεν την αναγνωρίζει. Γίνεται ή όχι; Ορίστε ο κώδικας: >Function SumBinomProduct(c1 As Integer, r1 As Integer, c2 As Integer, n1 As Integer, n2 As Integer, p As Long) As Double Dim i As Integer, j As Integer Dim result For i = c1 + 1 To r1 - 1 result = result + BinomDist(i, n1, p, False) * BinomDist(c2 - i + 1, n2, p, True) Next SumBinomProduct = result End Function
pagodas Δημοσ. 25 Μαρτίου 2011 Δημοσ. 25 Μαρτίου 2011 Πρέπει να την γράψεις ως: Application.WorksheetFunction.BinomDist(inputs) και θα την "καταλάβει" μια χαρά. Αλήθεια τι προσπαθείς να κάνεις με διωνυμική κατανομή (απλά περίεργος...);
nickolasemp Δημοσ. 25 Μαρτίου 2011 Μέλος Δημοσ. 25 Μαρτίου 2011 Διπλό δειγματοληπτικό έλεγχο. Χμμμ. Αν και πλέον δεν μου πετάει error, μου τα βγάζει όλα 0... Βασικά αυτό που θέλω είναι άθροισμα σειράς. Δεν μπορώ να καταλάβω το άλλο με το Ctrl+Shift+Enter γι'αυτό καταφεύγω σε αυτή τη λύση, αλλά μέχρι στιγμής μάταια.
pagodas Δημοσ. 25 Μαρτίου 2011 Δημοσ. 25 Μαρτίου 2011 Αν κάνεις επισύναψη το excel θα μπορούσα να σε βοηθήσω και με το ctrl+shift+enter. Δεν ξέρω γιατί σου βγάζει 0 αλλά η συνάρτησή σου μου φαίνεται μια χαρά!
nickolasemp Δημοσ. 25 Μαρτίου 2011 Μέλος Δημοσ. 25 Μαρτίου 2011 Κι εμένα μια χαρά μου φαίνεται να είναι η συνάρτηση. Επισυνάπτω το αρχείο. Ευχαριστώ εκ των προτέρων για την βοήθεια. Edit:Η BinomDist δεν μου επιστρέφει αποτέλεσμα... Edit 2: Η ηλίθια VB δεν μού επέστρεφε αποτέλεσμα επειδή δεν είχα θέσει ως double μία παράμετρο (την p) αλλά ως Long... Μα καλά, δεν κάνει casting μόνη της;;; Θα μου άρεσε όμως να την δω και ως αποτέλεσμα του Ctrl+Shift+Enter solution.zip
pagodas Δημοσ. 25 Μαρτίου 2011 Δημοσ. 25 Μαρτίου 2011 Δεν χρειάζεται να σου επισυνάψω το αρχείο. Το πρόβλημα είναι ότι το p το έχεις δηλώσει σαν Long ενώ πρέπει να δηλωθεί σαν double καθότι δεκαδικός (πιθανότητα...) Οπότε απλά άλλαξε στην συνάρτησή σου την δήλωση σε: p As Double και μετά δουλεύει. Αν είχες γράψει απλά dim p θα δούλευε αλλά από την στιγμή που την δηλώνεις μόνο ως long τότε δυστυχώς όχι. Επίσης νομίζω ότι το ctrl+shift+Enter δεν κολλάει σε αυτή την περίπτωση.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.