对列中的值求和,并将总和添加到工作簿的文件名中

对列中的值求和,并将总和添加到工作簿的文件名中

您好,我能够根据列中的唯一值创建新的工作表。除此之外,我还想对列中的值求和,并将此总和包含在每个相应工作表的文件名中。

我希望将 D 列中的值的总和以 Filename_Sum(D).xls 格式添加到此工作簿的文件名中

这就是我所做的,我需要做的就是计算 I2:I 列的总和,将总和转换为字符串并包含在文件名中(A 列中的值)

            'Copy/paste the visible data to the new workbook
            My_Range.SpecialCells(xlCellTypeVisible).Copy
            With WSNew.Range("A1")
                ' Paste:=8 will copy the columnwidth in Excel 2000 and higher
                ' Remove this line if you use Excel 97
                .PasteSpecial Paste:=8
                .PasteSpecial xlPasteValues
                .PasteSpecial xlPasteFormats
                Application.CutCopyMode = False
                .Select                  

            End With

            mySum = Application.WorksheetFunction.Sum(Columns("I2:I1024"))


            'Save the file in the new folder and close it
            On Error Resume Next
            WSNew.Parent.SaveAs foldername & _
                                cell.Value _
                                & CStr(mySum) & _
                                FileExtStr, FileFormatNum'

答案1

我假设您对 VBA 或宏一无所知,因此这里是完成您要查找的操作的最短步骤:

打开工作簿。在键盘上按 alt + F11。这将打开 VBA 开发人员屏幕。左侧有一棵树,右键单击顶部对象 (VBAProject(YourFileName)) 并选择插入 > 模块。在打开的模块中,在主屏幕中粘贴此代码:

Option Explicit
Sub SaveWithSum()
Dim SumOfD As Integer
SumOfD = Application.Sum(Range("Sheet1!D:D"))
ActiveWorkbook.SaveAs "C:\YourFolder\YourFilename" & SumOfD & ".xlsx", FileFormat:=51
End Sub

然后点击保存。它会提示您当前的文件格式 (.xlsx) 是否可以运行宏。选择否并将文件保存为 YourFile.xlsm。

您已完成!生成的文件将是 C:\YourFolder\YourFilename##.xlsx。

此脚本会将所有重命名的文件保存为 .xlsx 文件,这些文件无法再次运行宏(它实际上会从开发人员屏幕中消失)。如果您想将文件保存为 .xlsm 文件并让脚本继续在保存的文件中运行,请将“.xslx”更改为“.xlsm”,并将 FileFormat 更改为 52。

您可以在工作表上创建一个链接到宏的按钮(快速的谷歌搜索会有所帮助)或者只需通过选择视图>宏来运行该宏并从那里运行它。

确保 Sheet1! 已更改为与您的工作表匹配。祝您好运!

答案2

尽管该问题是几年前发布的,但我仍想为其他寻求解决方案的人提供一个答案:

Sub save_with_value()

Dim Fname As String
Dim cell As Range
Application.ScreenUpdating = False
Application.DisplayAlerts = False         'replaces existing file if already exists

Fpath = "O:\TEST\Values\"  'folder path - change accordingly to your folder
Fname = »Filename« 
Dim result As Double
result = WorksheetFunction.Sum(Range("D:D")) 
ActiveWorkbook.SaveAs Filename:= _
        Fpath & "\" & Fname & "_" & Format(result, "#,##0.00") & " EUR" & ".xlsx"

End sub

相关内容