Excel 使用带有结构化引用的行()按条件返回所选记录的列表
我的任务是,如果第一个表“KitList”中的记录数量为1或更大,则从一个表(使用结构化引用)中的记录返回项目列表,从另一个表(使用结构化引用)返回项目列表 目前,我最接近的结果是使用以下公式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 [项目]|[数量
=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。它“实际上与吉他手不同”。尝试将您的任一解决方案定位到顶行以外的任何位置,它将不起作用。我不介意你没有选择我的答案,而是你自己的?你的答案比我的答案更“有效地和吉他手一样”。如果你愿意,选择他的。或者没有。你有,所以我现在没有争吵,不能。除非答案被编辑,否则我的投票将被锁定。编辑我的答案以包含屏幕截图。两者都是可移动的(如屏幕截图所示),因此您的解释完全是错误的。最初可能没有指定可移动性,但如果需要最少的额外复杂性(在本例中,零额外复杂性),则应始终首选更健壮的解决方案。此外,最初的规范几乎和现在选择答案的标准一样模糊。我仍然看不出你的答案比我的更好。但不管怎样,伙计。