MS Excel - 连接两个过滤表

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

为什么这个公式(有效)显示两个过滤表?

摘自 Stackoverflow,Chris Neilsen,2021 年 8 月 15 日:

=LET(x, table1, y, table2,
rows1, ROWS(x), rows2, ROWS(y),
myrows, SEQUENCE(rows1+rows2),
mycols, SEQUENCE(1,COLUMNS(x)),
IF(myrows<=rows1, x, INDEX(y, myrows-rows1, mycols)))

就是LET()中的计算步骤:

如果(我的行<=rows1, x, INDEX(y, myrows-rows1, mycols))

这让我很困惑。看来应该产生 x 或 y,而不是两者。 谢谢。

我仔细地研究了公式并独立测试了公式的部分内容。

excel join filter formula
1个回答
0
投票

该公式基于数字序列

myRows
。如果您在 let 语句中显示该变量,您将看到一个列表,从 1 到两个表的行数之和。

因此,从数字行序列中,它正在评估行数是否超过第一个表中的行数。如果是这样,它将返回第一个表。如果没有,则使用索引在第二个表中查找相应的值。

如果 if 语句通过显示以相同的方式一致地表示每个表,可能会更清楚

IF(myrows<=rows1,
   INDEX(x, myrows, mycols), 
   INDEX(y, myrows-rows1, mycols))`

您可以通过将各种变量放在 let 语句的末尾来输出它们。所以这里是序列变量

myRows

=LET(x, Table1, y, Table2,
rows1, ROWS(x), rows2, ROWS(y),
myrows, SEQUENCE(rows1+rows2),
mycols, SEQUENCE(1,COLUMNS(x)),endResult,
IF(myrows<=rows1,  INDEX(x, myrows, mycols), INDEX(y, myrows-rows1, mycols)),myrows)

也许这个插图有帮助:

© www.soinside.com 2019 - 2024. All rights reserved.