Magic
正则即是魔法
前言
我们在工作以后面对的很多考试和以前的哪些考试略微有些变化,不再是【给我一本教材】-【吃透知识】-【面对问题】的模式,很多时候都是【给我一个题库】-【面对考试】的模式了。在目前互联网发展如此发达的时候,我们每个人在面对题库的时候肯定都会这样去思考:如果,能把这个题库做到手机上,那将会是绝杀,可惜做不得。给考官倒一杯卡布奇诺,快点考官,就这个题库能把我小桓秒了,我当场就把这个电脑屏幕吃掉!问题引入
通常我们拿到的题库有两种模式,一种是Word文件,用于打印和考试的;另外一种是Excel文件,一般是直接从网络系统里面导出的。其实两种格式,在我们使用纸质题库时,没什么区别。但是如果我们有了开头那种想法,新世界的大门就打开了。我想我们都有过使用手机软件去学习题库的经历,里面有预览,练习,考试,错题集等等模式,灵活使用可以极大的提高这类题库学习的效率,并且会拥有很高的正确率和难以想象的速度,就像阿发说的那样“把题库搞成了肌肉记忆”。这里我们强烈的推荐【磨题帮】这个App,用过的都说好。可这个App上传的题库文件只能是指定格式的Excel文件,如果题库本身是Excel文件都好调整,如果是Word文件,就容易吃电脑屏幕了。本期我们要解决的问题就是:将Word题库转成Excel题库。
两种题库展示
Word题库展示
Excel题库展示
目标分析
我们经过观察,可以看到Word题库中每一道题的格式都差不多:【题干】【选项】【答案】【分析】,在去年我给老爸做一个题库的时候,直接用段落遍历,即For循环也完成了一样的功能,当时他们那个题库格式非常整齐,每个选项都是独立成段落,只需要从头到位的去遍历和摆放就行了。但如果几个选项或者答案和题干都在同一段落,上面的办法就会失效。需要寻找新的途径:正则。
正则表达式可以识别文本中设定好的字段,并将其提取出来。提取出来以后的摆放就不说了,重点来讲讲提取。我们要做的是在Excel中打开一个Word题库,并使用正则表达式把特定内容提取到Excel中的制定单元格里。
施工开始
1,在Excel的VBA编程环境中,引入正则的库
打开VBA环境,在工具-引用中选择如图所示库
2,构建正则变量
Dim reg As Object
Set reg = CreateObject("Vbscript.RegExp")
With reg
.Pattern = ""
.MultiLine = True
.Global = True
.ignorecase = False
End With
这里来解释一下几个参数的含义:
.Global = True '设置是否匹配所有的符合项,True表示匹配所有, False表示仅匹配第一个符合项
.IgnoreCase = True '设置是否区分大小写,True表示不区分大小写, False表示区分大小写
.Pattern = "" '设置要查找的字符模式这里设置为空
关于正则如何去匹配,大家去互联网学习一下,有兴趣的可以自己下载一个专门的App叫做【RegEx Lab】可以用来做正则练习,随时将你想到的匹配方法进行实践。
3,使用正则变量提取数据及数据摆放
由于我们题库的提取中,将【题干】【选项】【答案】做区分,需要匹配三次,所以实现将匹配规则写到了一个变量里,方便后面使用
这段完成了三次匹配的模式控制和数据的摆放,在完成匹配后就得到了我们想要的匹配数据。在实际中,最后还专门写了一个分割函数来把题目的选项给分开。
总结
本期关于Excel中VBA的使用就介绍到这里,完成整个程序的构建后,可以直接将Word题库转成Excel题库,如果有需要完成相关的部分,可以自己学习完成掌握,也可以联系我。
邮箱:327836130@qq.com