我在工作表上有一个名为“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$6
在List!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
见附件工作簿- 尝试改为C1
2
如果名称重复(在指定的标准内),那么您将获得重复的名称 - 可以调整公式以仅显示每个名称一次,即此版本
=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
如果您想要一个带有公式的解决方案,那么底部就会有空白。无法让包含公式的单元格随着列表的变化而增大或缩小。带有公式的表格应与原始数据的高度相同,以确保您不会错过任何内容,例如,如果每个人都有列1
。B
如果您知道永远不会发生这种情况,您可以减少工作表中的行数List
,但这是一种风险。这是一个公式,它将按顺序返回所有行,底部有空白。这是一个数组公式,因此使用Ctrl+ Shift+输入它Enter:(Barry Houdini 已经提交了类似的解决方案)
{=IFERROR(INDEX(DealSetup!$A:$A,SMALL(IF(DealSetup!$B:$B=1,ROW(DealSetup!$B:$B)),ROW())),"")}
如果您不能接受底部的空白,则必须使用数据透视表或 VBA 解决方案。这个问题相当老了,所以不幸的是,我预计近期不会再看到 OP 回来了。