Excel VBA中的数组函数

Joe*_*Joe 8 arrays excel vba user-defined-functions

我在VBA中有一个生成字符串数组的函数.从另一个VBA函数调用它时工作正常,但从工作表调用时则不行.

以下是它应该如何使用:

  • 选择A1:A3
  • 写在公式栏中=Test(),然后点击Ctrl-Shift-Enter使其成为一个数组函数
  • A1应该包含A,A2应该包含B,而A3应该包含C

当我实际尝试这个时,它会放入A数组的所有三个单元格.如何将返回的数据Test输入到阵列的不同单元格中?


对于那些想要看到它的人来说,这是函数的代码.请记住,从其他函数调用时,该函数可以正常工作.

Function Test() As String()
    Dim a(1 To 3) As String
    a(1) = "A"
    a(2) = "B"
    a(3) = "C"
    Test = a
End Function
Run Code Online (Sandbox Code Playgroud)

Mik*_*e T 9

如果转置数据,则函数可以正常工作.要做到这一点,您需要Variant()而不是String():

Function Test() As Variant()
    Dim a(1 To 3) As Variant
    a(1) = "A"
    a(2) = "B"
    a(3) = "C"
    Test = Application.Transpose(a)
End Function
Run Code Online (Sandbox Code Playgroud)

  • 如果你想要一个垂直入口集,你可以在你的数组公式中使用`Transpose`而不是在你需要它时使用`Transpose`,如果你想要它的horizintal (2认同)