Excel 数组函数 return 找到具有索引和匹配的所有字段
Excel array function return all fields found with index and match
这是我使用的数组函数:
=IFERROR(INDEX('Master Data'!$D:$D3,MATCH(1,(B9='Master Data'!$J:$J3)*('Master Data'!$W:$W3=1),FALSE)),"")
其中 D 是一个项目的名称,J 是一个人的名字,W 是一个标志,用于检查他们是否被分配给一个等于 0 或 1 的项目。B 也是一个人名的实例由单独的列表构建。
它基本上引用主数据和 returns 具有指定条件的任何行。然而,一个人可能有两个实例,其中分配的标志等于 1,因此随着主数据被过滤,函数返回不同的结果。
我遇到的另一个问题是人名也没有重复,所以也许最好的方法是从主数据开始填充分配的 table 中的名字。
这里要求的是数据的一个小例子。左边是主数据,中间是分配的 table 正在构建的,右边是在分配的 table.
中建立名称的员工列表
请注意,主数据中有两个 david smith 的实例,但分配的 table 中只有一个,因为它是用员工列表构建的。
我的想法是使用分配指标等于 1 的数组从主数据中建立分配的 table 中的名称,并完全废弃员工列表,但我真的不确定这是否可能或如何去做。
或者即使有某种方法可以select主数据中指定指标 = 1 的几列?
不确定我是否理解正确。但是如何列出多个查找结果的问题可以通过 SMALL 函数结合获取 ROW 数字数组来实现。
例如有一个 sheet 这样的:
则公式为:
F4向下:
=COUNTIFS($B:$B,$E4,$C:$C,1)
G4 然后复制到G4:J8:
{=INDEX($A:$A00,SMALL(IF($B:$B00=$E4,IF($C:$C00=1,ROW(:00))),COLUMN(A:A)))}
但如果目标只是获得所有已分配资源的筛选列表,则公式可以是
E13:
{=INDEX($B:$B00,MATCH(1,($C:$C00=1)*1,0))}
E14向下:
{=INDEX($B:$B00,MATCH(1,(COUNTIF($E:$E13,$B:$B00)=0)*($C:$C00=1),0))}
{}
中的公式为数组公式。这些在没有大括号的情况下输入到单元格中,然后按 [Ctrl]+[Shift]+[Enter] 完成。
为了更好地理解公式,我没有处理错误值。您可以稍后使用 IFERROR 隐藏错误值。你似乎知道如何做到这一点。
这是我使用的数组函数:
=IFERROR(INDEX('Master Data'!$D:$D3,MATCH(1,(B9='Master Data'!$J:$J3)*('Master Data'!$W:$W3=1),FALSE)),"")
其中 D 是一个项目的名称,J 是一个人的名字,W 是一个标志,用于检查他们是否被分配给一个等于 0 或 1 的项目。B 也是一个人名的实例由单独的列表构建。
它基本上引用主数据和 returns 具有指定条件的任何行。然而,一个人可能有两个实例,其中分配的标志等于 1,因此随着主数据被过滤,函数返回不同的结果。
我遇到的另一个问题是人名也没有重复,所以也许最好的方法是从主数据开始填充分配的 table 中的名字。
这里要求的是数据的一个小例子。左边是主数据,中间是分配的 table 正在构建的,右边是在分配的 table.
中建立名称的员工列表请注意,主数据中有两个 david smith 的实例,但分配的 table 中只有一个,因为它是用员工列表构建的。
我的想法是使用分配指标等于 1 的数组从主数据中建立分配的 table 中的名称,并完全废弃员工列表,但我真的不确定这是否可能或如何去做。
或者即使有某种方法可以select主数据中指定指标 = 1 的几列?
不确定我是否理解正确。但是如何列出多个查找结果的问题可以通过 SMALL 函数结合获取 ROW 数字数组来实现。
例如有一个 sheet 这样的:
则公式为:
F4向下:
=COUNTIFS($B:$B,$E4,$C:$C,1)
G4 然后复制到G4:J8:
{=INDEX($A:$A00,SMALL(IF($B:$B00=$E4,IF($C:$C00=1,ROW(:00))),COLUMN(A:A)))}
但如果目标只是获得所有已分配资源的筛选列表,则公式可以是
E13:
{=INDEX($B:$B00,MATCH(1,($C:$C00=1)*1,0))}
E14向下:
{=INDEX($B:$B00,MATCH(1,(COUNTIF($E:$E13,$B:$B00)=0)*($C:$C00=1),0))}
{}
中的公式为数组公式。这些在没有大括号的情况下输入到单元格中,然后按 [Ctrl]+[Shift]+[Enter] 完成。
为了更好地理解公式,我没有处理错误值。您可以稍后使用 IFERROR 隐藏错误值。你似乎知道如何做到这一点。