我需要帮助找到5+字符模式之间的2个单元格在同一工作表。
我在网上找到了建立示例代码的信息,我想我可以调整它来修复,但不起作用。有人能帮助我吗?
以下是我希望实现的目标:
下面是我在C栏中输入的公式:
=Regexpmatch(A1:B1,"^[\S]{5}")
Visual Basic中的代码:模块1(代码)
Public Function RegExpMatch(input_range As Range, pattern As String, Optional match_case As Boolean = True) As Variant
Dim arRes() As Variant 'array to store the results
Dim iInputCurRow, iInputCurCol, cntInputRows, cntInputCols As Long 'index of the current row in the source range, index of the current column in the source range, count of rows, count of columns
On Error GoTo ErrHandl
RegExpMatch = arRes
Set regEx = CreateObject("VBScript.RegExp")
regEx.pattern = pattern
regEx.Global = True
regEx.MultiLine = True
If True = match_case Then
regEx.ignorecase = False
Else
regEx.ignorecase = True
End If
cntInputRows = input_range.Rows.Count
cntInputCols = input_range.Columns.Count
ReDim arRes(1 To cntInputRows, 1 To cntInputCols)
For iInputCurRow = 1 To cntInputRows
For iInputCurCol = 1 To cntInputCols
arRes(iInputCurRow, iInputCurCol) = regEx.Test(input_range.Cells(iInputCurRow, iInputCurCol).Value)
Next
Next
RegExpMatch = arRes
Exit Function
ErrHandl:
RegExpMatch = CVErr(xlErrValue)
End Function
Sub Run()
End Sub
我把这个公式放入C列,在C列和D列都收到了结果。但是,我不知道它甚至拉了什么,因为C列中的所有值都是真的,我看不出为什么我收到了假的模式或原因。
1条答案
按热度按时间4bbkushb1#
正则表达式模式将只返回基于字符串中前五个非空格字符的匹配项。
在我看来,如果两个字符串中存在匹配的Words,并且这些单词的长度为5个或更多字符,那么您真正想要做的是返回
TRUE
。如果不是,请澄清。
@
、.
或从小写字母到大写字母的转换分隔。Space
分隔这可以使用VBA和/或Power Query完成。
下面是一个Power Query解决方案:在Windows Excel 2010+和Excel 365(Windows或Mac)中提供电源查询
使用增强查询的步骤
Data => Get&Transform => from Table/Range
Home => Advanced Editor
Applied Steps
以了解算法