如何让公式读取由其他公式拼写出的单元格范围?

如何让公式读取由其他公式拼写出的单元格范围?

我的最终目标是确定与特定名称关联的唯一值的数量。A 列是数据透视表中的第一列,其中包含名称列表(某些名称列出多次)。B 列是与名称关联的值的列表。C 列是 B 列左侧的 2 个数字。D 列是名称列表(与 A 中相同),但每个名称仅列出一次。在 EI 列中,希望通过引用 D 列中的唯一名称来了解 C 列中有多少个唯一值与 A 列中的每个唯一名称相关联。

我可以使用公式的静态范围来做到这一点

=SUMPRODUCT(1/COUNTIF(C7:C12,C7:C12))

我希望我的范围是动态的,以便当它引用 D 列中的名称时,它会在 A 列中为相同的名称创建值范围,这样它就知道在 C 列中的哪个范围内计算唯一值的数量。

我还可以使用 MATCH 公式来获取第一个值的位置:

="C"&MATCH(D5,$A$1:$A$3879,0)

并使用 MAXIF 公式来获取最后一个值的位置:

="C"&MAX(INDEX(ROW($1:$3879)*($A$1:$A$3879=D5), , ))

将它们放在一起,我就能得到我想要的动态范围。在这个例子中,它是 C7:C12。

我的问题是将这个动态范围插入到我的原始公式中。我希望我可以将它们插入到我的原始公式中,它会将其读取为一个范围。

=SUMPRODUCT(1/COUNTIF("C"&MATCH(D5,$A$1:$A$3879,0)&":"&"C"&MAX(INDEX(ROW($1:$3879)*($A$1:$A$3879=D5), , )),"C"&MATCH(D5,$A$1:$A$3879,0)&":"&"C"&MAX(INDEX(ROW($1:$3879)*($A$1:$A$3879=D5), , ))))

这不管用。我也试过使用文本公式和地址公式来帮助创建范围。但都没有用。

有没有办法让 SUMPRODUCT 公式将我的 match 函数和 maxif 函数读取为一个范围?或者还有其他方法可以做到这一点?

答案1

使用索引:

=INDEX(C:C,MATCH(D5,$A$1:$A$3879,0))

对于全系列,您可以使用:

INDEX(C:C,MATCH(D5,$A$1:$A$3879,0)):INDEX(C:C,MAX(INDEX(ROW($1:$3879)*($A$1:$A$3879=D5), , )))

因此你的 SUMPRODUCT 将是:

=SUMPRODUCT(1/COUNTIF(INDEX(C:C,MATCH(D5,$A$1:$A$3879,0)):INDEX(C:C,MAX(INDEX(ROW($1:$3879)*($A$1:$A$3879=D5), , ))),INDEX(C:C,MATCH(D5,$A$1:$A$3879,0)):INDEX(C:C,MAX(INDEX(ROW($1:$3879)*($A$1:$A$3879=D5), , )))))

但最终你的原始公式可以简化:

=SUMPRODUCT(($A$1:$A$3879=D5)/COUNTIFs($C$1:$C$3879,$C$1:$C$3879,$A$1:$A$3879,"<>"&D5))

或者使用 Excel 365 Excel

=ROWS(UNIQUE(TOCOL(FILTER($C$1:$C$3879,$A$1:$A$3879=D5)),3))

相关内容