我在Excel中有一个单元格,在单元格A1中包含一个长字符串:
"ABC12+BED58,YZ001"
我有以下正则表达式来匹配我的字符串中的一些特定变量
strPattern = "[A-Z]{1,3}[0-9]{2,4}"
基本上,我需要编写一个宏或一个函数(我更喜欢一个函数),它将填充单元格A2,A3,A4,如下所示:
ABC12
BED58
YZ001
问题是,字符串中有一些不确定的参数(例如,它可以一直到A200)。
我正在考虑一个能够返回第N个唯一匹配的函数get_n_variables(str, n)
到目前为止,这是我的进展,但函数返回#VALUE!
Function simpleCellRegex(Myrange As Range) As String
Dim regEx As New RegExp
Dim strPattern As String
Dim strInput As String
Dim matches As Object
strPattern = "[A-Z]{1,3}[0-9]{2,4}"
If strPattern <> "" Then
strInput = Myrange.Value
strReplace = ""
With regEx
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
If regEx.Test(strInput) Then
Set matches = regEx.Execute(strInput)
simpleCellRegex = matches(0).SubMatches(0)
Else
simpleCellRegex = "Not matched"
End If
End If
End Function
答案 0 :(得分:1)
您无法在单元格中放置函数来更改其他单元格。功能不起作用。
因此,它应该是 data: $("#period-form").serialize() + '&idCompany=' + idCompany
,就像这样,例如(使用我们的输入字符串输出所选单元格下的匹配项):
sub
输出:
答案 1 :(得分:0)
如果使用数组
,实际上仍然可以使用函数B1:D1
=simpleCellRegex(A1)
并按 CTRL + SHIFT + ENTER 如果您不知道在多个单元格中输入的匹配数量多于可能匹配的数量
码
Function simpleCellRegex(StrIn As String) As Variant
Dim regEx As Object
Dim regMC As Object
Dim X
Dim strPattern As String
Dim lngCnt As Long
strPattern = "[A-Z]{1,3}[0-9]{2,4}"
Set regEx = CreateObject("vbscript.regexp")
With regEx
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
If .Test(StrIn) Then
Set regMC = .Execute(StrIn)
ReDim X(0 To regMC.Count - 1) As String
For lngCnt = 0 To UBound(X)
X(lngCnt) = regMC(lngCnt)
Next
simpleCellRegex = X
Else
simpleCellRegex = "Not matched"
End If
End With
End Function