一个文件夹里有10个xlsx 表格,每个表格格式都一样,内容除了c列其余也都一样,每个表行数列数都一样,其中有9个表的c列均在不同的行填了数据,有一个表的c列是空的,现在新建一个模块用Vba写一段代码,将9个表中c列的值汇总到另一个表里
时间: 2023-05-24 13:07:10 浏览: 171
以下是一个可能的解法:
首先在新建的模块中创建一个Sub,命名为SummarizeData:
```VBA
Sub SummarizeData()
'定义变量
Dim wb As Workbook
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim i As Integer
Dim j As Integer
Dim lastRow1 As Long
Dim lastRow2 As Long
'打开第一个表格并指定要汇总的列
Set wb = Workbooks.Open("path to the first workbook")
Set ws1 = wb.Worksheets(1)
lastRow1 = ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Row '取得第一张表中A列最后一行的行数
j = 2 '从第2行开始插入数据到另一个表格里
'循环遍历其余9个表格,将每个表格中c列的值一一汇总到第一个表格之后的行中
For i = 2 To 10
Set ws2 = Workbooks.Open("path to the " & i & "th workbook").Worksheets(1)
lastRow2 = ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Row '取得第i张表中A列最后一行的行数
'将表格中的c列数据复制到第一个表格中
ws2.Range("C2:C" & lastRow2).Copy _
Destination:=ws1.Range("C" & j & ":C" & j + lastRow2 - 2)
j = j + lastRow2 - 1 '更新下一次插入数据的起始行数
'关闭已经用完的表格
ws2.Parent.Close False
Next i
'将汇总好的数据保存到新文件中
wb.SaveAs "path to the new workbook"
wb.Close
End Sub
```
使用这段代码就可以将9个表中c列的值汇总到一个新表里了。注意要将代码中的文件路径替换成实际文件的路径。
阅读全文