excel宏代码解释,看不懂,不能灵活运用

来源:百度知道 编辑:UC知道 时间:2024/05/17 20:54:04
Sub 矩形1_单击()

With Sheets(1)
.Range("b1:g1").Copy Cells(1, 1)
.Range("b2:g2").Copy Cells(2, 1)
n = 2
For i = 3 To .Range("a65536").End(xlUp).Row
ri = 0
For u = 2 To n
If .Cells(i, 2) & .Cells(i, 3) & .Cells(i, 4) = Cells(u, 1) & Cells(u, 2) & Cells(u, 3) Then

Cells(u, 4) = Val(Cells(u, 4)) + .Cells(i, 5)
Cells(u, 5) = Val(Cells(u, 5)) + .Cells(i, 6)
Cells(u, 6) = Val(Cells(u, 6)) + .Cells(i, 7)
ri = 1

Exit For
End If
Next
If ri = 0 Then .Range("b" & i & ":g" & i).Copy Cells(n + 1, 1): n = n + 1

Next
End With
End Sub

第一行,知识点在With 语句,可以对某个对象执行一系列的语句,而不用重复指出对象的名称。这里的对象就是当前工作簿的第一个工作表。

第二行,将B1:G1单元格范围复制到A1:F1
第三行,将B2:G2单元格范围复制到A2:F2

第三行,给变量n赋值2

第四行,开始一个循环,i从3循环到a列的最后一个有数据的行数。

第五行,给变量ri赋值0

第六行,嵌套循环,u从2循环到n,当前n等于2

第七行,如果第i行的2、3、4列的数据串联到一起等于第U行的1、2、3列的数据串联起来,就执行下面的语句:
第八行:将第4列第u行的数据加上第5列第i行的数据赋值给的4列的u行。
第九行:将第5列第u行的数据加上第6列第i行的数据赋值给的5列的u行。
第十行:将第6列第u行的数据加上第7列第i行的数据赋值给的6列的u行。
第十一行,给ri赋值1.
第十二行,退出u循环。
第十三行,结束if语句。
第十四行,进行下一个u循环。
第十五行,如果ri=0 则bi:gi单元格的数据粘贴到a1:g(n+1),然后将n加上1.
第十六行,进行下一个i循环

With Sheets(1)
.Range("b1:g1").Copy Cells(1, 1) '将B1:G1的值复制,粘到A1单元格
.Range("b2:g2").Copy Cells(2, 1) '将B2:G2的值复制,粘到A2单元格

n = 2
For i = 3 To .Range("a65536").End(xlUp).Row '给I进行循环赋值,从3到A列最后一行的行数.比如A列如果有100行,就是从3到100
ri = 0
For u = 2 To n
If .Cells(i, 2) & .Cells(i, 3) & .Cells(i, 4) = Cells(u, 1) & Cells(u, 2) & Cells