excel中宏的应用

Filed under: Featured, vba | 5 Comments »
Posted on

最近有个工作需要把老师的课时量按要求统计一下,内容很简单,但都是重复工作,要求G列后增加一列并将周课时*周数的结果填入这一列,总共有两张表,每张表有40多个Sheet。

我这个人比较懒,不愿手动处理,写了一个宏程序

代码如下

 Sub macro1()
 
'循环所有的sheet表
Dim a, b As Integer
b = Worksheets.Count
For a = 2 To b
'去掉写保护(这里所有的sheet都做了写保护)
Worksheets(a).Unprotect
 
'选中某一个sheet
Worksheets(a).Select
 
'先选中已经合并了的单元格
Range("A1:N1").Select
With Selection
'将合并的单元格拆分,否则无法插入新列
Selection.UnMerge
Range("A10:J10").Select
Selection.UnMerge
Range("A16:J16").Select
Selection.UnMerge
Range("A22:J22").Select
Selection.UnMerge
Range("A28:J28").Select
Selection.UnMerge
Range("c29:h29").Select
Selection.UnMerge
Range("i29:m29").Select
Selection.UnMerge
 
'在h列后插入新列
Columns("H:H").Select
Selection.Insert Shift:=xlToRight
End With
 
'将新增的h列加入公式
'具体的逻辑是只要f列和g列不为空,将h列的公式设置为f列*g列
Dim i, j As Integer
i = 5
While i <= 40
Range("f1", "g40").Select
With Selection
If Cells(i, 6) < > 0 And Cells(i, 7) < > 0 Then
    Cells(i, 8).FormulaR1C1 = "=RC[-2]*RC[-1]"
End If
 
i = i + 1
End With
Wend
 
Next
 
End Sub

图一:应用前(点击放大)
图二:应用后

Tags : , ,