全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 Excel
1621 3
2010-01-19
由于我要处理大量的数据,内容是计算各时期不同公司的市盈率方差,但是要剔除其中小于零的市盈率(也就是市盈率小于零的公司在相应的时期不包括在内),我的具体代码是这样的:
Function varif(rng As Range) As Variant
    Dim i As Integer
    Dim j As Integer
    Dim p As Double
    Dim q As Integer
    Dim m As Double
    MaxRows = rng.Rows.Count
    MaxCols = rng.Columns.Count
    p = 0
    q = 0
    For i = 1 To MaxRows
        For j = 1 To MaxCols
            If rng(i, j) > 0 Then
                p = p + rng(i, j)
                q = q + 1
            End If
        Next j
    Next i
    i = 1
    j = 1
    m = 0
    For i = 1 To MaxRows
        For j = 1 To MaxCols
            If rng(i, j) > 0 Then
            m = m + (rng(i, j) - p / q) * (rng(i, j) - p / q)
            End If
        Next j
    Next i
    varif = m / (q - 1)
End Function
现在的问题是,当我在一列中选择400多个数据的时候计算正常,但是超过了500左右的样子计算出来的就是空值!求高手指点!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-1-19 23:20:54
你的函数好像只是求了个方差啊...
如果是那样的话, 把矩阵的非零数放到一个一维数组里, 然后用stdev()^2就可以了吧...
你可以试试...
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-1-20 11:55:30
好的,谢谢,我试试!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-1-21 22:35:22
好东西,顶一下
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群