我找到了一个漂亮的RegEx功能,我正在使用它(见下文)。该函数输出一个数组。如果我只需要数组的第一个元素,这很好。但是我试图从引文数据中提取作者,所以我需要从这个输出中提取多个项目。
我知道Excel工作表中的数组。所以我尝试了= {ReFind(A3,“[^()] +”)},选择一个区域并按下ctrl + shift + enter,但它返回一个错误并且{= ReFind(A3,“[^()] + “)}只是在单元格中复制公式。
有没有办法让函数使用公式将数组输出到多个单元格?我可以在不写更多vba的情况下离开吗?
Function ReFind(FindIn, FindWhat As String, _
Optional IgnoreCase As Boolean = False)
Dim i As Long
Dim matchCount As Integer
Dim RE As Object, allMatches As Object, aMatch As Object
Set RE = CreateObject("vbscript.regexp")
RE.Pattern = FindWhat
RE.IgnoreCase = IgnoreCase
RE.Global = True
Set allMatches = RE.Execute(FindIn)
matchCount = allMatches.Count
If matchCount >= 1 Then
ReDim rslt(0 To allMatches.Count - 1)
For i = 0 To allMatches.Count - 1
rslt(i) = allMatches(i).Value
Next i
ReFind = rslt
Else
ReFind = ""
End If
End Function
答案 0 :(得分:2)
您需要返回一个与调用单元格范围匹配的二维数组(以便您将其作为多单元格数组输入(不要输入{}只需选择单元格,输入公式并按Control-移位输入)) 您当前正在返回一维数组