我有一个很长的清单,其中包含需要分发到我的各种表格上的项目。我需要该列表来从列表中排除已分发到任何工作表上的项目。 列表中的项目按两个标准排序。
下面是我的代码片段,当我添加所有工作表时,它会很长。手动输入不是问题 - 字符串的长度似乎是:)
=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 并不有趣。
您可以使用 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")