2

我有两列,它们是相邻的,我需要通过连接两列获得结果值的唯一计数,并且需要通过列 A 的值将它们关联起来。例如:

ColA ColB
A    X
A    X
B    Y
B    Y
B    Z
C    X
C    Y
C    Z

A 计数:1
B 计数:2
C 计数:3

我想通过命名列表将它们联系起来,一个包含两列的列表或两个每个一列的命名列表。我不想使用数组函数,我希望这个计数函数作为求和值。我很好使用 vba 和自定义函数。这些列不会有空白值并且总是有数据,我不相信我需要错误检查。

编辑
我可以在包含 ColA 和 ColB 的 NamedList 中获得不同排列的计数。我不能做的是生成一个 IF 语句来测试 NamedList:ColA == 'A'。我只有 3 个不同的 ColA 值,并且可以生成 3 个分别测试 A、B 和 C 的不同函数。下面给出了上面显示的 NamedList 的不同排列的计数,它等于 6。

=SUMPRODUCT((NamedList<>"")/COUNTIF(NamedList,NamedList&""))
4

1 回答 1

0

有一种使用SUMPRODUCT 函数COUNTIF 函数获得唯一计数的相当标准的方法这可以通过将 COUNTIF 换出COUNTIFS 函数来适应多列的唯一性。

        唯一计数 2 列

E4中的公式是,

=SUMPRODUCT((A$2:A$99=$D4)/(COUNTIFS(A$2:A$99, A$2:A$99&"", B$2:B$99, B$2:B$99&"")+(A$2:A$99<>$D4)))

要使上述公式适应您的Named Range,请使用INDEX 函数从二维单元格区域中剥离列。

=SUMPRODUCT((INDEX(NamedList, 0, 1)=$D4)/(COUNTIFS(INDEX(NamedList, 0, 1), INDEX(NamedList, 0, 1)&"", INDEX(NamedList, 0, 2), INDEX(NamedList, 0, 2)&"")+(INDEX(NamedList, 0, 1)<>$D4)))

根据需要填写。

设计其中之一时的最大障碍是避免#DIV/0!错误。这就是分母中附加的空字符串和反转标准所阻止的。

于 2015-04-30T21:56:52.423 回答