На листе "Площадки" в колонке № в колонке Площадки руками создается список площадок от 1 до неограниченного числа. В книге уже есть макрос, который добавляет в книгу листы для каждой площадки из списка с таблицей из листа "Образец". На листе ВСЕГО требуется автоматически создавать в ячейках формулы (заготовки в колонке I), складывающие значения соответствующих ячеек на каждом листе, создаваемом макросом.
На листе "Площадки" в колонке № в колонке Площадки руками создается список площадок от 1 до неограниченного числа. В книге уже есть макрос, который добавляет в книгу листы для каждой площадки из списка с таблицей из листа "Образец". На листе ВСЕГО требуется автоматически создавать в ячейках формулы (заготовки в колонке I), складывающие значения соответствующих ячеек на каждом листе, создаваемом макросом.Ignessio
Вариант в файле с ДВССЫЛ() и формулой в диспетчере имен. Если на листе Площадки в столбце В будет список названий листов с которых надо собрать данные, они ссумируются. Имя листа и название в ячейке должно соответствовать 100%, ошибки текстов не допустимы. Формула массивная.
Не знаю как макрос добавляет листы, его нет в файле, но если новый лист вставлять 3 с конца, перед листом "Образец", то не нужна эта формула массива и всё остальное. Суммировать можно простой формулой
Код
=СУММ('Площадка 1:Образец'!C3)
В файле выделил цветом, вне таблицы. При вставке листов между Площадка 1 и Образец, значения этих листов будут попадать в общую сумму.
Вариант в файле с ДВССЫЛ() и формулой в диспетчере имен. Если на листе Площадки в столбце В будет список названий листов с которых надо собрать данные, они ссумируются. Имя листа и название в ячейке должно соответствовать 100%, ошибки текстов не допустимы. Формула массивная.
Не знаю как макрос добавляет листы, его нет в файле, но если новый лист вставлять 3 с конца, перед листом "Образец", то не нужна эта формула массива и всё остальное. Суммировать можно простой формулой
Код
=СУММ('Площадка 1:Образец'!C3)
В файле выделил цветом, вне таблицы. При вставке листов между Площадка 1 и Образец, значения этих листов будут попадать в общую сумму.gling
gling, спасибо за быстрый ответ! Только изначально листов нет и формулы из-за битых ссылок на несуществующие листы ломаются. Перезалил файл с макросом.
gling, спасибо за быстрый ответ! Только изначально листов нет и формулы из-за битых ссылок на несуществующие листы ломаются. Перезалил файл с макросом.Ignessio
a fool with a tool is still a fool.
Сообщение отредактировал Ignessio - Понедельник, 03.02.2025, 08:07
_Boroda_, спасибо! Не уверен, что правильно вставил строку. Сейчас создаются формулы во всем заданном диапазоне, а нужно только в определенных ячейках. Наверное, я недостаточно развернуто пояснил задачу. 1. Макрос создает листы с именами, задаваемыми в листе Площадки колонка В 2. На каждом листе Площадка 1, Площадка 2 и т.д. в блоках колонок Количество и Выбор задается цифровое значение и отмечается тикбокс. 3. На листе ВСЕГО суммируются значения со всех листов Площадка 1, Площадка 2 и т.д. 4. В строках 7.1, 7.2, 7,3 суммируются отмеченные тикбоксы с листов Площадка 1, Площадка 2 и т.д. 5. В ячейку ДОПОЛНИТЕЛЬНЫЕ ТРЕБОВАНИЯ складывается текст из соответствующих ячеек листов Площадка 1, Площадка 2 и т.д. Чтобы стало понятней, закрасил в файле серым фиксированные данные, заполняются только ячейки без заливки. Лист Основное не участвует. Обновленный файл приложил.
UPD: С диапазоном разобрался. Также хочется, чтобы если сумма = 0, то ячейка оставалась пустой, как сделано у меня в заготовках.
_Boroda_, спасибо! Не уверен, что правильно вставил строку. Сейчас создаются формулы во всем заданном диапазоне, а нужно только в определенных ячейках. Наверное, я недостаточно развернуто пояснил задачу. 1. Макрос создает листы с именами, задаваемыми в листе Площадки колонка В 2. На каждом листе Площадка 1, Площадка 2 и т.д. в блоках колонок Количество и Выбор задается цифровое значение и отмечается тикбокс. 3. На листе ВСЕГО суммируются значения со всех листов Площадка 1, Площадка 2 и т.д. 4. В строках 7.1, 7.2, 7,3 суммируются отмеченные тикбоксы с листов Площадка 1, Площадка 2 и т.д. 5. В ячейку ДОПОЛНИТЕЛЬНЫЕ ТРЕБОВАНИЯ складывается текст из соответствующих ячеек листов Площадка 1, Площадка 2 и т.д. Чтобы стало понятней, закрасил в файле серым фиксированные данные, заполняются только ячейки без заливки. Лист Основное не участвует. Обновленный файл приложил.
UPD: С диапазоном разобрался. Также хочется, чтобы если сумма = 0, то ячейка оставалась пустой, как сделано у меня в заготовках.Ignessio
К сожалению, я с работы не могу скачать файл с макросами, поэтому попытаюсь ответить так, не видя файла. Диапазоны Вы можете указать в куске Range("C3:H6"). Серые ячейки (я скачал файл от gling из сообщения #2) тоже можно заполнять формулами, там же все равно будет 0. А скрывать нули можно форматом ячеек, вот таким, например: 0;; или 0,00;-0,00;
К сожалению, я с работы не могу скачать файл с макросами, поэтому попытаюсь ответить так, не видя файла. Диапазоны Вы можете указать в куске Range("C3:H6"). Серые ячейки (я скачал файл от gling из сообщения #2) тоже можно заполнять формулами, там же все равно будет 0. А скрывать нули можно форматом ячеек, вот таким, например: 0;; или 0,00;-0,00;_Boroda_
Sub Sites() Dim I As Integer, x As Object, ZapStr As Integer
ThisWorkbook.Sheets("Площадки").Activate ZapStr = 1 ' определяем заполненные строки в листе Площадки Do ZapStr = ZapStr + 1 Loop While ActiveSheet.Cells(ZapStr, 2) <> "" ZapStr = ZapStr - 1
If ZapStr = 1 Then Exit Sub
For I = 2 To ZapStr ' проверка наличия листов по всем проектам On Error Resume Next Set x = ThisWorkbook.Sheets(Cells(I, 2).Value) If Err.Number <> 0 Then ThisWorkbook.Worksheets.Add.Name = Cells(I, 2).Value ActiveSheet.Move After:=Sheets(I + 1) Sheets("Образец").Cells.Copy ThisWorkbook.Sheets(I + 1).Range("A1") ThisWorkbook.Sheets(I + 1).Protect Password:="123" ThisWorkbook.Sheets("Площадки").Hyperlinks.Add Anchor:=ThisWorkbook.Sheets("Площадки").Cells(I, 2), Address:="", SubAddress:= _ "'" & ThisWorkbook.Sheets("Площадки").Cells(I, 3).Value & "'!A1", TextToDisplay:=ThisWorkbook.Sheets("Площадки").Cells(I, 2).Value End If ThisWorkbook.Sheets("Площадки").Activate Next I ThisWorkbook.Sheets("Площадки").Activate
Sub Sites() Dim I As Integer, x As Object, ZapStr As Integer
ThisWorkbook.Sheets("Площадки").Activate ZapStr = 1 ' определяем заполненные строки в листе Площадки Do ZapStr = ZapStr + 1 Loop While ActiveSheet.Cells(ZapStr, 2) <> "" ZapStr = ZapStr - 1
If ZapStr = 1 Then Exit Sub
For I = 2 To ZapStr ' проверка наличия листов по всем проектам On Error Resume Next Set x = ThisWorkbook.Sheets(Cells(I, 2).Value) If Err.Number <> 0 Then ThisWorkbook.Worksheets.Add.Name = Cells(I, 2).Value ActiveSheet.Move After:=Sheets(I + 1) Sheets("Образец").Cells.Copy ThisWorkbook.Sheets(I + 1).Range("A1") ThisWorkbook.Sheets(I + 1).Protect Password:="123" ThisWorkbook.Sheets("Площадки").Hyperlinks.Add Anchor:=ThisWorkbook.Sheets("Площадки").Cells(I, 2), Address:="", SubAddress:= _ "'" & ThisWorkbook.Sheets("Площадки").Cells(I, 3).Value & "'!A1", TextToDisplay:=ThisWorkbook.Sheets("Площадки").Cells(I, 2).Value End If ThisWorkbook.Sheets("Площадки").Activate Next I ThisWorkbook.Sheets("Площадки").Activate