繁体   English   中英

Excel数组公式到多维中间数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM