【问题标题】:How can I open multiple worksheets, add the sum of the columns in each of them and save it?如何打开多个工作表,添加每个工作表的总和并保存?
【发布时间】:2019-09-05 08:56:50
【问题描述】:

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

我在堆栈溢出中找到了一个代码,用于选择一个包含 .csv 文件的文件夹,这些文件会自动打开并保存为同一文件夹中的 .xlsx 文件。我试图为我的目的修改代码。 我唯一实现的就是更改代码以打开我文件夹的 .xlsx 文件。 从那时起,我不知道如何继续,因为我对 VBA 没有任何经验。 GetFolder() 是一个定义函数,它允许我浏览文件夹并找出它的路径。

私有子命令按钮1_Click()

Dim myFolder As String
Dim getBook As String
Dim myCSVFile As String
Dim LastRow As Long


Application.DisplayAlerts = False
myFolder = GetFolder()
myXLSXFile = Dir(myFolder & "\*.xlsx")

Do While myXLSXFile <> ""
    Workbooks.Open Filename:=myFolder & "\" & myXLSXFile
    getBook = ActiveSheet.Name
    ActiveSheet.Name = "Sheet1"
我认为此时在列末尾添加总和的代码应该是但我不确定
    ActiveWorkbook.SaveAs Filename:=myFolder & Chr(92) & getBook, FileFormat:=51
    ActiveWorkbook.Close False
    myXLSXFile = Dir
Loop

结束子

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    欢迎来到 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
    

    输出:

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-24
    • 2019-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-05
    • 1970-01-01
    相关资源
    最近更新 更多