Excel 使用带有结构化引用的行()按条件返回所选记录的列表

Excel 使用带有结构化引用的行()按条件返回所选记录的列表,excel,excel-formula,excel-2010,Excel,Excel Formula,Excel 2010,我的任务是,如果第一个表“KitList”中的记录数量为1或更大,则从一个表(使用结构化引用)中的记录返回项目列表,从另一个表(使用结构化引用)返回项目列表 目前,我最接近的结果是使用以下公式 =INDEX(KitList[Item],SMALL(IF(KitList[Quantity]>0,ROW(KitList[Quantity])),ROW(1:1))) 但是,这会返回不正确的值。具体来说,它返回包含1(或更大)的行之后的行,并跳过第一行。i、 e KitList [项目]|[数量

我的任务是,如果第一个表“KitList”中的记录数量为1或更大,则从一个表(使用结构化引用)中的记录返回项目列表,从另一个表(使用结构化引用)返回项目列表

目前,我最接近的结果是使用以下公式

=INDEX(KitList[Item],SMALL(IF(KitList[Quantity]>0,ROW(KitList[Quantity])),ROW(1:1)))
但是,这会返回不正确的值。具体来说,它返回包含1(或更大)的行之后的行,并跳过第一行。i、 e

KitList

[项目]|[数量]

  • 项目a | 1
  • 项目b | 0
  • 项目c | 2
  • 项目d | 1
  • 项目e | 0
返回

  • b项
  • 项目d
  • 项目e

我认为这是由于ROW命令的一些交互作用,这些命令对表的标题以及其中的数据进行计数,因此使用标题读取整个范围,并在返回值中提供一个额外的行。在最后一行命令中,是否有方法通过结构化引用指定所需的行?这能解决问题吗?

函数将返回电子表格中的行,而不是结构化数据的行。简易解决方案
第1行

{=INDEX(KitList[[#All],[Item]],SMALL(IF(KitList[Quantity]>0,ROW(KitList[Quantity])),ROW(1:1)))}

通过指定要包含kit list表的“all”、数据和标题(而不仅仅是标题)的索引,我成功地解决了这个问题。不过还是有点尴尬。

编辑:我原来的答案抄下来时并没有得到想要的结果

我想这就是你想要的:

=INDEX(KitList[Item],SMALL(IF(KitList[Quantity]>0,ROW(KitList[Quantity])-ROW(KitList[#Headers])),ROW(1:1)))
这还允许您将源
移动到所需的任何位置,即页眉行不必是
1:1
,结果也可以位于任何位置


我意识到了这一点,我很好奇是否可以以不同的方式指定结构化引用,从而完全避免这个问题-1看起来很笨拙。考虑到您的其他选择,
Row-1
似乎比复杂的数组公式要简单得多……真的吗?当我的答案完全符合问题的标准,并且允许你在需要时移动桌子时,你会认为你自己的答案是正确的???我的观点是,
-行(KitList[#Headers])
在客观上是优越的,因为表格不必在第一行;例如,如果它在第二行,它将返回-2,而不是-1。它“实际上与吉他手不同”。尝试将您的任一解决方案定位到顶行以外的任何位置,它将不起作用。我不介意你没有选择我的答案,而是你自己的?你的答案比我的答案更“有效地和吉他手一样”。如果你愿意,选择他的。或者没有。你有,所以我现在没有争吵,不能。除非答案被编辑,否则我的投票将被锁定。编辑我的答案以包含屏幕截图。两者都是可移动的(如屏幕截图所示),因此您的解释完全是错误的。最初可能没有指定可移动性,但如果需要最少的额外复杂性(在本例中,零额外复杂性),则应始终首选更健壮的解决方案。此外,最初的规范几乎和现在选择答案的标准一样模糊。我仍然看不出你的答案比我的更好。但不管怎样,伙计。