百度
360搜索
搜狗搜索

excel使用正则表达式,如何用excel中的VBA的正则表达式提取出字符串?详细介绍

本文目录一览: 如何用excel中的VBA的正则表达式提取出字符串?

软件版本:Office2007
方法如下:
1.利用正则表达式,提取A列的数字,并对数字求和:
2.Alt+F11,输入代码如下:
3.F5执行代码,返回Excel,得到结果:
Sub RegTest() Dim oRegExp As Object Dim oMatches As Object Dim sText As String sText = "柴塘河节制闸3300×4960平面钢闸门" Set oRegExp = CreateObject("vbscript.regexp") With oRegExp .Pattern = "\D+(\d+)\D+(\d+)\D+" Set oMatches = .Execute(sText) Debug.Print oMatches(0).submatches(0) '第一个数 Debug.Print oMatches(0).submatches(1) '第二个数 End With Set oRegExp = Nothing Set oMatches = NothingEnd Sub程序中sText字符串来源可以从单元格赋值,
Debug.Print可以将两个数改为赋值给两个变量。
Sub t()
s = "柴塘河节制闸3300×4960平面钢闸门"
Set regxp = CreateObject("vbscript.regexp")
With regxp
.Global = True
.Pattern = "\d+"
For Each m In .Execute(s)
Debug.Print m
Next
End With
End Sub
1、首先打开需要编辑的Excel表格,进入到编辑页面中。
2、然后点击打开主菜单栏开发工具中的“Visual Basic”选项。
3、还可以鼠标右键单击工作标签,选择打开“查看代码”。
4、然后在弹出来的窗口中点击输入:
Function REFIND(str, re)
Dim Reg As New RegExp
With Reg
.Global = True
.Pattern = re
Set matchs = .Execute(str)
For Each Match In matchs
y = y & " " & Match
Next
End With
'MsgBox y
REFIND = y
End Function
5、然后运行就可以得到结果了。

excel中使用正则表达式

正则表达式搞不明白
可以定义一名称,比如
AA=EVALUATE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE($F:$F,"m",""),"×","*"),"条",""),"米",""))
在H2输入=AA
试试行不
Function JiSuan(Rng As Range) As Single Dim Reg As New RegExp Dim R As String On Error GoTo ErrHand R = (Rng) Reg.Global = True Reg.Pattern = "[\u4e00-\u9fa5]|m|M" R = Reg.Replace(R, "") Reg.Pattern = "×" R = Reg.Replace(R, "*") RegSZCC R RegSZJJ R JiSuan = Round(CSng(R), 4) Set Reg = Nothing Exit FunctionErrHand: JiSuan = Err.DescriptionEnd FunctionSub RegSZCC(ByRef S As String) Dim Reg As New RegExp Dim MS Dim R As String Reg.Pattern = "(\d+\.{0,1}\d*)(\*|\\)(\d+\.{0,1}\d*)" Set MS = Reg.Execute(S) If MS.Count = 1 Then If MS(0).SubMatches(1) = "\" Then R = Format(CSng(MS(0).SubMatches(0)) / CSng(MS(0).SubMatches(2)), "0.00000") Else R = Format(CSng(MS(0).SubMatches(0)) * CSng(MS(0).SubMatches(2)), "0.00000") End If S = Reg.Replace(S, R) RegSZCC S End IfEnd SubSub RegSZJJ(ByRef S As String) Dim Reg As New RegExp Dim MS Dim R As String Reg.Pattern = "(\d+\.{0,1}\d*)(\+|\-)(\d+\.{0,1}\d*)" Set MS = Reg.Execute(S) If MS.Count = 1 Then If MS(0).SubMatches(1) = "+" Then R = Format(CSng(MS(0).SubMatches(0)) + CSng(MS(0).SubMatches(2)), "0.00000") Else R = Format(CSng(MS(0).SubMatches(0)) - CSng(MS(0).SubMatches(2)), "0.00000") End If S = Reg.Replace(S, R) RegSZJJ S End IfEnd SubEXCEL中调用方法
B1=jisuan(A1)

正则表达式如何匹配excel文件

对应的正则表达式:
"^.*\.(?:xls|xl|xla|xlt|xlm|xlc|xlw)$"
如果匹配上面的表达式,则文件是Excel文件
Excel文件,常见格式有
*.xls;*.xl*;*.xla;*.xlt;*.xlm;*.xlc;*.xlw
使用正则表达式,可以用/\.xl.{1,2}$/
下面着重看Excel2007+中的常用文件格式:
*.xlsx:基于XML文件格式的Excel 2007工作簿缺省格式
*.xlsm:基于XML且启用宏的Excel 2007工作簿
*.xltx:Excel2007模板格式
*.xltm:Excel 2007宏模板
*.xlam:Excel 2007宏加载项
*.xlsb:Excel2007为大的或复杂的工作簿新引入的非XML二进制文件格,允许优化执行和向后兼容。
可以用另一个正则表达式,来精确匹配这6种格式
/\.xl(s[xmb]|t[xm]|am)$/

阅读更多 >>>  随机数生成器excel公式,求Excel随机数公式

EXCEL正则表达式

如果你文本中的格式是固定汉字在前。数字在后可以用下面这条
=SUBSTITUTE(A1,LOOKUP(9E+307,--MID(A1,MIN(FIND({0;1;2;3;4;5;6;7;8;9},A1&1234567890)),ROW(INDIRECT("1:"&LEN(A1))))),"")
A1格是要修改的内容
假设数据在A1,在B1输入公式:
=LEFT(A1,LENB(A1)-LEN(A1))
=--RIGHT(C1,LEN(C1)*2-LENB(C1))
excel函数中不支持正则(但是VBA中支持),你的要求可以用这个公式,假定数据在A列从A1开始,在B1可以填入
=LEFT(A1,MATCH(1,1/(MID(A1,ROW($1:$100),1)>="啊"),)-1)
这是数组公式,按Ctrl+Shift+Enter结束
Public Function 汉字(arr As String)
Dim reg As Object
Set reg = CreateObject("vbscript.regexp")
With reg
.Pattern = "[^(\u4e00-\u9fa5)]"
.Global = True
汉字 = .Replace(arr, "")
End With
End Function
这个会提取出一个字符串中的所有汉字,例如”我1weq*2we3w爱34es你“,提取出来就为”我爱你“。

excel 数据有效性 正则表达式

excel函数中不支持正则(但是VBA中支持),你的要求可以用这个公式,假定数据在A列从A1开始,在B1可以填入
=LEFT(A1,MATCH(1,1/(MID(A1,ROW($1:$100),1)>="啊"),)-1)
这是数组公式,按Ctrl+Shift+Enter结束
1、正则表达式 T[\S]{17}
2、方法:
1)、加载RE
2)、输入的单元格去验证
Dim mregexp As RegExp
Set mregexp = New RegExp
With mregexp
.Global = True
.IgnoreCase = True
.Pattern = “T[\S]{17} ”
End With
mregexp.Test(TargetRange.Text)
如果是true那么输入结果,如果FALSE那么报错

请问excel中怎么用VBA用正则表达式搜索单元格批注中的字眼?

正则表达式要调用scrip
marking
1. 可以使用ActiveSheet.Comments来获取当前sheet的所有批注集。
2. 在excel中添加一个button,并为该button添加这样的函数:
3. 下面是在excel中使用正则式的框架,请将你的正则问题描述清楚,我再相应作答。
Private Sub CommandButton1_Click()
'Late binding
'Dimension the RegExp objects
Dim RegEx As Object
Dim Myrange As Range, C As Range
' create the RegExp Object with late binding
Set RegEx = CreateObject("vbscript.regexp")
' set the RegExp parameters
With RegEx
'look for global matches
.Global = True
'look for strings that are not numeric
.Pattern = "(\d)月\d+.*?(\d+)开支\d+"
End With
Set cmt = ActiveSheet.Comments
For Each xC In cmt
'xC.Text RegEx.Execute(xC.Text)
'这里是解决匹配、替换的核心部分。请将你的正则式写清楚,
'标明是搜索还是替换,我再写出相应内容。
Next
Set RegEx = Nothing
End Sub
正则式论坛:http://regex.me
正则式博客:http://iregex.org
-----------------------------------------------
2008.12.24
我写了一篇blog,《在Excel VBA中使用正则表达式》,地址是http://iregex.org/blog/regex-in-excel-vba.html ,介绍了如何在Excel中使用VBA进行正则表达式操作,包括搜索、替换,希望对你有所帮助。

excel vba如何使用正则表达式把字符串里字母和数字替换,字母替换为A,数字替换为0

一张图片解决你所有问题,细看
Function 替换(检测内容) As String Dim regx As Object '后期绑定 Set regx = CreateObject("VBScript.RegExp") '后期绑定 Dim mat As Object Dim m As Object Dim 返回内容 As String Set regx = New RegExp With regx .Global = True '如果检测内容中含有非字母和非数字则返回"失败" .Pattern = "\W" Set mat = .Execute(检测内容) If mat.Count <> 0 Then 替换 = "失败" Exit Function End If '替换字线为A,数字为0,单个字母替换,返回替换后的字符 .Pattern = "[a-zA-Z]" 返回内容 = .Replace(检测内容, "A") .Pattern = "[0-9]" 替换 = .Replace(返回内容, "0") End WithEnd FunctionSub test() Cells(2, "B") = 替换(Cells(1, "B")) Cells(2, "C") = 替换(Cells(1, "C"))End Sub

Excel里的VBA怎么使用正则表达式来获取多个电话号码?

你可以按分号分割字符串后再使用正则获取电话号码。
Dim regExDim K As LongSet regEx = CreateObject("VBSCRIPT.REGEXP") 'RegEx为建立正则表达式regEx.Global = True '设置全局可用regEx.Pattern = "1[\d]{10}|01[\d]{10}" '正则搜索样式Set fh = regEx.Execute(Sheets(1).Cells(j, 75)) '符合(匹配)正则的对象 2007-11-25For Each showfh In fh '遍历匹配集合。 Sheets(2).Cells(i + K + 1, 94) = fhstr K = K + 1Next

阅读更多 >>>  为什么excel数字会变成E+17

在excel中用正则表达式查出一列中含有汉字的数据

Function test(rng)Dim regx As ObjectDim strs, str, iSet regx = CreateObject("vbscript.regexp")With regx .Global = True .Pattern = "[\u4e00-\u9fa5]" Set strs = .Execute(rng) For Each i In strs str = str & i Next If Len(str) > 0 Then test = "有中文" Else test = "" End IfEnd WithEnd Function试试吧~~
=LENB(A1)-LEN(A1)
B列输入上公式,回车,下拉,结果非0的就是

网站数据信息

"excel使用正则表达式,如何用excel中的VBA的正则表达式提取出字符串?"浏览人数已经达到19次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:excel使用正则表达式,如何用excel中的VBA的正则表达式提取出字符串?的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!