根据条件列出值

根据条件列出值

我在工作表上有一个名为“DealSetup”的表格,它看起来像这个简化版本:

   A           B
1  John Doe    1
2  Jane Doe    1
3  Mark Doe    2
4  Doug Doe    1
5  Mary Doe    2

我在工作表“List”上有一张表格,我想将“DealSetup”工作表中的名称拉入其中。但是,我只想根据 B 列中的值列出名称。

例如,在“List”工作表上,我想使用某种类型的 INDEX 或数组函数来查找“DealSetup”工作表并提取 B 列值为 1 的所有人并列出他们。但我不希望有任何空白。它应该看起来像这样:

 EVERYONE WITH B COLUMN VALUE OF 1:  
   A  
1  John Doe
2  Jane Doe
3  Doug Doe

或者像这样:

 EVERYONE WITH B COLUMN VALUE OF 2:  
   A  
1  Mark Doe
2  Mary Doe

我尝试了一些方法,但都没有成功。不知道下一步该怎么做,所以任何建议我都会很感激!!

答案1

假设你的数据DealSetup!A$2:B$6List!A2

=IFERROR(INDEX(DealSetup!A$2:A$6,SMALL(IF(DealSetup!B$2:B$6=C$1,ROW(DealSetup!A$2:A$6)-ROW(DealSetup!A$2)+1),ROWS(A$2:A2))),"")

CTRL使用+ SHIFT+确认ENTER并向下复制,直至需要复制的部分。如果名字用完,则会显示空白。

假设标准(1、2 等)C1

见附件工作簿- 尝试改为C12

如果名称重复(在指定的标准内),那么您将获得重复的名称 - 可以调整公式以仅显示每个名称一次,即此版本

=IFERROR(INDEX(DealSetup!A$2:A$6,SMALL(IF(DealSetup!B$2:B$6=C$1,IF(COUNTIF(A$1:A1,DealSetup!A$2:A$6)=0,ROW(DealSetup!A$2:A$6)-ROW(DealSetup!A$2)+1)),1)),"")

答案2

如果您想要一个带有公式的解决方案,那么底部就会有空白。无法让包含公式的单元格随着列表的变化而增大或缩小。带有公式的表格应与原始数据的高度相同,以确保您不会错过任何内容,例如,如果每个人都有列1B如果您知道永远不会发生这种情况,您可以减少工作表中的行数List,但这是一种风险。这是一个公式,它将按顺序返回所有行,底部有空白。这是一个数组公式,因此使用Ctrl+ Shift+输入它Enter:(Barry Houdini 已经提交了类似的解决方案)

{=IFERROR(INDEX(DealSetup!$A:$A,SMALL(IF(DealSetup!$B:$B=1,ROW(DealSetup!$B:$B)),ROW())),"")}

如果您不能接受底部的空白,则必须使用数据透视表或 VBA 解决方案。这个问题相当老了,所以不幸的是,我预计近期不会再看到 OP 回来了。

相关内容