无需 VBA/UDF 即可追加或添加到数组

问题描述 投票:0回答:3

在 Excel 中,是否有内置公式/函数可以将值附加或添加到数组? 因此,假设我有自己的 UDF MyFunc(...),它返回一个值数组。 我可以使用对单个单元格的引用向该结果附加或预先添加单个值吗?

arrays excel excel-2007 excel-2010
3个回答
2
投票

正如我们在评论中讨论的,这是一个可能的答案:

AFAIK,没有公式可以做到这一点,并且 VBA 中没有附加函数。然而,您可以使用

Chip Pearson
中的 ConcatenateArrays

函数

2
投票

这可以使用标准 Excel 数组函数来实现。

为了便于说明,我们假设 MyFunc 是

Function MyFunc(r As Range) As Variant
    MyFunc = r.Value
End Function

如果传递的范围超过一个单元格,则返回一个二维数组。

当输入像

=D1&MyFunc(A2:C7)&E1
这样的数组公式时,会在 D1 前面加上 E1

它也可以用在标准的非数组公式中,其中需要数组参数,如下面的单元格 D12 所示

enter image description here


0
投票

是的,您可以使用 VSTACK 在 Excel for Microsoft 365 中预先或追加一个值(这并不完全是您想要的,但无论如何......)。它垂直并按顺序附加数组以返回更大的数组(Microsoft): =VSTACK(array1,[array2],...)

如果您只有一个值要添加到数组前面,您可以这样做:

=VSTACK("my value", yourArray)

在您的具体情况下(其中 A2 是您想要添加的值,MyFunc 是您返回数组的函数):

=VSTACK(A2, MyFunc())

您还可以通过更改参数的顺序来附加值:

=VSTACK(MyFunc(), A2)

最后但并非最不重要的一点是,您还可以添加或附加多个值:

=VSTACK(A2, A3, MyFunc(), A4) =VSTACK(MAP(SEQUENCE(nbOfValues), LAMBDA(x, "new value")); MyFunc())

	
© www.soinside.com 2019 - 2024. All rights reserved.