Excel:计算两个匹配单元格的实例

时间:2019-03-07 23:00:30

标签: excel

我正在尝试找到最有效的方法来计算一对唯一的单元格出现的实例数。

例如

     _A____B__

 1. |Red | Blue 
 2. |Red | Blue  
 3. |Red | Green
 4. |Red | Blue 

唯一对的总数=2。

我一直在使用这个公式,并且一直在给我这些结果;

公式:= IF(SUMPRODUCT(($ A $ 2:$ A2 = A2)*($ B $ 2:$ B2 = B2))> 1,0,1)

结果:

      _A_____B______C__

 1. |Red | Blue  | 1    
 2. |Red | Blue  | 0
 3. |Red | Green | 1
 4. |Red | Blue  | 0

问题在于,我使用的数据集范围为50k-800k行,并且此公式导致Excel变得无响应并崩溃。我一次只能做5k-10k行,但仍然需要永远处理。

有人可以帮助我吗?


1 个答案:

答案 0 :(得分:0)

一种用于识别唯一数据对的数组COUNTIF方法

请注意,这是一个数组函数。此函数需要使用CTRL + SHIFT + ENTER

执行
  

{= SUM(1 / COUNTIFS(A:A,A:A,B:B,B:B)}

在上面的代码中,A:A代表第一列数据的范围,而B:B代表第二列数据的范围。 COUNTIFS不仅限于两个条件-函数中最多可以包含127个条件。

尽管这是一个数组公式(可能比某些其他类似分类的解决方案速度要慢),但是对于您的用例来说,您现在正在使用的公式当然不是理想的。尽管SUMPRODUCT比COUNTIFS更加强大和通用,但为这些优点付出的代价是在非常大的数据集上调用该函数时增加了计算时间。

其他注意事项

如果您使用的Excel版本默认安装了Power Suite(PowerQuery,PowerPivot,PowerView)(Excel 2016+),或者可以通过外接程序界面安装Power Suite(Excel 2013),我建议寻找利用这些工具来完成您要完成的任务的解决方案。这些工具已经过优化,可以处理非常大的数据集。