Здравствуйте, мне удалось создать новые рабочие листы на основе уникальных значений в столбце. В дополнение к этому, я хочу суммировать значения в столбце и включить эту сумму в имя файла каждого соответствующего рабочего листа.
Я хочу, чтобы сумма значений в столбце 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.
Вы можете создать кнопку на рабочем листе, которая будет ссылаться на макрос (быстрый поиск в 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