【问题标题】:Append or prepend to array without VBA/UDF在没有 VBA/UDF 的情况下追加或添加到数组
【发布时间】:2011-10-13 14:15:28
【问题描述】:

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

【问题讨论】:

  • AFAIK,没有公式可以做到这一点,并且 VBA 中没有 append 函数。但是,您可以使用 Chris Pearson 中的 ConcatenateArrays 函数
  • JMax - 感谢您的指点!我看了一下 ConcatenateArrays 及其正是我想要完成的(我只需要用我自己的函数包装该函数,该函数返回结果数组,而不是布尔值 true/false)。您能否将其发布为答案,以便我给予您信任?
  • 如果它是一个单一的值,你为什么不只是 Redim 保留多 1 个元素的数组,然后添加它而不是运行 ConcatenateArrays?
  • 其实我认为 InsertElementIntoArray 是这样做的。
  • @SFun28:你应该看看 Chris 的回答。如果它更适合,你可能会更好地接受他的回答

标签: arrays excel excel-2007 excel-2010


【解决方案1】:

正如我们在 cmets 中所讨论的,这里有一个可能的答案:

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 所示

    【讨论】:

    • 不错的一个!这也让我想起了this article (from Chip Pearson again,他解释了如何从 UDF 中返回和使用数组
    • 克里斯 - 我尝试了以下方法:=SUM({1,2,3,4}) 当然返回 10。但是,=SUM({1,2,3,4 }&A1) 其中 A1 是数字返回 0。无论公式是否作为数组公式输入,都会出现这种情况。想法?
    • Chris - 我认为您建议将字符串连接到数组的每个元素,而不是将单个元素附加到整个数组?
    • =SUM({1,2,3,4}&A1) 返回 0 的原因是 & 是字符串连接。试试Sum({1,2,3,4}+A1) = 14
    • 是的。我的示例演示了字符串连接,因为这就是我解释您的问题的方式。也可以使用其他运算符。如果您对您正在尝试做的事情进行更多解释,我可能会提供更多帮助
    猜你喜欢
    • 1970-01-01
    • 2021-02-22
    • 2016-10-13
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 2016-12-03
    • 1970-01-01
    • 2020-01-05
    相关资源
    最近更新 更多