ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: jsgj2023

[分享] 常用代码归集

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-2-11 17:10 | 显示全部楼层
Sub 目录提取()
    Dim reg  As Object
    Dim m As Variant
    Dim mat As Variant
    Dim n As Integer
    Set reg = CreateObject("vbscript.regexp")
    With reg
        .Global = True
        .Pattern = "第\d+章.*?[一-龢]+.+?\d+"
        Set mat = .Execute([a1])
        For Each m In mat
            n = n + 1
            Cells(n + 1, 3) = m
        Next
    End With
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-2-11 17:14 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Sub 给单词加分隔符_负向零宽断言()
Dim reg As Object
Dim rng As Variant
Set reg = CreateObject("vbscript.regexp")
With reg
    .Global = True
    .Pattern = "(?!^)(?=[a-z])"
    For Each rng In Range("a1:a11")
        Cells(rng.Row, 2) = .Replace(rng, "-")
    Next
End With
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-2-11 17:22 | 显示全部楼层
Sub 汇总开销记录_正向零宽断言()
Dim reg As Object
Dim n As Variant
Dim m As Variant
Set reg = CreateObject("vbscript.regexp")
With reg
    .Global = True
    .Pattern = "\d+\.?\d?(?=[元块])"
    For Each Rng In Range("b2:b6")
        For Each m In .Execute(Rng)
            n = n + m * 1
        Next
        Cells(Rng.Row, 3) = n
        n = 0
    Next
End With
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-2-12 11:08 | 显示全部楼层
Sub 正则_后向引用获取当年入职并于当年离职的员工名册()
Dim reg As Object, rng, n%
Set reg = CreateObject("vbscript.regexp")
With reg
    .Global = True
    .Pattern = "(\d{4}).+\1.+"
    For Each rng In Range("b2:b10")
        If .test(rng) Then
            n = n + 1
            Cells(n + 1, 4) = Cells(rng.Row, 1)
        End If
    Next
End With
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-2-12 11:13 | 显示全部楼层
Sub 正则_外文语句拆分为单词()
Dim reg As Object, rng, n%
Set reg = CreateObject("vbscript.regexp")
With reg
    .Global = True
    .Pattern = "[a-zA-Z]+"
    For Each rng In Range("a1:a3")
        Set mat = .Execute(rng)
        For Each m In mat
            n = n + 1
            Cells(rng.Row, n + 1) = m
        Next
        n = 0
    Next
End With
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-2-12 14:49 | 显示全部楼层
Sub 正则_将单词和注释分开_多个正则表达式循环执行()
Dim reg As Object, ar, n%, rng
Set reg = CreateObject("vbscript.regexp")
With reg
    .Global = True
    For Each ar In Array("[^a-z ]+", "[a-z ]+")
        n = n + 1
        .Pattern = ar
        For Each rng In Range("a2:a" & Cells(Rows.Count, 1).End(3).Row)
            Cells(rng.Row, n + 1) = .Replace(rng, "")
        Next
    Next
End With
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-2-12 14:52 | 显示全部楼层
Sub 数据重组()
Dim regx As Object, rng, n%, m, mat
Set regx = CreateObject("vbscript.regexp")
With regx
    .Global = True
    .Pattern = "[0-9]+.+[\.?]"
    For Each rng In Sheet3.[a1:a100]
        Set mat = .Execute(rng)
        For Each m In mat
            n = n + 2
             Cells(-1 + n, 1) = m
        Next
    Next
End With
n = 0
With regx
    .Global = True
    .Pattern = "[一-龢]+.+[。?!]"
    For Each rng In Sheet3.[a1:a100]
        Set mat = .Execute(rng)
        For Each m In mat
            n = n + 2
            Cells(n, 1) = m
        Next
    Next
End With
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-2-12 14:55 | 显示全部楼层

Sub 零宽断言_有条件添加修改记录()
Dim regx As Object, rng
Set regx = CreateObject("vbscript.regexp")
With regx
    .Global = True
    .Pattern = "(?=[川吉云粤])"
    For Each rng In [a2:a10]
      Cells(rng.Row, 2) = .Replace(rng, "(中)")
    Next
End With
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-2-12 14:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sub 正则_首尾锚定()
Dim regx As Object, n&, rng, mat, m
Set regx = CreateObject("vbscript.regexp")
With regx
    .Global = True
    .Pattern = "^[A-Z]+\d+$"
    For Each rng In [a1:a17]
        Set mat = .Execute(rng)
        For Each m In mat
        n = n + 1
        Cells(n, 2) = m
        Next
    Next
End With
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-2-12 15:06 | 显示全部楼层
Sub 多个txt文件分列导入Excel() 'by liu-aguang
    Dim sPath$, sFile$, sTxt$, i&, j&, oMH As Object
    sPath = ThisWorkbook.Path & "\"
    sFile = Dir(sPath & "*.txt")
    Do While sFile <> ""
        Open sPath & sFile For Input As #1
        sTxt = sTxt & StrConv(InputB(LOF(1), 1), vbUnicode)
        Close 1
        sFile = Dir
    Loop
    With CreateObject("vbscript.regexp")
        .Pattern = "(?:地址.([^\n\r]+)[^一-龢]+)?(?:单位.([^\n\r]+)[^一-龢]+)?收货人.([^\d\n\r]+)([\d -]*)"
        .Global = True
        Set oMH = .Execute(sTxt)
    End With
    ReDim arr(oMH.Count - 1, 3)
    For i = 0 To oMH.Count - 1
        For j = 0 To 3
            arr(i, j) = oMH(i).submatches(j)
        Next
    Next
    Range("a2").Resize(oMH.Count, 4) = arr
End Sub
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-10-6 03:27 , Processed in 0.034297 second(s), 4 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表