Пожалуйста помогите с такой проблемой. У меня есть файл с большим количеством вкладок, каждая вкладка это информация о конкретном сотруднике, его отработанном времени, а также информация на какой линии он работал. Мне нужно, чтобы на последней вкладке я могла увидеться сколько было отработано часов на каждой линии по дням. В моем случае это больше 150 вкладок, то есть сотрудников. Я пробовала использовать трехмерную ссылку с функцией СУММЕСЛИ, но потом вычитала, что так не получиться. В целом информация есть на эту тему и ее решение, но к сожалению я нуждаюсь в более упрошенном объяснении, поскольку я новичок в Екселе
Пожалуйста помогите с такой проблемой. У меня есть файл с большим количеством вкладок, каждая вкладка это информация о конкретном сотруднике, его отработанном времени, а также информация на какой линии он работал. Мне нужно, чтобы на последней вкладке я могла увидеться сколько было отработано часов на каждой линии по дням. В моем случае это больше 150 вкладок, то есть сотрудников. Я пробовала использовать трехмерную ссылку с функцией СУММЕСЛИ, но потом вычитала, что так не получиться. В целом информация есть на эту тему и ее решение, но к сожалению я нуждаюсь в более упрошенном объяснении, поскольку я новичок в Екселеalina23
gling, Здравствуйте. Это просто потрясающе. Огромное вам спасибо. Подскажите пожалуйста еще момент, как создать список из вкладок, если их больше 150 штук и они имеют название сотрудников, а также, если создаётся новая вкладка с новым сотрудником, нужно информацию постоянно обновлять? Я смотрела видео, что в Екселе даже кнопка есть, которая создает такой список, но я ее не нашла :help:
gling, Здравствуйте. Это просто потрясающе. Огромное вам спасибо. Подскажите пожалуйста еще момент, как создать список из вкладок, если их больше 150 штук и они имеют название сотрудников, а также, если создаётся новая вкладка с новым сотрудником, нужно информацию постоянно обновлять? Я смотрела видео, что в Екселе даже кнопка есть, которая создает такой список, но я ее не нашла :help:alina23
Сообщение отредактировал alina23 - Суббота, 22.02.2025, 18:32
Это формулы массива, они вводятся одновременным нажатием трех кнопок Shift+Ctrl+Enter. Поищите в интернете про формулы массива, ознакомьтесь. Есть возможность макрофункцией формировать список, но при этом нужно чтобы была разрешена работа макросов. А если разрешена работа макросов, тогда и макросом можно формировать и исключить из списка не нужные, из которых не будет собираться информация. А если уж и макросы будут в книге, тогда и собирать данные со всех листов тоже можно макросом. Но это другая тема, не формульная.
Это формулы массива, они вводятся одновременным нажатием трех кнопок Shift+Ctrl+Enter. Поищите в интернете про формулы массива, ознакомьтесь. Есть возможность макрофункцией формировать список, но при этом нужно чтобы была разрешена работа макросов. А если разрешена работа макросов, тогда и макросом можно формировать и исключить из списка не нужные, из которых не будет собираться информация. А если уж и макросы будут в книге, тогда и собирать данные со всех листов тоже можно макросом. Но это другая тема, не формульная.gling
ЯД-41001506838083
Сообщение отредактировал gling - Суббота, 22.02.2025, 19:40
gling, Спасибо, я нашла коды макросов, вот один из них Private Sub ListSheets() Dim index As Integer = 0
Dim NamedRange1 As Microsoft.Office.Tools.Excel.NamedRange = _ Globals.Sheet1.Controls.AddNamedRange( _ Globals.Sheet1.Range("A1"), "NamedRange1")
For Each displayWorksheet As Excel.Worksheet In Globals.ThisWorkbook.Worksheets NamedRange1.Offset(index, 0).Value2 = displayWorksheet.Name index += 1 Next displayWorksheet End Sub
Однако, когда я его вставляю, закрываю MVB, ничего не происходит. PS. Спасибо, что так быстро ответили
gling, Спасибо, я нашла коды макросов, вот один из них Private Sub ListSheets() Dim index As Integer = 0
Dim NamedRange1 As Microsoft.Office.Tools.Excel.NamedRange = _ Globals.Sheet1.Controls.AddNamedRange( _ Globals.Sheet1.Range("A1"), "NamedRange1")
For Each displayWorksheet As Excel.Worksheet In Globals.ThisWorkbook.Worksheets NamedRange1.Offset(index, 0).Value2 = displayWorksheet.Name index += 1 Next displayWorksheet End Sub
Однако, когда я его вставляю, закрываю MVB, ничего не происходит. PS. Спасибо, что так быстро ответилиalina23
alina23, этот код не для Экселя, не VBA. Вот как может выглядеть на VBA: [vba]
Код
Sub SpisokListov() Dim sh, i& Application.ScreenUpdating = False For Each sh In Worksheets i = i + 1 Cells(i, 1) = sh.Name Next Application.ScreenUpdating = True End Sub
[/vba] Создать новый лист, его активировать и выполнить этот макрос из стандартного модуля, или модуля этого листа. Но с этими именами листов ещё есть вопрос - может получиться что не сможете названиями сотрудников назвать листы, и это придётся учитывать в реализации формулами.... Я вообще посоветую изменить всю эту конструкцию, сделать наоборот - все данные писать в одну общую базу, а если нужно показать/вывести данные например как в файле по сотруднику 2 - это делается легко простым макросом, или формулами. И сразу избавитесь от многих проблем, и кроме того получите бонусом возможность легко проводить аналитику, можно визуально анализировать всю активность или что там может заинтересовать управленцев. Или как другой вариант - один раз в день (или по запросу, или когда занесены новые данные) макросом из этих листов обновлять данные в общей базе. А уже сводный лист строить любым способом по это базе.
alina23, этот код не для Экселя, не VBA. Вот как может выглядеть на VBA: [vba]
Код
Sub SpisokListov() Dim sh, i& Application.ScreenUpdating = False For Each sh In Worksheets i = i + 1 Cells(i, 1) = sh.Name Next Application.ScreenUpdating = True End Sub
[/vba] Создать новый лист, его активировать и выполнить этот макрос из стандартного модуля, или модуля этого листа. Но с этими именами листов ещё есть вопрос - может получиться что не сможете названиями сотрудников назвать листы, и это придётся учитывать в реализации формулами.... Я вообще посоветую изменить всю эту конструкцию, сделать наоборот - все данные писать в одну общую базу, а если нужно показать/вывести данные например как в файле по сотруднику 2 - это делается легко простым макросом, или формулами. И сразу избавитесь от многих проблем, и кроме того получите бонусом возможность легко проводить аналитику, можно визуально анализировать всю активность или что там может заинтересовать управленцев. Или как другой вариант - один раз в день (или по запросу, или когда занесены новые данные) макросом из этих листов обновлять данные в общей базе. А уже сводный лист строить любым способом по это базе.Hugo
Если захотите продолжить обсуждать по созданию листов, создайте новую тему. В файле при активации листа "по линиям" формируется список листов в столбце А, в список не включаются листы "бланк" и "по линиям". Возможно в рабочем файле эти названия другие, тогда подправите в файле.
Если захотите продолжить обсуждать по созданию листов, создайте новую тему. В файле при активации листа "по линиям" формируется список листов в столбце А, в список не включаются листы "бланк" и "по линиям". Возможно в рабочем файле эти названия другие, тогда подправите в файле.gling
gling, Большое спасибо за ответ. К сожалению мне выдает ошибку, я зашла в параметры, как в рекомендациях, однако это ничего не поменяло и предупреждение все ровно высвечивается. Когда я попробовала сама создать тот макрос из кода, который Вы написали выше, то ничего не происходит, когда я возвращаюсь на рабочий лист. Но возможно я просто что-то не то делаю. Я заметила, что люди так часто спрашивают о создании списка имен листов, что почему действительно не создать для этого кнопку, все как-то сложно для обычных пользователей, как я. Мне не совсем понятно данное предложение "Создать новый лист, его активировать". как мы активирует новый лист?
gling, Большое спасибо за ответ. К сожалению мне выдает ошибку, я зашла в параметры, как в рекомендациях, однако это ничего не поменяло и предупреждение все ровно высвечивается. Когда я попробовала сама создать тот макрос из кода, который Вы написали выше, то ничего не происходит, когда я возвращаюсь на рабочий лист. Но возможно я просто что-то не то делаю. Я заметила, что люди так часто спрашивают о создании списка имен листов, что почему действительно не создать для этого кнопку, все как-то сложно для обычных пользователей, как я. Мне не совсем понятно данное предложение "Создать новый лист, его активировать". как мы активирует новый лист?alina23
После открытия дополнительных сведений, там нет вопроса про разрешение макроса, Если есть, то разрешите. В параметрах макросов включите все макросы. ПКМ по ярлычку листа -- Просмотреть код, и скопируй что там написано в свой файл На лист "по линиям". Или скопируйте из этого сообщения и вставьте в модуль листа "по линиям"[vba]
После открытия дополнительных сведений, там нет вопроса про разрешение макроса, Если есть, то разрешите. В параметрах макросов включите все макросы. ПКМ по ярлычку листа -- Просмотреть код, и скопируй что там написано в свой файл На лист "по линиям". Или скопируйте из этого сообщения и вставьте в модуль листа "по линиям"[vba]
не не совсем понятно данное предложение "Создать новый лист, его активировать". как мы активирует новый лист?
Ну просто не уходить с этого нового созданного листа. В принципе можно и не создавать новый лист, можно просто перейти на любой лист, где не жалко затереть этим генерируемым списком начало первого столбца. А это красную надпись при открытии скачанных из сети файлов можно убрать в свойствах ФАЙЛА - там внизу справа всё увидите.
не не совсем понятно данное предложение "Создать новый лист, его активировать". как мы активирует новый лист?
Ну просто не уходить с этого нового созданного листа. В принципе можно и не создавать новый лист, можно просто перейти на любой лист, где не жалко затереть этим генерируемым списком начало первого столбца. А это красную надпись при открытии скачанных из сети файлов можно убрать в свойствах ФАЙЛА - там внизу справа всё увидите.
Спасибо большое за помощь!! на работе все внедрила и все получилось! Но теперь все думают, что я гений Ексель на фоне тех сотрудников, которые там работают в офисе. Так что я думаю, что я не раз сюда вернусь за помощью :kiss:
Спасибо большое за помощь!! на работе все внедрила и все получилось! Но теперь все думают, что я гений Ексель на фоне тех сотрудников, которые там работают в офисе. Так что я думаю, что я не раз сюда вернусь за помощью :kiss:alina23