Excel性能问题与多行countif

我有一个~70K行的大型XLS。 我每天下载一个这个文件的刷新版本,并提取那些'[area] = WE',我负责的部分。 这部分是直截了当的。 然而,在某些情况下,我还需要包括其他人负责的地区的一些logging。

我有两列将[客户名称]的一部分提取到第一个空格。 第一列是logging“[Area] = WE”,或者将“N / A”作为值的logging。 第二列是相反的。 TRIM(LEFT(F66338,IFERROR(FIND(" ",F66338),LEN(F66338))))

在第三列中,我试图做一个countif ,在第二列(单元格) COUNTIF($BG$12:$BG$66742,BH8)search整个第一列的数据。 在计算时,需要很长时间才能计算出来,每隔一秒增加1%的“计算x%”。

编辑:对于第二列中的每个条目(不是'N / A'),我想知道是否至less有一个它的实例在第一列。 我不需要知道多less。

有更快的方法来执行countif吗?

既然你只需要检查至less一个事件,稍微快一点的方法就是使用=MATCH()

 =MATCH(BH8, $BG$12:$BG$66742, 0) 

将返回#N/A! 找不到的值和find的值(从单元格BG12开始的行数)。

一旦find匹配项,公式将终止,而COUNTIF将一直持续到结束时查找更多(如果有)匹配值。

否则,我不知道比这更快,除了可能使用VLOOKUP ,我相信它应该是平等或稍慢。

虽然使用MATCH()稍微快一点,但它仍然几乎是同一时间。

我现在基于第一列(dynamic范围)在一个单独的选项卡中创build了一个数据透视表,现在match()引用这个数据透视表而不是主表列,这意味着它在<10秒内计算。

由于在这个列中有很多重复的值,所以在这个特定的例子中,这个效果很好。