1.建立题库打开Excel 2010,建立“模拟考试系统-出题测试版”。
打开此工作簿,建立“单选题”工作表(如图1),在A2输入公式=ROW()-1&"."以自动生成序号,在D2输入=IF(C2="","",RAND()),选中A2:D2拖动向下填充几百行。
按住Ctrl键单击“单选题”工作表标签拖动复制出两份,分别重命名为“多选题”(如图2)、“判断题”(如图3),分别输入题目和答案,按Alt+回车键换行。
请注意以下提示:1、以上3个工作表,在B列输入单选题题目(样式随意,但一道题只能占一个单元格),在C 列输入对应考题的答案,答案输入时注意不要有多余字符。
2、“多选题”工作表的答案必须按ABCD的顺序填写,例如答案ABD,不能写ADB、BAD、BDA、DAB、DBA,答错、少答和多答均不得分;“判断题”工作表的答案只能有两种,本题按“正确”和“错误”作为答案,其他形式如“对”和“错”、“√”和“×”也可以。
3、题库中题目数量根据实际情况而定,多多益善。
本例中题库数目为单选题60道、多选题50道、判断题45道。
图1图2图32.建立考生名单新建“考生名单”工作表,在A、B、C列分别输入序号、准考证号、考生姓名,选中B列在名称框中输入“考号”,回车确定把B列命名为考号(如图4)。
完成后可在名称管理器内看到名字为“考号”的名称,引用位置为“考生名单”工作表的B列。
图43.设计试卷建立“试卷”工作表,按需要设置试卷,序号生成方式如题库序号。
单选题30题(A5:C34),多选题40(A36:C75),判断题30题(A77:C106)。
在B4输入“单选题(每题1分)”,在B35输入“多选题(每题1分,错、漏、多选均不得分)”,在B76输入“判断题(每题1分)”。
用“自选图形/基本形状”中的棱台画一个按钮,选中在名称框中输入“出题按钮”4字回车,把它命名为“出题按钮”。
再右击此按钮选择“添加文字”,在按钮上输入“出题”2字。
同样再画一个按钮,把它命名为“评分按钮”,添加文字“评分”。
(如图5)图54.显示题目(如图6)在B5输入公式=INDIRECT("单选题!R"&ROW()-3&"C"&COLUMN(),0),复制到B5:C34(可拖动A5填充)。
在B36输入公式=INDIRECT("多选题!R"&ROW()-34&"C"&COLUMN(),0)并复制到B36:C75。
在B77输入公式=INDIRECT("判断题!R"&ROW()-75&"C"&COLUMN(),0)并复制到B77:C106。
在E5单元格输入公式=IF(D5="",0,IF(D5=C5,$G$2,0)),向下填充到E34,这公式用来判断如果D5中的答案与C4的标准答案一致就得1分否则为0分,其中G2单元格内数值为1。
同理,在E36单元格输入公式=IF(D36="",0,IF(D36=C36,$H$2,0)),向下填充到E75;在E77单元格输入公式=IF(D77="",0,IF(D77=C77,$I$2,0)),向下填充到E106。
可通过更改G2、H2、I2单元格的数值来更改分值。
B5的公式表示对单选题工作表中同列、行数差3的单元格(B2)的引用,公式中使用了R1C1格式的单元格编号,其中3、34、75是由三种题型的第一题所在的行号减2得来。
这公式实现的是绝对位置引用,即不管在单选题工作表中进行插入、删除行或排序,B5显示的始终都是你从单选题B2中直接看到的内容。
因此B5:C34、B36:C75、B77:C106三个区域将分别与相应题库中最前面的30(或40)题的内容保持一致。
图65.答案限制选中单选题答题区D5:D34单击“数据/有效性”(快捷键ALT+D→L),在“允许”中选择“序列”,选中“提供下拉箭头”复选项,在“来源”中输入“A,B,C,D”,不含引号且其中逗号为半角格式(如图7)。
切换到“出错警告”选项卡,输入错误信息为“只能输入A、B、C、D中的一项,其他任何符号或空格均为非法。
”,选中“输入无效数据时显示警告”复选项,选择样式为“停止”(如图8),确定完成设置。
图7图8同样对多选题答题区D36:D75,判断题答题区D77:D106设置数据有效性,只是“来源”要分别换成“A,B,C,D,B,AC,AD,BC,BD,CD,ABC,ACD,BCD,ABCD”和“正确,错误”。
多选题的“出错警告”一定要改成“必须按ABCD的顺序输入多选项,否则无法正确评分”。
(如图9到如图11)图9图10图116.准考证号验证选中“试卷”工作表中要输入准考证号的D2单元格,单击“数据/有效性”,在“允许”中选择“系列”,取消“提供下拉箭头”复选项,在“来源”中输入=INDIRECT("考号")(如图12)。
切换到“出错警告”选项卡,输入错误信息为“你输入的准考证号并不存在,请重新输入”,选中“输入无效数据时显示警告”,并设置样式为“停止”(如图13)。
图12图13在F2单元格输入公式=IF(D2="","",VLOOKUP(D2,考生名单!$B:$C,2,FALSE)),在D2单元格输入准考证号后会自动显示考生姓名。
(如图14)图147.随机抽题右击“出题”按钮,选择“指定宏”,在弹出窗口中,输入宏名为“出题”,位置选择当前工作簿,单击“新建”按钮,复制如下代码粘贴到框内,结果如图15,保存时将文件另存为启用宏的.xlsm 格式。
Sub 出题()If Range("D2").Value = 0 Then提示 = MsgBox("请先输入准考证号")GoTo 重来End If'如果D2为空则弹出提示要求输入准考证号并直接跳到后面的"重来:"处。
Sheets("单选题").Range("A:D").Sort Key1:=Sheets("单选题").Range("D2"), Order1:=xlAscending, Header:=xlGuessSheets("多选题").Range("A:D").Sort Key1:=Sheets("多选题").Range("D2"), Order1:=xlAscending, Header:=xlGuessSheets("判断题").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图15试卷中的题目总是显示各题库最前面的N题,而在此对各题库按随机数进行随机排序后最前面的N题自然是随机的,也就相当于是随机抽题了。
8.成绩记录表新建“成绩记录”工作表(如图16),在A2输入公式=NOW(),并选中A列右击从“设置单元格格式”中设置为日期格式以显示当前时间。
在B2输入公式=试卷!D2和C2输入公式=试卷!F2以显示相应数据。
D2输入公式=SUM(E2:G2)对后面三个得分进行合计,E2、F2、G2则分别输入公式=SUM(试卷!E5:E34)、=SUM(试卷!E36:E75)、=SUM(试卷!E77:E106)分别对相应题型得分进行合计。
图169.评分和记录保存右击“评分”按钮,选择“指定宏”,输入宏名“评分”,位置选择当前工作簿,单击“新建”按钮,复制如下代码粘贴到框内,结果如图17:Sub 评分()Sheets("成绩记录").Rows("3:3").Insert Shift:=xlDown'在成绩记录工作表第3行前插入一行Sheets("成绩记录").Rows("2:2").Copy'复制成绩记录工作表第2行Sheets("成绩记录").Range("A3").PasteSpecial Paste:=xlPasteValues'以数值方式粘贴到成绩记录工作表A3得分 = MsgBox("最终得分" & Range("成绩记录!D2").Value & " 其中:单选题" & Range("成绩记录!E2").Value & "、多选题" & Range("成绩记录!F2").Value & "、判断题" & Range("成绩记录!G2").Value, , "评分结果")'弹出信息框显示成绩记录!D2、E2、F2、G2的数据,标题为"评分结果"Range("D2,D5:D34,D36:D75,D77:D106").ClearContents'清除试卷工作表中输入的内容Sheets("试卷").Rows("3:500").RowHeight = 0Sheets("成绩记录").Rows("2:2").RowHeight = 0'设置题目区行高为0,以隐藏所有题目ActiveSheet.Shapes("出题按钮").Visible = TrueActiveSheet.Shapes("评分按钮").Visible = False'显示出题按钮,隐藏评分按钮ActiveWorkbook.Save'保存End Sub图1710.其他设置选中A4单击“窗口/冻结空格”以始终显示1:3行的标题和按钮。