Всех с наступившим Новым Годом! Нужна ваша помощь. На листе "Вопросы" каждый раз разное количество вопросов. Как вывести каждый вопрос на отдельный лист в этой же книге. Файл во вложении.
Всех с наступившим Новым Годом! Нужна ваша помощь. На листе "Вопросы" каждый раз разное количество вопросов. Как вывести каждый вопрос на отдельный лист в этой же книге. Файл во вложении.Sesya
Как вариант - использовать ВПР() - у Вас там уже на листах есть порядковые номера, вот по ним и тянуть. Листы создавать и заполнять формулами вручную (можно сделать один и раскопировать, номера/названия менять вручную). Или генерить листы макросом - но макрос писать дольше, чем сделать вручную формулами.
Или опишите всю задачу - пока я вижу что оптимально один раз сделать вручную формулами с запасом, лишние листы скрыть.
Как вариант - использовать ВПР() - у Вас там уже на листах есть порядковые номера, вот по ним и тянуть. Листы создавать и заполнять формулами вручную (можно сделать один и раскопировать, номера/названия менять вручную). Или генерить листы макросом - но макрос писать дольше, чем сделать вручную формулами.
Или опишите всю задачу - пока я вижу что оптимально один раз сделать вручную формулами с запасом, лишние листы скрыть.Hugo
макросом можно: форматировать дальше - сами. Выделяете в группу листы которые с вопросами, двигаете на одном из них нужную - высоту, ширину ячеек - и это отобразится на листах всей группы.
макросом можно: форматировать дальше - сами. Выделяете в группу листы которые с вопросами, двигаете на одном из них нужную - высоту, ширину ячеек - и это отобразится на листах всей группы.Leanna
Sub Варианты() Dim sh As Object, i Application.ScreenUpdating = False Application.DisplayAlerts = False For Each sh In Worksheets If sh.Name <> "Вопросы" Then sh.Delete Next Application.DisplayAlerts = True For i = 2 To Cells(Rows.Count, 2).End(xlUp).Row Sheets.Add After:=Worksheets(Worksheets.Count) With ActiveSheet .Name = "Вопрос " & i - 1 .[a3] = "Вопрос " & i - 1 Sheets("Вопросы").Range("C" & i & ":G" & i).Copy .[a5] End With Next i Application.ScreenUpdating = True End Sub
[/vba]
Как вариант (раз уж сделал): [vba]
Код
Sub Варианты() Dim sh As Object, i Application.ScreenUpdating = False Application.DisplayAlerts = False For Each sh In Worksheets If sh.Name <> "Вопросы" Then sh.Delete Next Application.DisplayAlerts = True For i = 2 To Cells(Rows.Count, 2).End(xlUp).Row Sheets.Add After:=Worksheets(Worksheets.Count) With ActiveSheet .Name = "Вопрос " & i - 1 .[a3] = "Вопрос " & i - 1 Sheets("Вопросы").Range("C" & i & ":G" & i).Copy .[a5] End With Next i Application.ScreenUpdating = True End Sub
Спасибо большое за ответы. А как с помощью макроса отформатировать полученные листы (нужно, чтобы ячейки А5-Е5 представляли из себя выпадающий список, а ячейки А3-Е3 были объединены) и сделать так, чтобы листы с вопросами открывались поочередно, например, после нажатия кнопки "Далее" лист "Вопрос 1" закрывался и открывался лист "Вопрос 2"? [moder]Читаем Правила форума. Один вопрос - одна тема. Эта тема закрыта[/moder]
Спасибо большое за ответы. А как с помощью макроса отформатировать полученные листы (нужно, чтобы ячейки А5-Е5 представляли из себя выпадающий список, а ячейки А3-Е3 были объединены) и сделать так, чтобы листы с вопросами открывались поочередно, например, после нажатия кнопки "Далее" лист "Вопрос 1" закрывался и открывался лист "Вопрос 2"? [moder]Читаем Правила форума. Один вопрос - одна тема. Эта тема закрыта[/moder]Sesya
Сообщение отредактировал Pelena - Понедельник, 05.01.2015, 18:27