将 TEXTJOIN 与 FILTER 结合使用并引用溢出范围

Use TEXTJOIN with FILTER and reference to a spill range

我正在尝试使用 TEXTJOIN 和 FILTER 并引用溢出范围来查询存储在 Excel 中的销售列表,但这不起作用。

上下文如下:

这是我在报告中尝试过的 sheet:

不幸的是,最后一个公式不起作用:

缺少溢出让我怀疑 FILTER 函数中的 # 引用是否被识别...

我怎样才能让这个公式起作用?

Sales table Report with TEXTJOIN function not working

在你的 A2 中,你可以这样做:

=LET( data, tabSales[[Date]:[Customer]],
       sData, SORTBY(data,INDEX(data,,1),-1),
       yr, YEAR(INDEX(sData, , 1)), cust, INDEX(sData, , 2),
       uYrs, TRANSPOSE(SORT(UNIQUE(yr),,-1)),
       CTA, SORT(UNIQUE(TRANSPOSE(IF(yr=uYrs,cust,"")),TRUE),,,TRUE),
       cStr, LET( m, CTA,
                   rSeq, SEQUENCE( ROWS(m) ),
                   L, MMULT( LEN(m)--(m<>""), SIGN( SEQUENCE( COLUMNS(m) ) ) ) - 1,
                   i, MMULT(--( TRANSPOSE( rSeq ) < rSeq ), L ) + rSeq,
                  IFERROR( MID( TEXTJOIN( ",", TRUE, m ), i, L ), "" ) ),
       CHOOSE( {1,2}, TRANSPOSE(uYrs), cStr ) )

其中输入是原始销售日期和客户名称,作为放置在 data 中的动态数组。由于 tabSales 的结构适​​用于此方法,此方法从日期计算年份而不是将其作为输入。

这是一个沉重的解决方案,如果是我,我会把你的公式放在 B2 中并拖下来。但我偶然发现了你的问题并意识到它与这个问题的相似之处: 这似乎是一个普遍的问题类型。因此,将一个解决方案放入另一个解决方案似乎是合乎逻辑的。

LET 的第一部分将数据分解为客户和年份,并形成一个排序的唯一数组,称为 CTA(客户时间线数组)。然后将其输入 cStr 进行逐行文本连接(在这种情况下,它是逐年)。最后一行使用 CHOOSE 将唯一年份 (uYrs) 与 cStr 合并到一个动态数组中。

结果是一个动态数组,其中包含按降序排列的年份和按年份连接的唯一客户名称。仅对最近一年进行排序,但这不是必需的。可能是多几行的特征,但是公式已经很长了。

将近三个月后,我确信这没有任何价值,但出于好奇,我得到了一个可行的解决方案,并认为也许值得发布。在这种情况下,重要的不是答案,而是方法。