事半功倍 巧用Office组件制作语句排序考题

2021-02-06 10:19:45 电脑爱好者 2021年3期

俞木发

首先在Word中输入需要排序的语句,到https:∥share.weiyun.com/YGJ723wm下载所需的代码,接着按下“Alt+F11”组合键打开VB编辑窗口,点击“插入一模块”,将下载到的代码粘贴到模块窗口,点击“运行”并按提示保存到一个名为“分解句子”的宏(图1)。

点击“视图一立即窗口”运行上述宏,在“立即窗口”中可见Word中输入的句子会按照词组的形式自动进行拆分。在拆分结果中按照题目要求稍加修改,比如将“兔”、“妈”、“妈”重新组合成“兔妈妈”(图2)。

将整理后的拆分句子内容全选并复制,然后启动Excel并将拆分后的内容粘贴到新建工作表的C2:C47区域。因为拆分的部分需要打乱顺序排列,定位到D2单元格并输入公式“=RAN DBETWEEN(1,20)”(即在D列填充1→20之间的随机数字作为排序依据),下拉填充到C47单元格。同时为了方便学生排序拆分的词组,再为每个词组添加序号,定位到C2单元格并输入公式“=UNICHAR(9311+ROW()-1)”,其中UNICHAR函数的作用是在C列填充①②③。这里因为每句话拆解的数量都不同,需要按照实际拆解部分进行填充,比如第一部分填充到B10单元格。第二部分为B13:B19区域,在B13单元格中输入公式“=UNICHAR(9311+ROW()-12)”(即ROW()-本部分第一个填充行号-1),填充到B23单元格。其他部分填充原理类似。继续定位到A2单元格并输入公式“=B2&C2”,下拉填充到A47单元格,这样A列就会在拆解词语前自动添加序号(图3)。

接下来就是将A列的带序号的拆解部分转化为行显示即可。继续定位到E2单元格并输入公式“=INDEX($A2:$A10,COLUMN(A2))”,公式中先使用COLUMN(A2)函数读取列号数字并将其作为INDEX函数的引用数字,引用范围是“$A2:$A10”(即第一句话的拆解数据区域),将函数向右填充后就会依次将A列的文本在E2:M2之间进行填充。同上,继续在E3单元格中输入公式“=INDEX($A13:$A19,COLUMN(A3))”,这里注意“$A13:$A19”的选择,即每个公式的选择区域都是对应语句的拆解数据区域。依次在E4、E5单元格中输入相应的公式并向右填充,这样就可以将带序号的拆解语句填充到2、3、4、5行中了(图4)。

选中C2:D10区域,点击“数据→排序”,在打开的排序窗口中,主要关键字选择“列D”(即随机数字填充列),其他选择默认设置,点击“确定”进行排序即可。因为D列是随机数字,这样可以对C2:C10区域的数据进行随机排序。同理选中其他语句区域(如C13:D19区域对应第二句)进行排序,最终在E2:M5区域获得乱序排列的考题数据(图5)。

完成上述的操作后,选中E2:M5区域并复制,返回到Word窗口并依次点击“开始→粘贴→只保留文本”,输入题目说明就可以完成这类试题的制作了(图6)。

上述方法适合于一次性制作多个句子的试题,每次制作的考题句子拆分的长度都不相同,这样很多函数的输入都要更改。对于需要经常制作不同句子考题的老师,可以在Excel中预先制作一个模板。

在Excel中新建一个工作表,在A2单元格中输入公式

“=IF(C2="","",B2&C2)”(使用IF函数对A列显示的值进行判断,如果C2的值不为空,则显示B2&C2内容,否则显示为空),将公式下拉填充到A17单元格(假设一句话最多拆分为16个词组,一般已经足够小学生使用)。在B2单元格中输入公式“=IF(C2="","",UNI CHAR(9311+ROW()-1))”,D2单元格中输入公式“=IF(C2="","",RANDBETWEEN(1,20))”,同樣使用IF函数进行相应的判断,不为空则显示填充序号和填充随机数字,在F2单元格中输入公式

“=INDEX($A2:$A17,COLUMN(A2))”,填充到U2单元格(图7)。

点击“开发工具一录制宏”,执行下面的操作录制一个宏,并为宏设置一个快捷键“Ctrl+W”:

选中C2:D17区域中的内容,然后点击“数据→排序”,主要关键字选择“随机排序”;选择F2:U2区域中的内容并复制;定位到A18单元格,依次点击“开始→选择性粘贴→数值”;继续定位到第17行,右击并选择“插入行”,完成宏的录制。

这样以后在制作类似的考题时,我们只要在C2:C17区域中输入自行拆分的语句内容(字数不够时可以留空,词组可以按自己的需要任意拆分),然后按下“Ctrl+W”组合键(每执行一次会重新进行排序)。重复上述操作输入新的句子,自动制作好的试题会依次排列在19、20、21……行(图8)。