Προς το περιεχόμενο

MS Excel & Vba Macros


nickolasemp

Προτεινόμενες αναρτήσεις

Καλημέρα παιδιά,

 

έχω ένα μικρό ζήτημα με μια συνάρτηση στο 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

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Πρέπει να την γράψεις ως:

 

Application.WorksheetFunction.BinomDist(inputs)

 

και θα την "καταλάβει" μια χαρά.

 

Αλήθεια τι προσπαθείς να κάνεις με διωνυμική κατανομή (απλά περίεργος...);

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Διπλό δειγματοληπτικό έλεγχο.

 

Χμμμ. Αν και πλέον δεν μου πετάει error, μου τα βγάζει όλα 0...

Βασικά αυτό που θέλω είναι άθροισμα σειράς. Δεν μπορώ να καταλάβω το άλλο με το Ctrl+Shift+Enter γι'αυτό καταφεύγω σε αυτή τη λύση, αλλά μέχρι στιγμής μάταια.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αν κάνεις επισύναψη το excel θα μπορούσα να σε βοηθήσω και με το ctrl+shift+enter.

 

Δεν ξέρω γιατί σου βγάζει 0 αλλά η συνάρτησή σου μου φαίνεται μια χαρά!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Κι εμένα μια χαρά μου φαίνεται να είναι η συνάρτηση. Επισυνάπτω το αρχείο.

 

Ευχαριστώ εκ των προτέρων για την βοήθεια. ^_^

 

Edit:Η BinomDist δεν μου επιστρέφει αποτέλεσμα...

 

Edit 2: Η ηλίθια VB δεν μού επέστρεφε αποτέλεσμα επειδή δεν είχα θέσει ως double μία παράμετρο (την p) αλλά ως Long... Μα καλά, δεν κάνει casting μόνη της;;; Θα μου άρεσε όμως να την δω και ως αποτέλεσμα του Ctrl+Shift+Enter

solution.zip

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν χρειάζεται να σου επισυνάψω το αρχείο. Το πρόβλημα είναι ότι το p το έχεις δηλώσει σαν Long ενώ πρέπει να δηλωθεί σαν double καθότι δεκαδικός (πιθανότητα...)

 

Οπότε απλά άλλαξε στην συνάρτησή σου την δήλωση σε:

 

p As Double

 

και μετά δουλεύει.

 

Αν είχες γράψει απλά dim p θα δούλευε αλλά από την στιγμή που την δηλώνεις μόνο ως long τότε δυστυχώς όχι.

 

Επίσης νομίζω ότι το ctrl+shift+Enter δεν κολλάει σε αυτή την περίπτωση.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...