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

时间:2014-07-28 14:43:06

标签: excel excel-formula excel-2010

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

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

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

但是,这会返回不正确的值。具体来说,它在包含1(或更大)的行之后返回行,并跳过第一行。即。

KitList

[项目] | [数量]

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

返回

  • 项目b
  • 项目d
  • 项目e

我认为这是由于ROW命令的一些交互计数表的标题以及它们中的数据,因此用标题读取整个范围,并在返回值中给出一个额外的行。有没有办法,在最后的ROW命令中通过结构化引用指定我需要的行?这会解决问题吗?

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

编辑:我的原始答案在复制时没有产生所需的结果。

我认为这就是你想要的:

=INDEX(KitList[Item],SMALL(IF(KitList[Quantity]>0,ROW(KitList[Quantity])-ROW(KitList[#Headers])),ROW(1:1)))

这也允许您将源Table移动到任何您想要的位置,即标题行不必是1:1,结果也可以位于任何位置。

enter image description here

答案 2 :(得分:-2)

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

通过指定我想要包含的所有'套件清单表,数据和标题,而不仅仅是标题,我已设法解决问题。但是看起来仍然很尴尬。