计算ChiSquare

我正在用excel vba编写用户定义的函数。 所以这个新function:

  1. 取4个input值
  2. 一些计算生成8个数字。 (2个数组 – 每个数组有4个数字)
  3. 做一个chisquaretesting
  4. 返回1个输出值

码:

Sub test() Dim A, B, C, D As Variant A = 33 B = 710 C = 54 D = 656 'Observed Value Dim O_A As Variant Dim O_B As Variant Dim O_V As Variant Dim O_D As Variant 'Define Observer Value O_C_A = 'Some Calucation' O_C_B = 'Some Calucation' O_T_C = 'Some Calucation' O_T_C = 'Some Calucation' 'Expected Value Dim E_C_A As Variant Dim E_C_B As Variant Dim E_T_C As Variant Dim E_T_D As Variant 'Define Expected Value E_C_A = 'Some Calucation' E_C_B = 'Some Calucation' E_T_C = 'Some Calucation' E_T_D = 'Some Calucation' 'Create array(2x2) Dim Chi_square_result As Variant Dim my_array(1, 1) my_array(0, 0) = O_C_Mesaurement my_array(0, 1) = O_C_Balance my_array(1, 0) = O_T_Measurement my_array(1, 1) = O_T_Balance Dim my_array2(1, 1) my_array2(0, 0) = E_C_Mesaurement my_array2(0, 1) = E_C_Balance my_array2(1, 0) = E_T_Measurement my_array2(1, 1) = E_T_Balance 'Create a chi square test formula' Dim formula(1 To 5) As String formula(1) = "CHITEST(" formula(2) = my_array formula(3) = "," formula(4) = my_array2 formula(5) = ")" 'Chi Square Chi_square_result = evaluate(Join(formula, "")) end sub 

它给运行时错误“13”,节省types不匹配。 这是因为公式的连接。

评估期望工作表单元格范围。 使用Excel应用程序对象或WorksheetFunction对象来计算VBA中的function。

这certificate了。

 Dim dbl As Double Dim my_array1(1, 1) my_array1(0, 0) = 1 my_array1(0, 1) = 2 my_array1(1, 0) = 3 my_array1(1, 1) = 4 Dim my_array2(1, 1) my_array2(0, 0) = 2 my_array2(0, 1) = 3 my_array2(1, 0) = 4 my_array2(1, 1) = 5 dbl = Application.ChiTest(my_array1, my_array2) Debug.Print dbl 

VBE立即窗口的结果: 0.257280177154182

如果你正在写一个函数,你的格式是错误的。

 Function Chi_square_result(A as Long, B as Long, C as Long, D as Long) as Double 'All your manipulations here Chi_square_result = (Your math equation) End Function 

你也从来没有定义my_array1,我假设它应该是你键入'my_array'的地方。 我也不认为join是你最好的select。 你正在尝试做大量的数组操作,而且我认为你的维度正在帮助你。 以更直接的方式做这件事会更好。