Страницы: 1 2 След.
RSS
Тест в Excel. Как сделать, чтобы из 20 вопросов выбирались 5?
 
Задали сделать в Excel тест на макросах... да не совсем простой...

Суть вопроса такова: В книге есть 22 листа (1 лист для кнопки "Начать тест", 2-21 листы для вопросов с вариантами ответов, 22-й лист для вывода результата), мне нужно сделать так, чтобы при нажатии кнопки "Начать тест" автоматически из 20-ти вопросов (листов) выбирались 5 произвольных и тест для того, кто его проходит, состоял по сути не из 20 вопросов (листов), а из 5-ти.

Я уже не знаю, как только не крутила... с помощью чего можно вообще так сделать?
Буду безумно благодарна, если кто-то хоть чем-то поможет!
Изменено: billie_jean - 06.05.2013 14:52:59
 
В чем именно проблема? В том как выбрать 5 из 20?
 
Да. Но чтобы каждый раз пятерка вопросов менялась.
 
Вроде бы всё сделал, открываются листы со 2 по 21 в хаотичном порядке, попробовать можно так, запускаете файл  и переключаете клавиатуру на английский язык, и нажимете сочетание клавиш ctrl+w, выподение повторов тоже предусмотрел!
Если очень захотеть - можно в космос полететь ;)
 
Вот ещё вариантик!
Если очень захотеть - можно в космос полететь ;)
 
lexey_fan,
В первом варианте у меня просто книга с 22-мя листами открывается и когда я нажимаю ctrl+w то появляется окошко с указанием того, с каким листом я в данный момент работаю.
Во втором варианте у Вас есть 7 листов с номерами 1,8,13,14,16,18,22. Когда я нажимаю "Начать тест" то открываются только эти листы, а мне нужно, чтобы когда я второй раз нажимаю на первом листе "Начать тест" открывались уже другие листы ( с другими вопросами ).


Например первый раз нажала "Начать тест" и из всех 22 листов задействованы в тесте будут лишь листы 1,5,7,12,13,17,22, Второй раз нажала "Начать тест" - из всех 22 листов будут задействованы в тесте лишь 1,2,7,9,15,20,22, в третий раз - 1,2,7,9,16,18,22  и т.п...

Я не знаю даже с помощью чего это можно сделать... с помощью макросов или функция какая есть?
 
Направление: макрос скрывает все листы, кроме первого, генерирует случайные числа в диапазоне 2:22, отображает только листы с этими индексами.
 
Код
Public Sub VisSheets(bMetka As Boolean)
    Dim sh As Worksheet

    For Each sh In ThisWorkbook.Worksheets
        If sh.Name <> "Лист1" And sh.Name <> "Лист22" Then
            If bMetka Then sh.Visible = True Else sh.Visible = False
        End If
    Next
End Sub

Sub tt()
    Dim iRnd As Integer
    Dim i As Byte
    Dim nUni As New Collection

    VisSheets False
    Randomize
    On Error Resume Next
    Do
        iRnd = CInt(Int((21 * Rnd()) + 2))
        nUni.Add CStr(iRnd), CStr(iRnd)
    Loop Until nUni.Count = 5
    On Error GoTo 0

    For i = 1 To 5
        Sheets(CInt(nUni(i))).Visible = True
    Next
End Sub
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
LightZ,

О Боженьки, благодарствую!!! То, что надо!
Простите за наглость, но Вы бы не могли мне расписать немножко как делать так, чтобы я могла сама такой тест сделать?  :oops:  Я так понимаю, что делали в Visual Basic с которым я совсем не знакома еще...  :cry:
Изменено: billie_jean - 06.05.2013 22:27:52
 
Цитата
billie_jean пишет: В первом варианте ...
я сделал то же самое что и LightZ, в первом примере по нажатии сочетания клавиш активировались в хаотичном порядке листы, во втором примере стояло условие на единичный запуск, т.е при старте скрывались все листы и при нажатии на кнопку открывались только 5 листов в хаотичном порядке + последний лист, при закрытии документа и новом открытии появляются новые листы
Изменено: lexey_fan - 09.05.2013 12:12:16
Если очень захотеть - можно в космос полететь ;)
 
Цитата
billie_jean пишет: чтобы я могла сама такой тест сделать? Я так понимаю, что делали в Visual Basic с которым я совсем не знакома еще...
А толку тогда Вам расписывать, если Вы даже "не знакомы" с VBA?  :)
Примерный алгоритм уже описал Юрий М.
Изменено: LightZ - 06.05.2013 23:51:46
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
lexey_fan,
к сожалению, во втором варианте, как бы я не нажимала "начать тест" или не открывала заново книгу - листы одни и те же... а с первым вариантом всё так же... ничего не "активируется"...  :(  
Изменено: billie_jean - 06.05.2013 23:54:05
 
Макросы у Вас вообще разрешены?
 
LightZ,
Толк в том, чтобы я разобралась с чем именно работать и смысл каждого кода, потому что мне как ни как самой тест все-таки придется делать, чтобы защититься (объяснить преподавателю как я сделала тест)...  :(  
 
billie_jean, не нужно играться с форматированием - у нас нормальное зрение.
 
Юрий М,
да, разрешены.
 
billie_jean, вот код без ограничений, но как и у LightZ так и у меня иногда открывается не 5 листов теста а 4, или даже 3, но редко!
проследите по шагово что делает макрос клавишей f8, может что то понятней станет, а так я думаю мало кто захочет разъяснять значение каждой строки!
Изменено: lexey_fan - 07.05.2013 00:38:33
Если очень захотеть - можно в космос полететь ;)
 
Перед прогоном переменные vop просто надо "обнулять", иначе при последующих прогонах условие ...If vop_1 = ""... уже не работает :-)
Код
Sub test()
Sheets(1).Select
vop_1 = "": vop_2 = "": vop_3 = "": vop_4 = "": vop_5 = ""
For w = 2 To 22
Sheets(w).Visible = 2
Next
For i = 1 To 5
nn:
x = Random
If x = vop_1 Then GoTo nn
If x = vop_2 Then GoTo nn
If x = vop_3 Then GoTo nn
If x = vop_4 Then GoTo nn
If x = vop_5 Then GoTo nn
If vop_1 = "" Then vop_1 = x
If x = vop_1 Then GoTo mm
If vop_2 = "" Then vop_2 = x
If x = vop_2 Then GoTo mm
If vop_3 = "" Then vop_3 = x
If x = vop_3 Then GoTo mm
If vop_4 = "" Then vop_4 = x
If x = vop_4 Then GoTo mm
If vop_5 = "" Then vop_5 = x
If x = vop_5 Then GoTo mm
mm:
Sheets(x).Visible = -1
'MsgBox "Лист открыт под номером" & x
Next
Sheets(22).Visible = -1
End Sub
Учимся сами и помогаем другим...
 
ber$erk, Спасибо, что то я не подумал!
Изменено: lexey_fan - 07.05.2013 08:05:33
Если очень захотеть - можно в космос полететь ;)
 
Цитата
billie_jean пишет:
как я сделала тест)
А где здесь тест? Вам пока показали варианты случайного выбора листов. А что дальше? Как Вы видите решение задач и создание итогового листа? Посмотрите обсуждение по тестам по ссылке здесь
 
Igor67,
вот я и говорю, что тест я знаю как делать, всё сделаю и решение и т.п. там через макросы, функцию "ЕСЛИ" и т.п., а вот как сделать, чтобы страницы выбирались сейчас буду разбираться  ;)  Вы, быть может, подумали, что мне нужен тест по Excel, но нет, мне любые вопросы, любое оформление, главное чтобы всё считалось и листалось. Для 1 курса и того вполне достаточно  :D
Изменено: billie_jean - 07.05.2013 12:30:23
 
А что Вам мешает открыть все листы, добавить на них вопросы, сделать подсчёт итогов на 22 листе (тем более Вы говорите что знаете и можете сделать)? а в дальнешем воспользоваться примерами выше...Просто достаточно не просто придумывать за Вас что то, вы попробуйте сделать и если что то получаться не будет выкладывайте файл, я уверен что вам тут обязатльно помогут уже "допилить" то что у Вас не получится!
Если очень захотеть - можно в космос полететь ;)
 
billie_jean, Вы пишите про тест, но это просто определенное количество вопросов. Зачем вопросы прятать на разные листы? Тем более (ИМХО)  обработать в последующем кучу листов совсем не просто. Если бы делал тест - в книге 3 листа первый для запуска и прохождения теста, 2-й скрытый с контрольными вопросами, которые выбираются в случайном порядке на первый лист, и на 3-й записываем результат теста.
 
Igor67, Присоединяюсь!
Если очень захотеть - можно в космос полететь ;)
 
Ребят, как я понял - просто девочке-первокурснице в университете задали такое задание (скорей всего какая-то лабораторная работа), которое ей нужно будет потом защитить перед преподавателем.
billie_jean, я сегодня после работы подкорректирую код и добавлю комментарии, думаю дальше Вы уже разберетесь.
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
во вложении
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
LightZ,
Сама себя запутала...
Вот ссылка на мой тест (т.к. весит он больше 200 кб), там через VB всё видно и понятно как что делалось...
http://myfolder.ru/files/36309902
На последнем 22-м листе в O1 функция =СУММ(Лист2!I1;Лист3!I1;...;Лист21!I1);
Массив (E4;E10:H4;H10) объеденен и вставлена функция =ЕСЛИ(O1=5;5;ЕСЛИ(O1=4;4;ЕСЛИ(O1=3;3;2))) - беда в том, что считаются баллы за все 20 вопросов, а не за 5, т.к. тест по прежнему из 20, а не 5 вопросов... Запуталась окончательно...

Выручайте!!! Моего мозга не достаточно для того, чтобы правильно отредактировать и подставить ваши варианты кодов в мой тест...
 
billie_jean, смотрите http://myfolder.ru/files/36311173
Если очень захотеть - можно в космос полететь ;)
 
lexey_fan,
Вот, самое оно! Большое спасибо! Только там опять первый раз 5 вопросов, а на следующий раз может и 2 всего выпасть... и вопросы бывает повторяются... Теперь осталось хоть в чем-то самой разобраться...
А как все листы открыть, чтобы можно было редактировать их? Или это теперь тоже только через коды?  :oops:
Изменено: billie_jean - 08.05.2013 12:07:14
 
в свойствах листа Visible поменяйте с 2 на -1
lexey_fan был случай с выполнением 6 вопросов (6 правильных = оценка 2)
Страницы: 1 2 След.
Читают тему
Наверх