2011-04-06 73 views
0

我试图找出一个宏,一旦我的条件满足,将一行数据复制到新的工作表。我发现了另一个问题的答案,但它对我来说太不同了:Other AnswerExcel - 宏来比较多个行,然后复制到不同的工作表

我所拥有的是30000+行和BB列的数据。我想比较行与列之间的一列中的数据,并且当我找到要将序列中最后一行复制到另一个工作表的序列时。样本数据:

号码 - 其他数据 - 其他数据...
1 - XXX - XXX
0 - XXX - XXX
1 - XXX - XXX
1 - XXX - XXX
0 - XXX - XXX
1 - XXX - XXX
1 - XXX - XXX
1 - YYY - YYY
0 - XXX - XXX

在这种情况下,我想找到三个1的序列并将包含yyy数据的行复制到新的工作表中。感谢您的帮助。

回答

0

试试这个:

Sub thirdmatch() 

Dim arrKey() As Variant 
Dim arrOut() As Variant 
Dim rowCnt As Integer 
Dim rr As Integer 
Dim rOut As Integer 
Dim i As Integer 

Dim s1 As Worksheet 
Dim s2 As Worksheet 
Dim r1 As Range 
Dim r2 As Range 

Set s1 = Sheets("Sheet1") 
Set s2 = Sheets("Sheet2") 
Set r1 = s1.Range("A2", s1.Range("A4")) 
Set r2 = s2.Range("A2") 

rowCnt = s1.Range("A1", s1.Range("A1").End(xlDown)).Count 
rr = 0 
rOut = 0 

Do While rr < rowCnt 
    arrKey = r1.Offset(rr, 0) 
    If arrKey(1, 1) = arrKey(2, 1) And arrKey(2, 1) = arrKey(3, 1) And arrKey(1, 1) = 1 Then 
     arrOut = s1.Range("A" & rr + 4, s1.Range("BB" & rr + 4)) 
     For i = 1 To 54 
      r2.Offset(rOut, i - 1) = arrOut(1, i) 
     Next i 
     rOut = rOut + 1 
    End If 
    rr = rr + 1 
Loop 

End Sub 
相关问题