gpt4 book ai didi

arrays - 跳过数组中的列

转载 作者:行者123 更新时间:2023-12-04 20:47:58 26 4
gpt4 key购买 nike

我有一个 VBA 函数,它返回一个要在 Excel 中显示的数组。数组的前两列包含不需要显示的 ID。

有什么方法可以修改 Excel 公式以跳过前两列,而无需返回创建 VBA 帮助程序来剥离列?

公式如下所示,其中括号让数组跨单元格显示:

{=GetCustomers($a$1)}

最佳答案

Excel 最接近内置数组操作的是“INDEX”函数。在您的情况下,如果您的“GetCustomers”例程返回的数组是单行,并且如果您知道它有多长(我猜您是这样做的,因为您将它放入工作表中),您可以获得您想要的通过做这样的事情:

=INDEX(GetCustomers($A$1),{3,4,5})

所以说 GetCustomers() 返回数组 {1,2,"a","b","c"},上面只会返回 {"a","b","c"}。

不过,有多种方法可以让您不必输入索引数组。例如,
=COLUMN(C1:E1)

将返回 {3,4,5},您可以使用它来代替:
=INDEX(GetCustomers($A$1),COLUMN(C1:E1))

不过,这个技巧不适用于真正的二维数组。如果您在正确的位置传入零,'INDEX' 将返回整行或整列,但我不知道如何使其返回二维子集。编辑:你可以做到,但它很麻烦。假设您的数组是 2x5,并且您想要最后三列。你可以使用:
=INDEX(GetCustomers($A$1), {1,1,1;2,2,2}, {3,4,5;3,4,5})

(进一步编辑:克里斯尼尔森在他的回答中提供了一种计算这些数组的好方法。)

Charles Williams 在他的网站上有一个链接,该链接解释了更多关于使用这样的数组的信息:

http://www.decisionmodels.com/optspeedj.htm

他发帖回答我问的这个问题:

Is there any documentation of the behavior of built-in Excel functions called with array arguments?

就个人而言,我使用 VBA 辅助函数来处理此类事情。使用正确的库例程,您可以执行以下操作:
=subseq(GetCustomers($A$1),3,3)

在一维情况下,或:
=hstack(subseq(asCols(GetCustomers($A$1)),3,3))

在二维情况下,它更加清晰。

关于arrays - 跳过数组中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5264082/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com