Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Создание листов с именами из диапазона ячеек - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Создание листов с именами из диапазона ячеек (Создать листы с заранее определенными именами)
Создание листов с именами из диапазона ячеек
Uliana Дата: Пятница, 22.03.2013, 00:12 | Сообщение № 1
Группа: Гости
Как создать листы в книге,имена которых брались бы из ячеек этой же книги?Список имен храниться в ячейках и может изменяться(увеличиваться/уменьшаться). Очень нужна помощь.
 
Ответить
СообщениеКак создать листы в книге,имена которых брались бы из ячеек этой же книги?Список имен храниться в ячейках и может изменяться(увеличиваться/уменьшаться). Очень нужна помощь.

Автор - Uliana
Дата добавления - 22.03.2013 в 00:12
Serge_007 Дата: Пятница, 22.03.2013, 00:17 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Только макросом


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеТолько макросом

Автор - Serge_007
Дата добавления - 22.03.2013 в 00:17
Uliana Дата: Пятница, 22.03.2013, 09:07 | Сообщение № 3
Группа: Гости
Что макросом, понятно. По его содержанию вопросы.В примерах по ссылке,к сожалению,нужного нет. Там цикл for получается будет двойным, один-по листам, другой-по ячейкам. Так?
 
Ответить
СообщениеЧто макросом, понятно. По его содержанию вопросы.В примерах по ссылке,к сожалению,нужного нет. Там цикл for получается будет двойным, один-по листам, другой-по ячейкам. Так?

Автор - Uliana
Дата добавления - 22.03.2013 в 09:07
Матраскин Дата: Пятница, 22.03.2013, 09:21 | Сообщение № 4
Группа: Друзья
Ранг: Обитатель
Сообщений: 375
Репутация: 81 ±
Замечаний: 0% ±

20xx
Uliana, одного цикла и одного условия достаточно. Бежим по ячейкам циклом for или while, и проверяем, если такой лист в книге. Если нет -> создаём, если есть -> следующая ячейка.


в интернете опять кто-то не прав

Сообщение отредактировал Матраскин - Пятница, 22.03.2013, 09:22
 
Ответить
СообщениеUliana, одного цикла и одного условия достаточно. Бежим по ячейкам циклом for или while, и проверяем, если такой лист в книге. Если нет -> создаём, если есть -> следующая ячейка.

Автор - Матраскин
Дата добавления - 22.03.2013 в 09:21
Uliana Дата: Пятница, 22.03.2013, 09:34 | Сообщение № 5
Группа: Гости
Если несложно,набросайте в коде,пожалуйста. В программировании не сильна,увы.
 
Ответить
СообщениеЕсли несложно,набросайте в коде,пожалуйста. В программировании не сильна,увы.

Автор - Uliana
Дата добавления - 22.03.2013 в 09:34
Матраскин Дата: Пятница, 22.03.2013, 10:20 | Сообщение № 6
Группа: Друзья
Ранг: Обитатель
Сообщений: 375
Репутация: 81 ±
Замечаний: 0% ±

20xx
Uliana,
единственная проблема, имена из одних цифр. Они что-то выпендриваются. У вас будут имена из них???
P.s. начал делать макрос и вспомнил о своём посте выше, как же... dry
К сообщению приложен файл: macro.xlsm (28.6 Kb)


в интернете опять кто-то не прав

Сообщение отредактировал Матраскин - Пятница, 22.03.2013, 10:26
 
Ответить
СообщениеUliana,
единственная проблема, имена из одних цифр. Они что-то выпендриваются. У вас будут имена из них???
P.s. начал делать макрос и вспомнил о своём посте выше, как же... dry

Автор - Матраскин
Дата добавления - 22.03.2013 в 10:20
Uliana Дата: Пятница, 22.03.2013, 10:30 | Сообщение № 7
Группа: Гости
Имена представляют собой ФИО студентов,цифры вряд ли появятся вообще. Вобщем,если конкретнее,смысл таков. Имеется список студентов,имеется кнопочка типа "создать листы",после нажатия на которую появятся листы, имена и количество которых будет соответствовать списку студентов. Пока список фиксирован, о динамике (удаление или добавление студента, а соответственно и листа) речи пока не идет.
 
Ответить
СообщениеИмена представляют собой ФИО студентов,цифры вряд ли появятся вообще. Вобщем,если конкретнее,смысл таков. Имеется список студентов,имеется кнопочка типа "создать листы",после нажатия на которую появятся листы, имена и количество которых будет соответствовать списку студентов. Пока список фиксирован, о динамике (удаление или добавление студента, а соответственно и листа) речи пока не идет.

Автор - Uliana
Дата добавления - 22.03.2013 в 10:30
Матраскин Дата: Пятница, 22.03.2013, 10:34 | Сообщение № 8
Группа: Друзья
Ранг: Обитатель
Сообщений: 375
Репутация: 81 ±
Замечаний: 0% ±

20xx
Uliana, ну значит забирайте happy


в интернете опять кто-то не прав
 
Ответить
СообщениеUliana, ну значит забирайте happy

Автор - Матраскин
Дата добавления - 22.03.2013 в 10:34
Uliana Дата: Пятница, 22.03.2013, 10:47 | Сообщение № 9
Группа: Гости
Ох,спасибо! Даже почти все понятно)Единственное,для чего нужен Module2?
 
Ответить
СообщениеОх,спасибо! Даже почти все понятно)Единственное,для чего нужен Module2?

Автор - Uliana
Дата добавления - 22.03.2013 в 10:47
Матраскин Дата: Пятница, 22.03.2013, 10:49 | Сообщение № 10
Группа: Друзья
Ранг: Обитатель
Сообщений: 375
Репутация: 81 ±
Замечаний: 0% ±

20xx
Uliana, его можно удалить! я вспоминал макродёром, как добавить лист с именем


в интернете опять кто-то не прав
 
Ответить
СообщениеUliana, его можно удалить! я вспоминал макродёром, как добавить лист с именем

Автор - Матраскин
Дата добавления - 22.03.2013 в 10:49
AlexM Дата: Пятница, 22.03.2013, 11:09 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4511
Репутация: 1128 ±
Замечаний: 0% ±

Excel 2003
А если код покороче
[vba]
Код
Sub Macros()
Application.ScreenUpdating = False
Dim i As Long
For i = 1 To Sheets("1").Columns(1).End(xlDown).Row
     On Error Resume Next
     Sheets(Range("A" & i)).Select
     If Err Then
         Sheets.Add After:=Sheets(Sheets.Count)
         ActiveSheet.Name = Sheets("1").Range("A" & i)
     End If
Next i
Worksheets("1").Activate
Application.ScreenUpdating = True
End Sub
[/vba]
К сообщению приложен файл: macro_new.xls (32.0 Kb)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеА если код покороче
[vba]
Код
Sub Macros()
Application.ScreenUpdating = False
Dim i As Long
For i = 1 To Sheets("1").Columns(1).End(xlDown).Row
     On Error Resume Next
     Sheets(Range("A" & i)).Select
     If Err Then
         Sheets.Add After:=Sheets(Sheets.Count)
         ActiveSheet.Name = Sheets("1").Range("A" & i)
     End If
Next i
Worksheets("1").Activate
Application.ScreenUpdating = True
End Sub
[/vba]

Автор - AlexM
Дата добавления - 22.03.2013 в 11:09
Матраскин Дата: Пятница, 22.03.2013, 11:20 | Сообщение № 12
Группа: Друзья
Ранг: Обитатель
Сообщений: 375
Репутация: 81 ±
Замечаний: 0% ±

20xx
AlexM, короче но не лучше, надо доделать.
1.если ничего не добавлять в столбец и жать на кнопку будут добавляться просто дефолтные листы в кол-ве записей в столбце...зачем они
2.если нет данных в столбце вообще, то макрос зацикливается
3. интересно, что если добавить в столбец имя из 1 буквы то тоже всё зацикливается


в интернете опять кто-то не прав
 
Ответить
СообщениеAlexM, короче но не лучше, надо доделать.
1.если ничего не добавлять в столбец и жать на кнопку будут добавляться просто дефолтные листы в кол-ве записей в столбце...зачем они
2.если нет данных в столбце вообще, то макрос зацикливается
3. интересно, что если добавить в столбец имя из 1 буквы то тоже всё зацикливается

Автор - Матраскин
Дата добавления - 22.03.2013 в 11:20
Alex_ST Дата: Пятница, 22.03.2013, 11:56 | Сообщение № 13
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация: 609 ±
Замечаний: 0% ±

2003
[offtop]Ребята, ну сколько можно нарушителям правил помогать?
Ведь Серж же вполне ясно в своём ответе намекнул, что пока не будет примера, будут только ответы общего плана.
Я тоже утром посмотрел и решил подождать реакции топик-стартера...
А вы вдруг взялись играть в "угадайку", не зная ни структуры таблиц, ни названий листов...
Ну, флаг вам в руки. Гадайте дальше.[/offtop]



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
Сообщение[offtop]Ребята, ну сколько можно нарушителям правил помогать?
Ведь Серж же вполне ясно в своём ответе намекнул, что пока не будет примера, будут только ответы общего плана.
Я тоже утром посмотрел и решил подождать реакции топик-стартера...
А вы вдруг взялись играть в "угадайку", не зная ни структуры таблиц, ни названий листов...
Ну, флаг вам в руки. Гадайте дальше.[/offtop]

Автор - Alex_ST
Дата добавления - 22.03.2013 в 11:56
AlexM Дата: Пятница, 22.03.2013, 13:05 | Сообщение № 14
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4511
Репутация: 1128 ±
Замечаний: 0% ±

Excel 2003
Цитата (Матраскин)
короче но не лучше, надо доделать

Спасибо за замечание. Код поправил. Вроде нет описанных глюков.
[vba]
Код
Sub Macros()
Application.ScreenUpdating = False
Dim i As Long
For i = 1 To Sheets("1").Range("A" & Rows.Count).End(xlUp).Row
      On Error Resume Next
      Sheets(Sheets("1").Range("A" & i).Value).Select
      If Err And Sheets("1").Range("A" & i) <> "" Then
          Sheets.Add After:=Sheets(Sheets.Count)
          ActiveSheet.Name = Sheets("1").Range("A" & i)
      End If
Next i
Worksheets("1").Activate
Application.ScreenUpdating = True
End Sub
[/vba]
К сообщению приложен файл: 1325074.xls (27.0 Kb)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.


Сообщение отредактировал AlexM - Пятница, 22.03.2013, 20:37
 
Ответить
Сообщение
Цитата (Матраскин)
короче но не лучше, надо доделать

Спасибо за замечание. Код поправил. Вроде нет описанных глюков.
[vba]
Код
Sub Macros()
Application.ScreenUpdating = False
Dim i As Long
For i = 1 To Sheets("1").Range("A" & Rows.Count).End(xlUp).Row
      On Error Resume Next
      Sheets(Sheets("1").Range("A" & i).Value).Select
      If Err And Sheets("1").Range("A" & i) <> "" Then
          Sheets.Add After:=Sheets(Sheets.Count)
          ActiveSheet.Name = Sheets("1").Range("A" & i)
      End If
Next i
Worksheets("1").Activate
Application.ScreenUpdating = True
End Sub
[/vba]

Автор - AlexM
Дата добавления - 22.03.2013 в 13:05
aphome Дата: Четверг, 20.06.2013, 16:14 | Сообщение № 15
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Форумчане, подскажите, пожалуйста, код макроса, который также создает листы с именами из списка, но по шаблону.
Есть лист "ФИО" и лист "Шаблон". Макрос должен создать листы с именами из диапазона (стобец А) на листе "ФИО", причем все созданные листы должны содержать данные из листа "Шаблон".
пример прикрепляю. сгенерироваться должны листы, обозначенные зелеными ярлыками.
К сообщению приложен файл: aphome.xlsx (12.7 Kb)


Сообщение отредактировал aphome - Четверг, 20.06.2013, 16:22
 
Ответить
СообщениеФорумчане, подскажите, пожалуйста, код макроса, который также создает листы с именами из списка, но по шаблону.
Есть лист "ФИО" и лист "Шаблон". Макрос должен создать листы с именами из диапазона (стобец А) на листе "ФИО", причем все созданные листы должны содержать данные из листа "Шаблон".
пример прикрепляю. сгенерироваться должны листы, обозначенные зелеными ярлыками.

Автор - aphome
Дата добавления - 20.06.2013 в 16:14
Формуляр Дата: Четверг, 20.06.2013, 17:01 | Сообщение № 16
Группа: Друзья
Ранг: Ветеран
Сообщений: 832
Репутация: 255 ±
Замечаний: 0% ±

Excel 2003, 2013
Вместо добавления листа используйте копирование

[vba]
Код
Sub Macros()
  Application.ScreenUpdating = False
Dim i As Long
For i = 1 To Sheets("ФИО").Range("A" & Rows.Count).End(xlUp).Row
      On Error Resume Next
      Sheets(Sheets("ФИО").Range("A" & i).Value).Select
      If Err And Sheets("ФИО").Range("A" & i) <> "" Then
          'Sheets.Add After:=Sheets(Sheets.Count)
          Sheets("Шаблон").Copy After:=Sheets(Sheets.Count)
          ActiveSheet.Name = Sheets("ФИО").Range("A" & i)
      End If
Next i
  Worksheets("ФИО").Activate
  Application.ScreenUpdating = True
End Sub
[/vba]


Excel 2003 EN, 2013 EN
 
Ответить
СообщениеВместо добавления листа используйте копирование

[vba]
Код
Sub Macros()
  Application.ScreenUpdating = False
Dim i As Long
For i = 1 To Sheets("ФИО").Range("A" & Rows.Count).End(xlUp).Row
      On Error Resume Next
      Sheets(Sheets("ФИО").Range("A" & i).Value).Select
      If Err And Sheets("ФИО").Range("A" & i) <> "" Then
          'Sheets.Add After:=Sheets(Sheets.Count)
          Sheets("Шаблон").Copy After:=Sheets(Sheets.Count)
          ActiveSheet.Name = Sheets("ФИО").Range("A" & i)
      End If
Next i
  Worksheets("ФИО").Activate
  Application.ScreenUpdating = True
End Sub
[/vba]

Автор - Формуляр
Дата добавления - 20.06.2013 в 17:01
aphome Дата: Четверг, 20.06.2013, 17:24 | Сообщение № 17
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Цитата (Формуляр)
Вместо добавления листа используйте копирование

Спасибо
 
Ответить
Сообщение
Цитата (Формуляр)
Вместо добавления листа используйте копирование

Спасибо

Автор - aphome
Дата добавления - 20.06.2013 в 17:24
malll Дата: Вторник, 04.04.2017, 10:20 | Сообщение № 18
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Цитата Формуляр, 20.06.2013 в 17:01, в сообщении № 16 ()
Sub Macros()
Application.ScreenUpdating = False
Dim i As Long
For i = 1 To Sheets("ФИО").Range("A" & Rows.Count).End(xlUp).Row
    On Error Resume Next
    Sheets(Sheets("ФИО").Range("A" & i).Value).Select
    If Err And Sheets("ФИО").Range("A" & i) <> "" Then
        'Sheets.Add After:=Sheets(Sheets.Count)
        Sheets("Шаблон").Copy After:=Sheets(Sheets.Count)
        ActiveSheet.Name = Sheets("ФИО").Range("A" & i)
    End If
Next i
Worksheets("ФИО").Activate
Application.ScreenUpdating = True
End Sub


А как теперь создать гиперссылки на эти листы. Какую команду прописать? Чтоб при нажатии на листе "ФИО" на определенную ячейку, автоматически переходило на одноименный лист.
 
Ответить
Сообщение
Цитата Формуляр, 20.06.2013 в 17:01, в сообщении № 16 ()
Sub Macros()
Application.ScreenUpdating = False
Dim i As Long
For i = 1 To Sheets("ФИО").Range("A" & Rows.Count).End(xlUp).Row
    On Error Resume Next
    Sheets(Sheets("ФИО").Range("A" & i).Value).Select
    If Err And Sheets("ФИО").Range("A" & i) <> "" Then
        'Sheets.Add After:=Sheets(Sheets.Count)
        Sheets("Шаблон").Copy After:=Sheets(Sheets.Count)
        ActiveSheet.Name = Sheets("ФИО").Range("A" & i)
    End If
Next i
Worksheets("ФИО").Activate
Application.ScreenUpdating = True
End Sub


А как теперь создать гиперссылки на эти листы. Какую команду прописать? Чтоб при нажатии на листе "ФИО" на определенную ячейку, автоматически переходило на одноименный лист.

Автор - malll
Дата добавления - 04.04.2017 в 10:20
_Boroda_ Дата: Вторник, 04.04.2017, 10:21 | Сообщение № 19
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Читайте здесь http://www.excelworld.ru/forum/2-20-1
Тема закрыта


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЧитайте здесь http://www.excelworld.ru/forum/2-20-1
Тема закрыта

Автор - _Boroda_
Дата добавления - 04.04.2017 в 10:21
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Создание листов с именами из диапазона ячеек (Создать листы с заранее определенными именами)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!