如何返回数组中的array()函数在单元格中使用数组公式(matricial公式):用于在多单元格中分割texte

我正在写一个函数在VBA中在Excel公式中使用,没关系,如果我的函数返回一个单一的值:

=MYVALUE(A1) 

现在我写了另一个函数返回一个数组(1,2,3,4,…),我用数组公式replace我的Excel公式:

 {=MYARRAY(A1)} 

但是当我拉伸公式时,所有的单元格显示我的数组第一个值 。 为什么?

这是我的VBA源代码(complement.xlam):

 Function MYVALUE(x as integer) MYVALUE = 123 End Eunction Function MYARRAY(x as integer) MYARRAY = Array(10,20,30) End Eunction 

数组公式需要像这样使用

我的VBA在多个单元格中分割文本

 Function EXPLODE_V(texte As String, delimiter As String) EXPLODE_V = Application.WorksheetFunction.Transpose(Split(texte, delimiter)) End Function Function EXPLODE_H(texte As String, delimiter As String) EXPLODE_H = Split(texte, delimiter) End Function 
  1. select区域C3:C7这定义了vector的方向。
  2. F2进行编辑并键入以下公式: =EXPLODE_V($B$3;" ")
  3. CTRL + SHIFT + ENTER通常ENTER的 INSTEAD ) – 这将定义一个ARRAY公式,并将导致{=EXPLODE_V($B$3;" ")}括号(但不要手动input)。

    分裂细胞texte的样品

原因是你的vector实际上是水平显示的,如果你创build一个水平的数组公式,你会得到你的数字。 对于你有一个垂直向量使用以下内容:

 Function MYARRAY(x As Integer) MYARRAY = Application.WorksheetFunction.Transpose(Array(10, 20, 30)) End Function 

单元格不会显示数组,您必须将该数组翻译为表单上的单元格范围/数组。 或者,您可以尝试将数组转换为分隔string,只要不使用非常大的数组,就可能工作。

 Public Function MYARRAY(x As Integer) Dim tmpArray() As Variant Dim i As Long Dim arrayString As String tmpArray = Array(10, 20, 30) For i = LBound(tmpArray) To UBound(tmpArray) If arrayString = vbNullString Then arrayString = tmpArray(i) Else: arrayString = arrayString & ", " & tmpArray(i) End If Next MYARRAY = "{" & arrayString & "}" End Function