首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >跳过数组中的列

跳过数组中的列
EN

Stack Overflow用户
提问于 2011-03-11 02:31:35
回答 4查看 4.3K关注 0票数 2

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

有没有办法修改Excel公式以跳过前两列,而无需返回创建VBA帮助器来剥离这两列?

公式如下所示,其中的括号允许数组跨一系列单元格显示:

代码语言:javascript
运行
复制
{=GetCustomers($a$1)}
EN

回答 4

Stack Overflow用户

发布于 2011-03-11 03:41:12

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

代码语言:javascript
运行
复制
=INDEX(GetCustomers($A$1),{3,4,5})

因此,假设GetCustomers()返回数组{1,2,"a","b","c"},上面只返回{"a","b","c"}。

不过,有多种方法可以省去输入索引数组的麻烦。例如,

代码语言:javascript
运行
复制
=COLUMN(C1:E1)

将返回{3,4,5},您可以改用它:

代码语言:javascript
运行
复制
=INDEX(GetCustomers($A$1),COLUMN(C1:E1))

然而,这种技巧不适用于真正的二维数组。如果你在正确的地方传入一个零,‘'INDEX’会返回一整行或一整列,但我不知道如何让它返回一个二维子集。编辑:你可以这样做,但它很麻烦。假设您的数组是2x5,您想要最后三列。您可以使用:

代码语言:javascript
运行
复制
=INDEX(GetCustomers($A$1), {1,1,1;2,2,2}, {3,4,5;3,4,5})

(进一步编辑: chris neilsen在他的答案中提供了一种计算这些数组的很好的方法。)

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帮助器函数来做这样的事情。使用正确的库例程,您可以执行以下操作:

代码语言:javascript
运行
复制
=subseq(GetCustomers($A$1),3,3)

在一维情况下,或者:

代码语言:javascript
运行
复制
=hstack(subseq(asCols(GetCustomers($A$1)),3,3))

在2-D的情况下,这要清楚得多。

票数 1
EN

Stack Overflow用户

发布于 2011-03-11 02:43:54

最简单的解决方案是只隐藏前两列

另一种方法是使用OFFSET调整返回数组的大小

语法是

代码语言:javascript
运行
复制
OFFSET(reference,rows,cols,height,width)
票数 0
EN

Stack Overflow用户

发布于 2011-03-11 03:34:16

我建议将'GetCustomers‘函数修改为包含一个可选的布尔变量,以告知该函数返回所有列,或仅返回单个列。这将是最干净的解决方案,而不是试图在公式端处理它。

代码语言:javascript
运行
复制
Public Function GetCustomers(rng as Range, Optional stripColumns as Boolean = False) as Variant()

    If stripColumns Then  'Resize array to meet your needs

    Else  'return full sized array

    End If
End Function
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5264082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档