Using Integer you get overflow. Use Doubles.
Function NewChi(a As Double, b As Double, c As Double, d As Double) As Double
Dim N As Double
Dim ea As Double
Dim eb As Double
Dim ec As Double
Dim ed As Double
N = a + b + c + d
ea = ((a + c) * (a + b)) / N
eb = ((b + d) * (a + b)) / N
ec = ((a + c) * (c + d)) / N
ed = ((b + d) * (c + d)) / N
NewChi = (((a - ea) ^ 2) / ea) + _
(((b - eb) ^ 2) / eb) + _
(((c - ec) ^ 2) / ec) + _
(((d - ed) ^ 2) / ed)
End Function
Also, in this declaration,
Dim N, ea, eb, ec, ed, chival As Integer
... everything but chival is declared as a Variant.
You can do this,
Dim N As Variant, s As String, d As Double, ...
Bookmarks