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