在多个 Excel 工作表中搜索值并从列表中排除

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

我有一个很长的清单,其中包含需要分发到我的各种表格上的项目。我需要该列表来从列表中排除已分发到任何工作表上的项目。 列表中的项目按两个标准排序。

下面是我的代码片段,当我添加所有工作表时,它会很长。手动输入不是问题 - 字符串的长度似乎是:)

=FILTER(TableQuery[Item];(NOT(ISNUMBER(XMATCH(TableQuery[Item];Sheet1!$H$10:$H$50;0))))*(NOT(ISNUMBER(XMATCH(TableQuery[Item];Sheet2!$H$10:$H$50;0))))*(NOT(ISNUMBER(XMATCH(TableQuery[Item];Sheet3!$H$10:$H$50;0))))*((TableQuery[Criteria1]<>"")+(TableQuery[Criteria2]))))

当我尝试缩短字符串时,请参见下文,但它不起作用。

=FILTER(TableQuery[Item];(NOT(ISNUMBER(XMATCH(TableQuery[Item];{Sheet1!$H$10:$H$50;Sheet2!$H$10:$H$50;Sheet3!$H$10:$H$50};0))))*((TableQuery[Criteria1]<>"")+(TableQuery[Criteria2]))))

有更聪明的方法来解决这个问题吗?我最终可能会得到超过 100 张。 VBA 并不有趣。

excel excel-formula
1个回答
0
投票

您可以使用 TOCOL 排除空白的展平 3D 参考:

TOCOL(Sheet1:Sheets!H10:H50,1)
(并利用不匹配的错误类型,使用
ISNA
代替
NOT(IS NUMBER())
) 在你的逻辑中使用:
=FILTER(Table1[Item],ISNA(XMATCH(Table1[Item],TOCOL(Sheet1:Sheet3!H10:H50,1)))*((Table1[Criteria1]<>"")+(Table1[Criteria2])),"All items used")

使用分隔符:

=FILTER(TableQuery[Item];ISNA(XMATCH(TableQuery[Item];TOCOL(Sheet1:Sheet3!H10:H50;1)))*((TableQuery[Criteria1]<>"")+(TableQuery[Criteria2]));"All items used")

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