一、题目 如下图所示,分别求出A列单元格中的姓名、入职时间、离职时间和工作年限: 二、解题思路 首先分析A列单元格字符串的特征,然后按照分组法设置Pattern属性值: .Pattern = '([一-龢]{2,})+([一-龢]{4,})+(\d+)+/?'& - '\d+/?\d+[一-龢]+(\d+)+/?\d+/?\d+' 三、VBE窗口 这里列出了5种代码写法,截图如下: 四、代码分享 Sub 提取姓名入职离职和工作年限5() Dim regx As Object, rng As Range, mat, m Set regx = CreateObject('vbscript.regexp') With regx .Global = True .Pattern = '([一-龢]{2,})+([一-龢]{4,})+(\d+)+/?\d+/?' & _ '\d+[一-龢]+(\d+)+/?\d+/?\d+' For Each rng In [a2:a11] Set mat = .Execute([rng]) For Each m In mat rng(1, 26) = m.SubMatches(0) rng(1, 27) = m.SubMatches(2) rng(1, 28) = m.SubMatches(3) rng(1, 29) = m.SubMatches(3) - m.SubMatches(2) Next Next End With End Sub 五、总结 1. 熟悉Pattern属性值的设置。 2. 熟悉foreach和forto循环法的使用特点。 3.熟练使用分组结果提取目标字符串。 4.熟悉单元格对象的写法。 大家思考一下:本例中求工作年限为什么没有使用datediff()函数。 |
|
来自: 我的人生宝库 > 《电脑(软件应用)》