首页 > 解决方案 > 如何使用动态数组进行结构化引用?

问题描述

这是这个较早线程的后续问题

我有来自 sequence() 函数的输出。我想运行一个计算来总结 sequence() 函数的输出。特别是,我希望它是结构化的,以便我的计算是正确的,即使基础数据获得了额外的行。我将使用示例数据更详细地描述这一点。

假设我的 sequence() 函数的输出如下所示

name      source 
banana    fruits
orange    fruits
peach     fruits
dog       pets
fish      pets
cat       pets

现在假设我想创建一个计算,collated用一个简单的条件总结数据集。

如果这是一张桌子,我会做这样的事情-countifs(tblCollated[name], tblCollated[source], "pets")

无论如何,关键是我不能这样做,因为我不能将 sequence() 的输出放入表中。

标签: excelvba

解决方案


使用 LET 和溢出范围引用,您可以创建更大的自引用复杂函数;

例如,分配您想要的数据列,col = 2然后从溢出范围引用中索引第二列,$A$2#会给出一个溢出列表,其中包含您可以操作的数据

=LET(col,2,list,INDEX($A$2#,,col),list)

然后,您可以进一步操作该列表,以便匹配“Pets”的计数为:

=LET(col,2,list,INDEX($A$2#,,col),COUNTIF(list,"Pets"))

使用更动态的 LET 公式,可以在需要时更轻松地快速更改公式,并且使其更具可读性。

或者您可以在该列表中使用过滤器:

=LET(col,2,list,INDEX($A$2#,,col),ROWS(FILTER(list,list="Pets")))

并允许错误处理(感谢@TM):

=LET(col,2,list,INDEX($A$2#,,col),IFERROR(ROWS(FILTER(list,list="Pets")),0))

推荐阅读