2016-04-25 6 views
0

Ich versuche einen einfachen Z-Test zu programmieren, aber mein Code gibt einen Fehler bei der Berechnung des Z-Ergebnisses mit diesem Code: Z = (P1 - P2)/SD; Weiß jemand warum? Der Fehler, der oben kommt, ist ein Überlauf (Fehler 6)VBA teilt keine lokale Variable (Fehler 6 Überlauf)

Hier ist der vollständige Code:

Sub ChiSquare() 

    Total_Groep_1 = Application.Sum(Range("C4", Range("C4").End(xlDown))) 
    Total_Groep_2 = Application.Sum(Range("E4", Range("E4").End(xlDown))) 


    For i = 5 To Range("C4").End(xlDown) 
       Dim P1 As Double 
    P1 = Cells(i, 3)/Total_Groep_1 
    Cells(i, 4) = P1 

    Dim P2 As Double 
    P2 = Cells(i, 5)/Total_Groep_2 
    Cells(i, 6) = P2 

    Dim SD As Double 
    SD = Sqr((P1 * (1 - P1)/Total_Groep_1) + (P2 * (1 - P2)/Total_Groep_2)) 
    Cells(i, 7) = SD 

    Dim Z As Double 
    Z = (P1 - P2)/SD 
    Cells(i, 8) = Z 

    Next i 

End Sub 
+1

Was ist der Fehler? –

+1

Warum geben Sie ein Array an SD zurück? Sie können eine Zahl nicht durch ein solches Array teilen. – Rory

+0

Ich habe nicht vorher und es hat dann nicht funktioniert: Ich habe versucht, das Array als Lösung – Tara

Antwort

0

Die Schleife, die ich gemacht nicht zu einer Zahl ging aber auf einen Bereich. Es funktioniert jetzt habe ich das geändert.

+0

Die Schleife ging zu einer Nummer - nur nicht die Nummer, die Sie beabsichtigten. Was wohl der Fall sein musste, war, dass die Zelle eine Zahl enthielt, die so groß war, dass Sie, wenn Sie so weit zu loopen versuchten, außerhalb Ihres Datenbereichs waren und Ihre Formel für "SD" in den leeren Zellen auf 0 ausgewertet wurde. Es scheint seltsam, dass * overflow * und nicht * division by 0 * der Fehler war. –

+1

Außerdem sollten Sie i als Long deklarieren, da Sie mehr als 65.000 Datenzeilen haben könnten. –