对多张工作表使用 XLOOKUP - 溢出功能未按预期工作,但相同的非溢出复制公式正在工作

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

Excel Spreadsheet

你好,

我正在尝试更有效地利用溢出函数,这样我就不必像我们团队过去那样拥有数百行公式。

我已经在B5#中写了一个溢出函数,如下:

=FILTER('Certification table'!A:A,(ISNUMBER(SEARCH(C2,'Certification table'!C:C)))+('Certification table'!C:C="All"),"")

这会找到特定团队(在单元格 C2 中列出)的某人应拥有的所有认证。这按预期工作。

然后我在单元格 C5# 中创建了一个函数,如下所示:

=XLOOKUP(B5#,FILTER('Advance report'!A:A,'Advance report'!E:E=$D$2),FILTER('Advance report'!M:M,'Advance report'!E:E=$D$2),
XLOOKUP(B5#,FILTER('Other Training (2)'!A:A,'Other Training (2)'!D:D=$D$2),FILTER('Other Training (2)'!G:G,'Other Training (2)'!D:D=$D$2),""))

这应该能够找到针对所列人员的电子邮件地址的任何认证的状态,但由于这些认证被分成两张表,因此它似乎没有按预期工作。

“高级报告”表直接从某人完成的任何在线培训中提取,“其他培训”表包含每当员工完成具有相关认证的面对面课程时手动输入的项目,因此我们可以' t 合并两张表而不重复数据。

“预告报告”相关栏目: 答:认证名称 E:人员的电子邮件地址 M:认证状态

“其他培训”相关栏目: 答:认证名称 D:人员的电子邮件地址 G:认证状态

我已将以下内容写入单元格 D5:

=XLOOKUP(B5,FILTER('Advance report'!A:A,'Advance report'!E:E=$D$2),FILTER('Advance report'!M:M,'Advance report'!E:E=$D$2),
XLOOKUP(B5,FILTER('Other Training (2)'!A:A,'Other Training (2)'!D:D=$D$2),FILTER('Other Training (2)'!G:G,'Other Training (2)'!D:D=$D$2),""))

然后将该公式沿列复制到单元格 D23。此公式与 C5# 中的公式相同,只是它使用对范围内每个相关单元格(B5、B6 等)的引用,而不是整个溢出范围 B5#。

如图所示,这会返回该员工在第 22 行完成的额外认证,因为它来自“其他培训”表。由于某种原因,这没有显示在该函数的溢出版本中。

我对进入溢出函数感到非常兴奋,因为在我加入之前,我们的团队已经使用了相当过时的公式一段时间了,当函数一天返回数千行,然后第二天返回 10 行时,它们可能会变得笨拙,其中有数千行多行公式仍然需要时间来计算并使文件大小变得巨大!我想知道是否可以对此做一些事情,或者我是否需要恢复到“旧”方式。

如果我还能做些什么来让这个更干净,也请告诉我!我习惯写VBA而不是excel函数。

excel worksheet-function excel-365 xlookup
1个回答
0
投票

我认为使用 BYROW 函数可以工作 - 在我设置的快速草稿中似乎没问题。请尝试:

=BYROW(B5#, LAMBDA(array, XLOOKUP(array,FILTER('提前报告'!A:A,'提前报告'!E:E=$D$2),FILTER('提前报告'!M:M ,'提前报告'!E:E=$D$2), XLOOKUP(array,FILTER('其他训练(2)'!A:A,'其他训练(2)'!D:D=$D$2),FILTER('其他训练(2)'!G:G,'其他训练(2)'!D:D=$D$2),""))))

这会将您的公式独立地应用于 B5# 数组的每一行,但输出动态范围。

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