一个文件夹里多10个xlsx 表格,每个表格格式都一样,内容除了c列其余也都一样,其中一个表的c列是空的,其余9个分表c列均在不同的行填了数据,现在总表新建一个模块,用Vba写一段代码,将9个分表中c列的值汇总到总表里
时间: 2023-05-24 08:06:58 浏览: 89
Excel表格VBA-获取文件夹内所有文件路径.zip
以下是实现此操作的 VBA 代码:
Sub SummarizeCColumns()
Dim mainWorkbook As Workbook
Dim mainWorksheet As Worksheet
Dim mainLastRow As Long
Set mainWorkbook = ThisWorkbook '设置总表的工作簿
Set mainWorksheet = mainWorkbook.ActiveSheet '设置总表的工作表
mainLastRow = mainWorksheet.Cells(Rows.Count, "A").End(xlUp).Row '获取总表中A列的最后一行
'循环处理10个分表
For i = 1 To 10
If i <> 5 Then '跳过第五个表
Dim subWorkbook As Workbook
Dim subWorksheet As Worksheet
Dim subLastRow As Long
Set subWorkbook = Workbooks.Open("分表" & i & ".xlsx") '打开分表
Set subWorksheet = subWorkbook.ActiveSheet '设置分表的工作表
subLastRow = subWorksheet.Cells(Rows.Count, "A").End(xlUp).Row '获取分表中A列的最后一行
'循环处理分表中的数据
For j = 2 To subLastRow '从第二行开始,跳过标题行
mainLastRow = mainLastRow + 1 '在总表中新加一行
mainWorksheet.Range("A" & mainLastRow).Value = subWorksheet.Range("A" & j).Value '将总表中新加行的A列赋值为分表中的数据
mainWorksheet.Range("B" & mainLastRow).Value = subWorksheet.Range("B" & j).Value '将总表中新加行的B列赋值为分表中的数据
mainWorksheet.Range("C" & mainLastRow).Value = subWorksheet.Range("C" & j).Value '将总表中新加行的C列赋值为分表中的数据
Next j
subWorkbook.Close False '关闭分表,不保存
End If
Next i
End Sub
注意,在此代码中假设总表中已经有标题行,分表中也有标题行,并且第五个表的C列不需要汇总。如果需要根据具体情况稍作修改即可。
阅读全文