2011-11-28 66 views
1

下面我试图编写一个脚本,其目标是计算几个不同的数字列的统计数据。我得到了一些帮助,直到“需要帮助以下”标记。但除此之外,我对如何计算简单统计资料(总和,平均值,标准差,变异系数)表示遗憾。我知道VB有这些统计数据的脚本,我已经将其包含在我的代码中,但我想我需要做一些额外的声明或其他事情。建议非常感谢。谢谢。visual basic中的汇总统计

Sub TOAinput() 

    Const n As Integer = 648 

    Dim stratum(n), hybrid(n), acres(n), hhsz(n), offinc(n) 
    Dim s1 As Integer 
    Dim s2 As Integer 
    Dim i As Integer 

    For i = 1 To n 
    stratum(i) = Worksheets("hhid level").Cells(i + 1, 2).Value 
    Next i 

    s1 = 0 
    s2 = 0 
    For i = 1 To n 
     If stratum(i) = 1 Then 
     s1 = s1 + 1 
     Else: 
     s2 = s2 + 1 
     End If 
    Next i 

    Dim acres1(), hhsz1(), offinc1(), acres2(), hhsz2(), offinc2() 
    ReDim acres1(s1), hhsz1(s1), offinc1(s1), acres2(s2), hhsz2(s2), offinc2(s2) 

    'data infiles: acres, hh size, off-farm income, 

    For i = 1 To n 
    acres(i) = Worksheets("hhid level").Cells(i + 1, 4).Value 
    hhsz(i) = Worksheets("hhid level").Cells(i + 1, 5).Value 
    offinc(i) = Worksheets("hhid level").Cells(i + 1, 6).Value 
    Next i 

    s1 = 0 
    s2 = 0 
    For i = 1 To n 
     If stratum(i) = 1 Then 
     s1 = s1 + 1 
     acres1(s1) = acres(i) 
     hhsz1(s1) = hhsz(i) 
     offinc1(s1) = offinc(i) 
     Else: 
     s2 = s2 + 1 
     acres2(s2) = acres(i) 
     hhsz2(s2) = hhsz(i) 
     offinc2(s2) = offinc(i) 
     End If 
    Next i 

    '**************************** 
    'Need help below 
    '**************************** 

    Dim sumac1, sumac2, mhhsz1, mhhsz2, cvhhsz1, cvhhsz2 

    sumac1 = Sum(acres1) 
    sumac2 = Sum(acres2) 
    mhhsz1 = Average(hhsz1) 
    mhhsz2 = Average(hhsz2) 
    cvhhsz1 = StDev(hhsz1)/Average(hhsz1) 
    cvhhsz2 = StDev(hhsz2)/Average(hhsz2) 


    End Sub 
+0

你想完成什么?代码似乎没有任何错误,但它什么都不做 - 它是一个子集,所以没有结果,并且不会在任何地方输出统计信息。 –

+0

您是要求提供统计功能的来源还是您有特定的错误。顺便说一下,我会启用[Option Strict](http://msdn.microsoft.com/en-US/library/zcd4xwzs.aspx),以便您不会执行任何隐式类型转换。 –

+0

@MarcThibault我试图在代码的最后得到变量的意思等。例如,我想总结一下“英亩1”变量。然后我想把这个总和输出到excel工作表上(但是我忘了在这篇文章中包含代码)。主要的观点是“sumac1 = Sum(亩1)”没有做到这一点。我收到一条错误消息。如果有人可以告诉我如何总结“英亩1”或获得“hhsz1”的平均值并将其输出到一个很好的工作表上。 – ben

回答

0

Sum,Average和StdDev是工作表函数,不能直接在VBA中使用。

尝试

MyInteger = Application.WorksheetFunction.Sum(MyIntegerArray) 

如果您将公式细胞尼克Sabbe的建议是不恰当的。