Excel 如何打开多个工作表,在每个工作表中添加列的总和并保存?

Excel 如何打开多个工作表,在每个工作表中添加列的总和并保存?,excel,vba,Excel,Vba,我正试图用excel为我的论文编写一个宏。我在一个文件夹中得到了多个.xlsx文件,每个文件都包含一个包含9列(a-I)和不同行数的表。我想自动打开每个文件,在每列底部添加列的总和,然后保存文件 我在stack overflow中找到了一个代码,用于选择一个包含.csv文件的文件夹,这些文件将自动打开并保存为同一文件夹中的.xlsx文件。我试图修改代码以达到我的目的。 我所做的唯一一件事就是修改代码,打开文件夹中的.xlsx文件。 从那时起,我不知道如何继续下去,因为我没有任何VBA的经验。 G

我正试图用excel为我的论文编写一个宏。我在一个文件夹中得到了多个.xlsx文件,每个文件都包含一个包含9列(a-I)和不同行数的表。我想自动打开每个文件,在每列底部添加列的总和,然后保存文件

我在stack overflow中找到了一个代码,用于选择一个包含.csv文件的文件夹,这些文件将自动打开并保存为同一文件夹中的.xlsx文件。我试图修改代码以达到我的目的。 我所做的唯一一件事就是修改代码,打开文件夹中的.xlsx文件。 从那时起,我不知道如何继续下去,因为我没有任何VBA的经验。 GetFolder()是一个已定义的函数,它允许我浏览文件夹并获取其路径

私有子命令按钮1_单击()

结束Sub

欢迎来到SO:

要对该列进行总结,可以使用以下内容

SumA = Application.WorksheetFunction.Sum(columns("A:A"))
并将其放在每一列的末尾,您将:

1查找列的最后一行

lastrow = ActiveSheet.Cells(sht.Rows.Count, "A").End(xlUp).Row
2将总和值存储到las单元格列中

Cells(lastrow,"A").value = SumA 
最后要做的事情是对所有列设置一个循环,并浏览所有文件:

编辑代码

Private Sub CommandButton1_Click()

Dim directory As String, fileName As String, sheet As Worksheet, i     As Integer, j As Integer
Application.ScreenUpdating = False
directory = "C:\Users\ba-sc\Desktop\Fiji output\"
fileName = Dir(directory & "*.xl??")
Do While fileName <> ""

Workbooks.Open (directory & fileName)

Set sht = Workbooks(fileName).Worksheets("Sheet1")

LastColumn = Workbooks(fileName).Worksheets("Sheet1").Cells(1,Workbooks(fileName).Worksheets("Sheet1").Columns.Count).End(xlToLeft).Column

For i = 1 To LastColumn

SumA = Application.WorksheetFunction.Sum(Workbooks(fileName).Worksheets("Sheet1").Columns(i))
MsgBox SumA
lastrow = ActiveSheet.Cells(Workbooks(fileName).Worksheets("Sheet1").Rows.Count, i).End(xlUp).Row

Workbooks(fileName).Worksheets("Sheet1").Cells(lastrow + 1, i).Value = SumA

Next

'now save and close this workbook

Workbooks(fileName).Close SaveChanges:=True

fileName = Dir()

Loop

End Sub
Private子命令按钮1\u单击()
Dim目录为字符串,文件名为字符串,工作表为工作表,i为整数,j为整数
Application.ScreenUpdating=False
directory=“C:\Users\ba sc\Desktop\Fiji output\”
fileName=Dir(目录&“*.xl??”)
文件名“”时执行此操作
工作簿.打开(目录和文件名)
Set sht=工作簿(文件名)。工作表(“表1”)
LastColumn=工作簿(文件名)。工作表(“Sheet1”)。单元格(1,工作簿(文件名)。工作表(“Sheet1”)。列数)。结束(xlToLeft)。列
对于i=1到最后一列
SumA=Application.WorksheetFunction.Sum(工作簿(文件名).Worksheets(“Sheet1”).Columns(i))
MsgBox SumA
lastrow=ActiveSheet.Cells(工作簿(文件名).工作表(“Sheet1”).Rows.Count,i).End(xlUp).Row
工作簿(文件名).Worksheets(“Sheet1”).Cells(lastrow+1,i).Value=SumA
下一个
'现在保存并关闭此工作簿
工作簿(文件名)。关闭保存更改:=True
fileName=Dir()
环
端接头
输出:


评论不用于扩展讨论;这段对话已经结束。
Cells(lastrow,"A").value = SumA 
Private Sub CommandButton1_Click()

Dim directory As String, fileName As String, sheet As Worksheet, i     As Integer, j As Integer
Application.ScreenUpdating = False
directory = "C:\Users\ba-sc\Desktop\Fiji output\"
fileName = Dir(directory & "*.xl??")
Do While fileName <> ""

Workbooks.Open (directory & fileName)

Set sht = Workbooks(fileName).Worksheets("Sheet1")

LastColumn = Workbooks(fileName).Worksheets("Sheet1").Cells(1,Workbooks(fileName).Worksheets("Sheet1").Columns.Count).End(xlToLeft).Column

For i = 1 To LastColumn

SumA = Application.WorksheetFunction.Sum(Workbooks(fileName).Worksheets("Sheet1").Columns(i))
MsgBox SumA
lastrow = ActiveSheet.Cells(Workbooks(fileName).Worksheets("Sheet1").Rows.Count, i).End(xlUp).Row

Workbooks(fileName).Worksheets("Sheet1").Cells(lastrow + 1, i).Value = SumA

Next

'now save and close this workbook

Workbooks(fileName).Close SaveChanges:=True

fileName = Dir()

Loop

End Sub