使用公式将数组从VBA函数输出到Excel工作表

我发现我正在使用一个漂亮的正则expression式函数(见下文)。 该函数输出一个数组。 这很好,如果我只需要数组的第一个元素。 但是我试图从引用数据中提取作者,所以我需要从这个输出中提取多个项目。

我知道Excel表格中的数组。 所以我尝试了= {ReFind(A3,“[^()] +”)},select一个区域并按下ctrl + shift + enter,但是它返回一个错误,并且{= ReFind(A3,“[^()] + “)}只是复制单元格中的公式。

有没有办法让function输出数组使用公式的多个单元格? 我可以离开,而不必写更多的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 

您需要返回一个与调用单元格范围相匹配的2维数组(以便您将其input为多单元数组公式(不要input{}),只需select单元格,input公式并按Control-shift-enter ))你现在正在返回一维数组