分享

使用分组法多段拆分混杂字符串

 我的人生宝库 2020-01-02

一、题目

如下图所示,分别求出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()函数。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多