0

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

我有两列将 [Customer Name] 的一部分提取到第一个空格。第一列对“[Area]=WE”的记录执行此操作,或者将“N/A”作为值。第二列则相反。TRIM(LEFT(F66338,IFERROR(FIND(" ",F66338),LEN(F66338))))

在第三列中,我尝试countif在整个第一列数据中搜索第二列(单个单元格)中的值COUNTIF($BG$12:$BG$66742,BH8)。虽然它有效,但计算它需要很长时间,每隔一秒将“计算 x%”增加 1%。

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

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

4

2 回答 2

2

由于您只需要检查至少一次出现,因此稍微快一点的方法是使用=MATCH()

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

将返回#N/A!未找到的值和找到的值(来自单元格 BG12 的行数)。

一旦找到匹配项,公式就会终止,而COUNTIF将继续直到它到达末尾以查找更多(如果有的话)匹配值。

否则,我不知道有什么比这更快的,除了VLOOKUP我认为应该使用它应该是同等或稍微慢一些。

于 2013-08-12T07:49:08.753 回答
1

虽然使用MATCH()速度稍微快了一点,但仍然花费了几乎相同的时间。

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

由于此列中有许多重复值,因此在此特定情况下效果很好。

于 2013-08-12T10:55:24.197 回答