最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

Excel 求教vba中一个正则表达式的写法

来源:动视网 责编:小OO 时间:2024-12-26 05:55:29
文档

Excel 求教vba中一个正则表达式的写法

Dim arr() As String。Dim oRegExp As Object。Dim oMatches As Object。Dim iNum As Integer。';定义正则对象。Set oRegExp = CreateObject(";vbscript.regexp";)。Dim iRow As Integer。iRow = Sheets(1).UsedRange.Rows.Count。For ind = 1 To iRow。arr = Split(Sheets(1).Cells(ind.1).Value.";*";)。iNum = UBound(arr) - LBound(arr)。For i = 0 To iNum。
推荐度:
导读Dim arr() As String。Dim oRegExp As Object。Dim oMatches As Object。Dim iNum As Integer。';定义正则对象。Set oRegExp = CreateObject(";vbscript.regexp";)。Dim iRow As Integer。iRow = Sheets(1).UsedRange.Rows.Count。For ind = 1 To iRow。arr = Split(Sheets(1).Cells(ind.1).Value.";*";)。iNum = UBound(arr) - LBound(arr)。For i = 0 To iNum。


Sub test()
Dim arr() As String
Dim oRegExp As Object
Dim oMatches As Object
Dim iNum As Integer
'定义正则对象
Set oRegExp = CreateObject("vbscript.regexp")
Dim iRow As Integer
iRow = Sheets(1).UsedRange.Rows.Count
For ind = 1 To iRow
arr = Split(Sheets(1).Cells(ind, 1).Value, "*")
iNum = UBound(arr) - LBound(arr)
For i = 0 To iNum
With oRegExp
.Global = True
.IgnoreCase = True
.Pattern = "[0-9]+"
Set oMatches = .Execute(arr(i))
End With
Sheets(1).Cells(ind, i + 2).Value = oMatches(0)
Sheets(1).Cells(ind, 8).Value = Sheets(1).Cells(ind, 8).Value + CInt(oMatches(0))
Set oMatches = Nothing
Next
Next
End Sub
在上述代码中,我们定义了一个名为test的子过程。通过创建一个正则表达式对象oRegExp,我们能够匹配并提取字符串中的数字。
首先,通过Sheets(1).UsedRange.Rows.Count获取当前工作表中已使用的行数,然后通过For循环遍历每一行的数据。
在每次循环中,我们使用Split函数将单元格中的值按照*符号分割成数组arr。接着,我们计算数组的长度iNum,并再次使用For循环遍历数组中的每一个元素。
在With语句块中,我们设置正则表达式的全局匹配、忽略大小写和模式。模式设置为"[0-9]+",用于匹配一个或多个连续的数字。通过Execute方法,我们可以找到所有匹配的数字,并将其存储在oMatches集合中。
然后,我们将在单元格ind+i+2中设置匹配的第一个数字,并将该数字的整数值加到单元格ind+8的当前值上。最后,我们清空oMatches集合。
通过上述过程,我们可以从每行的字符串中提取出所有连续的数字,并进行相应的处理。
这个子过程主要应用于从含有星号分隔的数据中提取数字,并对这些数字进行累加处理。
在实际应用中,你可以根据需求调整模式和处理逻辑,以满足不同的数据处理需求。
例如,如果你需要匹配特定范围内的数字,可以调整模式为"[1-9][0-9]{0,2}",以匹配1到999之间的数字。
此外,如果你需要对提取的数字进行其他操作,如计算平均值或统计数量,可以根据需要修改代码。
希望这个例子能帮助你更好地理解和使用正则表达式在VBA中的应用。
如果你在编写类似代码时遇到问题,欢迎随时提问。
祝你编程愉快!

文档

Excel 求教vba中一个正则表达式的写法

Dim arr() As String。Dim oRegExp As Object。Dim oMatches As Object。Dim iNum As Integer。';定义正则对象。Set oRegExp = CreateObject(";vbscript.regexp";)。Dim iRow As Integer。iRow = Sheets(1).UsedRange.Rows.Count。For ind = 1 To iRow。arr = Split(Sheets(1).Cells(ind.1).Value.";*";)。iNum = UBound(arr) - LBound(arr)。For i = 0 To iNum。
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top