打开不同的EXCEL文件并汇总
Option Explicit
Sub 季度汇总()
Dim i, j, k, fileName, wkPath
Dim w As Worksheet, r As Worksheet, wb As Workbook
'首先,让 r 代表当前工作簿(“季报.xlsm”)的汇总表
Set r = ActiveWorkbook.Worksheets("季度汇总")
'ActiveWorkbook.Path属性可以返回本工作簿所在的文件夹,
'因此当其他待处理工作簿跟本工作簿在同一文件夹下时,可以用Path找到它们。
wkPath = ActiveWorkbook.Path
'循环生成每个月的文件名,并打开相应工作簿
For i = 4 To 6
fileName = i & "月.xlsx" '标记文件名,这个例子中的名字都比较规律
Set wb = Workbooks.Open(wkPath & "\" & fileName)
'让 w 指向该月文件的第一张工作表(即月报表)
Set w = wb.Worksheets(1)
'循环扫描该工作表的第3-10行,依次加到汇总表的同一行
For k = 3 To 10
For j = 3 To 6
'以下四行代码可以用循环的方式改写,更加方便
r.Cells(k, j) = r.Cells(k, j) + w.Cells(k, j)
Next j
Next k
'关闭该月的工作簿文件,保持桌面清洁
wb.Close
Next i
'新建一个工作簿文件,并让 wb 指向该工作簿
Set wb = Workbooks.Add
'将季报汇总的工作表复制到新的工作簿中第一张工作表之前(这句话还不是很熟)
r.Copy before:=wb.Worksheets(1)
'将新工作簿即 wb 命名保持,然后关闭。
'在大多数版本的Excel中,不指定文件夹时,文件默认保存到当前目录下。
wb.SaveAs wkPath & "\季度报表.xlsx" '保存也要加完整路径名
wb.Close
End Sub
Range 对象
range代表单元格的对象,cells只是交代经纬度坐标
Option Explicit
Sub 操作单元格中的range()
Dim r1 As Range
Dim r2 As Range
Dim r4 As Range
Set r1 = Range("A3") '用字符串来表示,和cell不同
Set r2 = Range("A3:B7")
Set r4 = Range(Cells(8, 3), Cells(6, 6)) '单独写不需要双引号
r1.Value = 5 '给r1中所有赋值
r2 = 5 'value可以省略
r2.ClearContents '清除内容,保留格式
r2.ClearFormats '清除格式 保留内容,直接写r3.clear 可以全部清除
r2.Font.Bold = True '加粗
r2.Interior.Color = RGB(200, 200, 20) '单元格的属性用interior
r2.Merge '用来合并
With r4.Font
.Color = RGB(255, 0, 0) '用RGB函数
.Size = 15
End With '合并开头
End Sub
application
application 代表excel本身,终极大BOSS
可以通过application调用系统公式
Option Explicit
Sub 极大值()
Dim r As Range, m As Integer
Application.DisplayAlerts = False '关掉提示框
Set r = Range("C3:F10") 'set不要忘记
m = Application.WorksheetFunction.Max(r) '调用系统公式
Cells(12, 7) = m
Application.DisplayAlerts = True '设置回来,以免出问题
'application.quit 关闭excel文件
End Sub
总结
来源:CSDN
作者:高开低走。
链接:https://blog.csdn.net/qq_43568982/article/details/103771164