Страницы: 1
RSS
создание листов по образцу с заполнением из таблицы
 
Подскажите пожалуйста как мне нужно создать еще 90 листов и чтобы в них проставлялись формулы в автомате. На первых трех листах я формулы проставляла вручную данные брала из сводной(1 лист).
 
Тема: создание листов по образцу с заполнением из таблицы
Создайте лист Образец.
При активном листе "сводная" запустите макрос
Код
Sub CreateList()
Dim i As Long
Dim iLastRow As Long
Dim List1 As Worksheet
  Set List1 = ThisWorkbook.Worksheets("сводная")
 iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
  For i = 2 To iLastRow
    Worksheets("Образец").Copy After:=Worksheets(Worksheets.Count)
    ActiveSheet.Name = List1.Cells(i, "A")
    With List1
      .Range("A" & i).Copy Range("A2")       'ФИО
      .Range("B" & i).Copy Range("E2")       'л/с
      .Range("D" & i).Copy Range("C4")       'калории
      .Range("E" & i).Copy Range("D4")       'тариф
      .Range("F" & i).Copy Range("E4")       'сумма
      Range("E4").NumberFormat = "#,##0"
    End With
  Next
End Sub
 
День добрый, попытался модифицировать макрос под свою задачу.
Столкнулся с следующими проблемами:

1. Имена листов получаются с одинаковыми именами (360, 360, 360 на листе "Data_test").
Пробовал по подобию вместо строчки
ActiveSheet.Name = List1.Cells(i, "A")
сделать
ActiveSheet.Name = List1.Cells(i, "A" & i)
так не работает.
Возможно ли сделать добавление переменной "i" к названию листа?

2. Макрос ругается на merged cells (я так понимаю ячейки G9, L30, BF99)
Можно ли это исправить и вставлять данные в merged cells?

3. Как указать формат ячейки при подставновке в моем случае?
L9 = Дата DD.MM.YYYY
L30 = Number X.X (1 знак после запятой)
BF99 = Text (возможно будет полный госномер вместо просто числа сейчас)

Буду благодарен за помощь.

Пояснения по файлу, листы:
Template - изначальный шаблон
Data_test - данные для тестового прогона
Data_full - данные для финального прогона (521 позиция, такое будет количество листов)

Версия Excel - Excel for Mac 16.27 Eng
В принципе могу windows версию запускать
 
Evgeny,
прерву вас сразу - создавать 500 листов так себе затея) для чего это Вам  не расскажете? Меня лично пугают книги с 10 и более листами)
но если желаете то:
1. добавлен порядковый номер в повторяющиеся значения будет добавлен номер
2. исправил (вроде)
3. L9 - задайте в шаблоне не текстовый формат, а дата (и везде где эта жата  есть ил иная), L30 - задайте формат ячейки числовой, с одним знаком после запятой, ну и для BF - текстовый формат.
Код
Sub CreateList_my()
Dim i As Long
Dim iLastRow As Long
Dim List1 As Worksheet
Dim k As Long
Application.ScreenUpdating = False
  Set List1 = ThisWorkbook.ActiveSheet
 iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
  For i = 2 To iLastRow
    With List1
    k = Application.WorksheetFunction.CountIf(.Range(.Cells(2, 1), .Cells(i, 2)), .Cells(i, 1)) - 1
    Worksheets("Template").Copy After:=Worksheets(Worksheets.Count)
    ActiveSheet.Name = List1.Cells(i, "A") & "_" & k
      Range("BF99") = Format(.Range("A" & i), "DD.MM.YYYY")   'LicensePlate
      Range("G9") = .Range("B" & i)    'Date
      Range("L30") = .Range("C" & i)     'Weight
    End With
  Next
Application.ScreenUpdating = True
End Sub

Изменено: Mershik - 19.06.2021 22:44:05
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Mershik написал:
Evgeny,
прерву вас сразу - создавать 500 листов так себе затея)  для чего это Вам  не расскажете?
Mershik, спасибо!

Расскажу, конечно)
Задача - формировать в автоматическом режиме транспортные накладные, вставляя туда дату, госномер и вес перевозимого груза. Ничего оптимальнее, чем создание листов и потом печати всей книги с листами, я не придумал. Если делать для каждой накладной отдельные файлы (а я не уверен что Excel так может) - то придется каждый из файлов открывать, а потом жать печать, что отнимет время. Если другой вариант видите, подскажите, интересно.

Юмор оценил спасибо) у меня этот макрос примерно 3 минуты 520 листов создавал)
Изменено: Evgeny - 20.06.2021 10:16:29
 
Evgeny,
Цитата
Evgeny написал:
Ничего оптимальнее, чем создание листов и потом печати всей книги с листами, я не придумал.
а не проще просто сразу отправлять на печать? Ваша цель же печать или вы их сохраняете (накладные)?
Не бойтесь совершенства. Вам его не достичь.
 
Макросом заполняйте один (ОДИН!) бланк, отправляйте его на печать. Затем макрос перепишет бланк и снова на печать. И т.д.
А 500 листов - это круто! ))
И не увлекайтесь цитированием. Приведите в порядок свой #5: там у Вас не цитата, а полная копия сообщения.
Изменено: Юрий М - 20.06.2021 09:50:42
Страницы: 1
Наверх