全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 Excel
2097 0
2018-03-21
自己写了一个vba的循环程序,计算量非常大,试着改写了一下,出现了错误,请大家帮忙看看,谢谢啦!
以下是vba程序内容,其中for i 的值我想改为 for i = 2+(n-2)*20 to (n-1)*25,也就是对于每个n不需要循环那么多次,但是这么一改,if第一行就错误了,我自己尝试了一下不知道怎么改,希望大家给点意见。


Sub dummyvariables()

Dim i, j, n, a, b, c

  For j = 2 To 6519  '表rank的列数
    Application.StatusBar = j
    For n = 2 To 446  '表dummy variable的行数

          a = 0  '表rank单元格值为1的个数
          b = 0  '表rank单元格值为-1的个数
          c = 0  '表rank单元格值为0的个数

      For i = 2 To 9653  '表rank的行数


        If Not IsEmpty(Worksheets("rank").Cells(i, j).Value) And Month(Worksheets("rank").Cells(i, 1)) = Month(Worksheets("winners").Cells(n, 1)) And Year(Worksheets("rank").Cells(i, 1)) = Year(Worksheets("winners").Cells(n, 1)) Then
           '先判断rank的单元格不为空,然后判断rank单元格的年月和winners相同
          If Worksheets("rank").Cells(i, j).Value = 1 Then
            a = a + 1
          ElseIf Worksheets("rank").Cells(i, j).Value = -1 Then
            b = b + 1
          ElseIf Worksheets("rank").Cells(i, j).Value = 0 Then
            c = c + 1
          End If
        End If
      Next i

            If a > 0 And b = 0 Then
            Worksheets("winners").Cells(n, j).Value = 1
            ElseIf a = 0 And b > 0 Then
            Worksheets("losers").Cells(n, j).Value = 1
            ElseIf a > 0 And b > 0 Then
            Worksheets("both").Cells(n, j).Value = 1
            ElseIf a = 0 And b = 0 And c > 0 Then
            Worksheets("never").Cells(n, j).Value = 1
            End If
    Next n

  Next j


End Sub


二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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