美文网首页VBA学习之路
小试牛刀,正则表达式的应用

小试牛刀,正则表达式的应用

作者: 周建雄key | 来源:发表于2019-08-28 13:30 被阅读0次

在我们小区,每年9月份小区会以自愿的方式举办一次聚餐,以达到交流促进邻里关系的目的
在微信接龙的方式下会收到如下的数据:


参加人员接龙

我试过EXCEL的自动填充


image.png

不是很理想,里面会有一些错误,而且对文字的数不能做统计。 有没有比较理想的方式可以较快速地得到我要的结果呢?

这个时候,我想起了正则表达式,从《自学是门手艺》里面有讲到正则表达式,现 在学VBA又看到了正则表达式,正好遇到这次聚餐接龙,要对人员进行统计,就边学边开始用了。

坚持一惯的做法,遇到问题,先将问题拆解,拆解成一个个可以解决的小问题,小问题解决了,大问题也会得到解决。
先有一个大概的图如下:


问题拆解

整个解题过程的步骤图如下:


image.png

每一步可以细分为更小的步骤:
这里以提取大人数为例:


提取大人数.gif

将各个步骤完成之后,我们利用编好的程进行操作,如图:


操作过程.gif

从一段接龙数据,到整理过后的数据


image.png

最后贴上两段代码:
提取大人数的代码如下:

Sub 提取大人数()
Dim regx As Object, mat, n%, k, rng, rngs
Set rngs = Sheet4.Range("a2:a" & Cells(Rows.Count, 1).End(xlUp).Row)
Set regx = CreateObject("vbscript.regexp")
Range("B2:e" & Cells(Rows.Count, 1).End(xlUp).Row).ClearContents
With regx
    .Global = True
    .Pattern = "\D(个|個)?大人"
    
    For Each rng In rngs
        Set mat = .Execute(rng)
        For Each k In mat
            n = n + 1
            Cells(rng.Row, n + 1) = Left(k, 1)
        Next
        n = 0
    Next
  End With
End Sub

由文字变数字的代码:

Sub 更改数字()
Dim rng, rngs As Range
Dim i%
Dim dic As New Dictionary
Dim arr
arr = Sheet4.Range("K2:L" & Cells(Rows.Count, 11).End(xlUp).Row)
Set rngs = Sheet4.Range("B2:C" & Cells(Rows.Count, 
2).End(xlUp).Row)
'定义字典
 For i = 0 To UBound(arr, 1) - 1
 If Not dic.Exists(arr(i + 1, 1)) Then     
    dic.Add arr(i + 1, 1), arr(i + 1, 2)
 End If
 Next
For Each rng In rngs
For i = 0 To dic.Count - 1
     rng.Replace what:=dic.Keys(i), replacement:=dic.Items(i)
    Next
  Next
End Sub

总结:
现在社会产生的数据越来越多,对于同我们生活相关的信息,怎样与数据相处,从而帮助我们做决策越来越重要,学会编程不一定是去当程序员,而是手上多一个工具解决问题。
学知识的过程,只有将知识用起来,才会让自己越学越有劲,在实践中对知识的消化会更好。

相关文章

  • 小试牛刀,正则表达式的应用

    在我们小区,每年9月份小区会以自愿的方式举办一次聚餐,以达到交流促进邻里关系的目的在微信接龙的方式下会收到如下的数...

  • 改进正则表达式的性能

    正则表达式的应用原理 正则表达式应用到目标字符串的过程大致分为下面几步: 编译正则表达式。检查正则表达式的正确性,...

  • PHP常用正则表达式汇总

    PHP常用正则表达式汇总 正则表达式在 PHP 中的应用在 PHP 应用中,正则表达式主要用于: 正则匹配:根据正...

  • Android 正则表达式的用法

    正则表达式及应用 一、 正则表达式 (一)、概念: 正则表达式(regular expression)就是...

  • Python基础入门 - 正则表达式与综合实战

    1. 初识正则表达式 1.1 介绍 步骤介绍正则表达式入门及应用正则表达式的进阶正则表达式案例 1.2 正则表达式...

  • 快应用小试牛刀

    环境搭建 1.node 环境, 淘宝镜像,无需赘述2.cnpm install -g hap-toolkit 脚...

  • 正则表达式与方法

    正则表达式---常用符号 正则表达式--常用函数 正则表达式--常用技巧 代码: 正则表达式的应用举例 1、使用f...

  • Java正则表达式参考

    Java正则表达式入门 java正则表达式应用 深入浅出之正则表达式(一) 深入浅出之正则表达式(二) 正则表达式...

  • 正则表达式在程序编码中的应用

    正则表达式在程序编码中的应用 正则表达式(括号)、[中括号]、{大括号}的区别小结 正则表达式的() [] {}有...

  • 常用正则表达式

    常用正则表达式大全!(例如:匹配中文、匹配html)目录导航一、常见正则表达式二、正则表达式应用一、常见正则表达式...

网友评论

    本文标题:小试牛刀,正则表达式的应用

    本文链接:https://www.haomeiwen.com/subject/lgmpectx.html