自己写了一个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