[英]Excel array formula to multi dimensional intermediate arrays
我有以下数据
我想要实现的是这些中间数组
即对于 JohnProject,有两个条目 A 和 C。对于项目 A,第二个表中有两个标签 10 和 6,对于项目 C,有三个标签 22,9,7。 我想将这些作为更大数组公式中的中间数组。
用数组公式
=UNIQUE(IF({"D"}=D2:D9,ROW(D2:D9)))
我可以为 JuliaProject D 和 4,8 实现更接近的结果,但对于任何其他有两个项目的人来说,它不起作用。
=UNIQUE(IF({"A","C"}=D2:D9,ROW(D2:D9)))
我想在其他数组公式中使用数组的形式获得中间结果。
编辑:我的问题的复杂版本。
好的,解决更大的问题。 解释起来有点复杂。 不过我可以试试。 我有一个映射表、真值表和输入数据。 我想看看是否可以使用真值表和映射表来映射输入数据。 所以它有点我想在最后实现的映射。 映射表本身是多对多的,一个项目可以有多个标签,一个标签可以关联多个项目,但是里面没有Person。 纯粹的项目和标签。 真值表有 Person 和 Projects 但没有标签。 我想从独特的人映射到标签。 我可以轻松获取与一个人关联的所有项目(在数组公式中作为中间数组),现在对于我在数组中获取的每个项目,我想找出所有标签并将它们合并到一个数组中。 问题在于映射表中的多对多关系,因为它返回多维数组作为结果而不是单维。 我想得到一个数组(数组公式的中间)来最终搜索声明的标签是否在该列表中。 我希望这是有道理的。
以下数组公式可用于将 USER 与 TAG 连接:
{=AGGREGATE(15,6,INDEX($E$2:$E$9,N(IF(MMULT(--IFERROR(TRANSPOSE(INDEX($B$2:$B$6,N(IF($G2=$A$2:$A$6,ROW($B$2:$B$6)))-1))=$D$2:$D$9,FALSE),ROW($B$2:$B$6)^0),ROW($D$2:$D$9)))-1),COLUMNS($G$2:G2))}
我不知道接下来将在哪里使用公式,但为了显示结果,我将其放入AGGREGATE
函数中。 如果没有AGGREGATE
,则返回包含错误值的数组。
“清洁”公式:
{=INDEX($E$2:$E$9,N(IF(MMULT(--IFERROR(TRANSPOSE(INDEX($B$2:$B$6,N(IF($G2=$A$2:$A$6,ROW($B$2:$B$6)))-1))=$D$2:$D$9,FALSE),ROW($B$2:$B$6)^0),ROW($D$2:$D$9)))-1)}
通过按F9
键点击公式栏中突出显示的公式,以下公式将显示“没有错误值的数组结果”
1]“项目”数组结果,在H2
公式中复制:
=INDEX(B$2:B$6,N(IF(1,AGGREGATE(15,6,ROW(B$1:B$5)/($A$2:$A$6=G2),ROW(INDIRECT("1:"&COUNTIF(A$2:A$6,G2)))))))
2]“标记”数组结果,在I2
公式中复制:
=INDEX(E$2:E$9,N(IF(1,AGGREGATE(15,6,ROW(E$1:E$8)/ISNUMBER(MATCH(D$2:D$9,IF(A$2:A$6=G2,B$2:B$6),0)),ROW(INDIRECT("1:"&COUNT(MATCH(D$2:D$9,IF(A$2:A$6=G2,B$2:B$6),0))))))))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.