用EXCEL制作模拟考试系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用EXCEL制作模拟考试系统
1.建立题库
打开Excel 2003,建立“单选题”工作表(如图1),在A2输入公式=ROW()-
1&"."以自动生成序号,在D2输入=IF(C2="","",RAND()),选中A2:D2拖动其填充柄向下复制到其他单元格,大概有几百行也就够了,剩下的需要时再复制。按住Ctrl键拖动工作表标签复制出两份,分别重命名为多选题、判断题。
图1
2.设计试卷
建立“试卷”工作表,你可以按需要设置试卷,并输入单选题、多选题、判断题三个大题目,多选题需注明错、漏、多选均不得分。并留出相应的题目位置,单选题30题(A5:C34),多选题40(A36:C75),判断题30题(A77:C106)。
用“自选图形/基本形状”中的棱台画一个按钮,选中在名称框中输入“出题按钮”4字回车,把它命名为“出题按钮”。再右击此按钮选择“添加文字”,在按钮上输入“出题”2字。同样再画一个按钮,把它命名为“评分按钮”,添加文字“评分”。(如图2)
图2
3.显示题目
在A5输入公式=INDIRECT("单选题!R"&ROW()-3&"C"&COLUMN(),0),选中A5复制,再选中A5:C34进行粘贴。同样在A36输入公式=INDIRECT("多选题!R"&ROW()-34&"C"&COLUMN(),0)并复制到A36:C75,在A77输入公式=INDIRECT("判断
题!R"&ROW()-75&"C"&COLUMN()并复制到A77:C106。在E4单元格输入公式
=IF(D4=C4,1,0),这公式用来判断如果D4中的答案与C4的标准答案一致就得1分否则为0分。
A5的公式表示对单选题工作表中同列、行数差3的单元格(A2)的引用,公式中使用了R1C1格式的单元格编号,其中3、34、75是由第一题所在的行数减2得来。这公式实现的是绝对位置引用,即不管在单选题工作表中进行插入、删除行或排序,A5显示的始终都是你从单选题A2中直接看到的内容。因此A5:C34、
A36:C75、A77:C106三个区域将分别与相应题库中最前面的30(或40)题的内容保持一致。
4.答案限制
选中D5:D34单击“数据/有效性”,在“允许”中选择“系列”,选中“提供下拉箭头”复选项,在“来源”中输入“A,B,C,D”,不含引号且其中逗号为半角格式(如图1)。切换到“出错警告”选项卡,输入错误信息为“只能输入A、B、C、D中的一项,其他任何符号或空格均为非法。”,选中“输入无效数据时显示警告”复选项,选择样式为“停止”(如图2),确定完成设置。
图1
图2
同样对多选题D36:D75,判断题D77:D106设置数据有效性,只是“来源”要分别换成
“A,B,C,D,B,AC,AD,BC,BD,CD,ABC,ACD,BCD,ABCD”和“?,×”。“出错警告”也要做相应修改,特别是多选题一定要说明必须按ABCD的顺序输入多选项,否则无法正确评分,若觉得多选题要输入这
一大串有效性设置太麻烦,不设置有效性也是可以,你只要在题目中注明不按顺序的不给分不就行了。
5.准考证号验证
建一个“考生名单”工作表,在A、B、C列分别输入序号、准考证号、考生姓名,选中B列在名称框中输入“考号”,回车确定把B列命名为考号(如图3)。回到“试卷”工作表选中要输入准考证号的D2单格,单击“数据/有效性”,在“允许”中选择“系列”,取消“提供下拉箭头”复选项,在“来源”中输入
=INDIRECT("考号")。切换到“出错警告”选项卡,输入错误信息为“你输入的准考证号并不存在,请重新输入”,选中“输入无效数据时显示警告”,并设置样式为“停止”。在F3单元格输入公式=IF(D2="","",VLOOKUP(D2,考生名
单!B:C,2,FALSE)),这公式会在输入准考证号后自动显示考生姓名。
6.随机抽题
右击“出题”按钮,选择“指定宏”,在弹出窗口中,输入宏名为“出题”,单击“新建”按钮,编辑如下代码:
Sub 出题()
If Range("D2").Value = 0 Then
提示 = MsgBox("请先输入准考证号")
GoTo 重来
End If
'如果D2为空则弹出提示要求输入准考证号并直接跳到后面的“重来:”处。
Sheets("单选题").Range("A:D").Sort Key1:=Sheets("单选题
").Range("D2"), Order1:=xlAscending,
Header:=xlGuess
Sheets("多选题").Range("A:D").Sort Key1:=Sheets("多选题
").Range("D2"), Order1:=xlAscending,
Header:=xlGuess
Sheets("判断题").Range("A:D").Sort Key1:=Sheets("判断题
").Range("D2"), Order1:=xlAscending,
Header:=xlGuess
'这三行分别是对单选、多选和判断题工作表的A:D区域按D列随机数升序排序。
Columns("B:B").Rows.AutoFit
'对B列设置最适合行高,以完整显示题目。
Range("D5").Select
'定位到D5以便输入答案
ActiveSheet.Shapes("出题按钮").Visible = False
'隐藏出题按钮以防重复选题
ActiveSheet.Shapes("评分按钮").Visible = True
'显示评分按钮
重来:
End Sub