当逻辑为假时 Excel 引用数组中的下一行

当逻辑为假时 Excel 引用数组中的下一行

如果满足条件,我希望 Excel 工作表中的选项卡引用不同页面中的字段;如果不满足条件,我希望跳过该行,并移动到满足条件的下一行。

我的数据库中存储了被诊断患有癌症(乳腺癌和前列腺癌)的个人。我希望乳腺跟踪页面仅填充被诊断患有乳腺癌的个人(参考“参与者信息”表;D 列)。目前我使用声明IF来填充此信息,但我的工作表填充了空行,因为这些行是前列腺癌(意味着它们不符合IF声明标准)。

我找到了这个公式:

{=IFERROR(INDEX('Participant Information'!A:A,SMALL(IF('Participant Information'!$D$2:$D$300="Breast",ROW('Participant Information'!$D$2:$D$300)),ROWS(1:1))),"")}

但我无法理解它是如何工作的。它也无法达到我的目的。

TL;DR:我需要引用单独选项卡上的单元格,当条件不满足时不会出现空白行。我想到了邮件合并中使用的“下一个记录”功能。

答案1

如上所述,所述函数一旦完成就可以完成所需的输出,这里有一个示例数据,它反映了所需的结果:

在此处输入图片描述


• 单元格中使用的公式D3

=IFERROR(INDEX('Participant Information'!$B$5:$B$15,
 AGGREGATE(15,6,(ROW('Participant Information'!$B$5:$E$15)-ROW('Participant Information'!$B$5)+1)/
 ('Participant Information'!$E$5:$E$15=Records!$C$2),ROWS(Records!D$2:D2))),"")

  • AGGREGATE()函数用于执行聚合计算,这里它SMALL()表示15
  • 上述函数中的第二个参数6表示忽略错误值。
  • 第三个参数是一个数组值,其中 (ROW('Participant Information'!$B$5:$E$15)-ROW('Participant Information'!$B$5)+1)计算所述范围的行号。 ('Participant Information'!$E$5:$E$15=Records!$C$2)检查相应的列是否E与条件匹配,这里它Breast在单元格中C2。接下来,通过将返回值除以条件返回来创建一个数组,ROW()以仅获取满足条件的返回值,即,TRUE而将不满足条件的其他返回值除以,0因此返回错误并被忽略。
  • ROWS(Records!D$2:D2)返回最小值,
  • INDEX()函数根据最小值(即行号)返回范围中的名称。
  • IFERROR()用于在不再检索任何记录时忽略任何错误值。

因此,对于您的工作表来说,

=IFERROR(INDEX('Participant Information'!A$2:A$300,
  AGGREGATE(15,6,(ROW('Participant Information'!D$2:D$300)-ROW(D$2)+1)/
 ('Participant Information'!D$2:D$300="Breast"),ROWS(1:1))),"")

使用FILTER()它也非常简单和容易:

=FILTER('Participant Information'!A$2:A$300,
 'Participant Information'!D$2:D$300="Breast","Not Found")

带公式的样本数据

相关内容