您好,我已經能夠根據列中的唯一值建立新的工作表。除此之外,我想對列中的值求和,並將該總和包含在每個對應工作表的檔案名稱中。
我希望將 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」並將檔案格式變更為 52。
您可以在工作表上建立一個連結到巨集的按鈕(快速Google搜尋將對此有所幫助),或者透過選擇「視圖」>「巨集」並從那裡運行它來運行巨集。
確保工作表1!已更改以符合您的工作表。祝你好運!
答案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