Excel 对数组结果的过滤函数

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

作为背景,我的工作需要我制作大量的模拟数据。大到数百行或数千行,数组公式似乎是扩展这些活动的最佳选择。说到问题了。

我有2个数组see here。第一个是一列中的帐户列表,另一列中是拥有该帐户的代表。我的第二个数组只是代表的随机数组。在第二个数组中,我想根据第一个数组中的分配选择每个代表拥有的帐户之一。这些数组的大小不同,第二个数组要大得多,因为它只是随机选择的代表,每个代表都重复多次。

两个数组中的所有列都是使用 # 引用和构建数组从其他动态数组函数生成的。

这是我最初想出的公式。本质上,我试图生成查找代表拥有的过滤后的帐户数组,然后从该过滤后的数组中选择一个随机帐户。

=LET(
acctlist,$L$2#,
ownerlist,$M$2#,
replookuparray,Q2#,
filterbyowner,FILTER(acctlist,ownerlist=replookuparray),
INDEX(filterbyowner,RANDBETWEEN(1,ROWS(filterbyowner))))

我从这个公式中得到一个值错误。如果我从replookuparray中的Q2#中删除#,它会产生正确的结果,但我希望它为整个数组2产生结果,这样我就不必在整个范围内复制粘贴(产生所有这些的数字)数组是易失性的,因此它们经常发生变化,并且拥有一个非动态数组会使文件的用处大大降低)。

有什么方法可以将此逻辑应用于第二个数组,以便我可以保持动态数组的使用?

excel filter dynamic-arrays
1个回答
0
投票

使用 ISNUMBER(MATCH())

FILTER(acctlist,ISNUMBER(MATCH(ownerlist,replookuparray,0))

总共:

=LET(
acctlist,$L$2#,
ownerlist,$M$2#,
replookuparray,Q2#,
filterbyowner,FILTER(acctlist,ISNUMBER(MATCH(ownerlist,replookuparray,0)),
INDEX(filterbyowner,RANDBETWEEN(1,ROWS(filterbyowner))))
© www.soinside.com 2019 - 2024. All rights reserved.