基于条件标准的查找模式

问题描述

参考 this link 中的问题,提供的解决方案适用于小单元格范围。如果将其应用于大范围的工作表,则工作表会被挂起。是否有任何方法可以对大型 excel 范围使用类似的方法

解决方法

对于 10K 单元格,原始 Countifs 公式如下所示:

=INDEX(B1:B10000,MATCH(MAX(COUNTIFS(A1:A10000,"Blue",B1:B10000,B1:B10000)),COUNTIFS(A1:A10000,B1:B10000),0))

使用 Match 修改后的公式比原始 countifs 公式快得多:

=INDEX(B1:B10000,MODE(IF(A1:A10000="Blue",MATCH(B1:B10000,0))))

原始公式 2.5 秒,使用 this timer 匹配公式 0.15 秒

使用 Microsoft 365,您可以仅筛选蓝色行,而且速度再次加快。

此版本的公式运行时间为 0.003 秒:

=INDEX(FILTER(B1:B10000,A1:A10000="Blue"),MODE(MATCH(FILTER(B1:B10000,FILTER(B1:B10000,0)))

还有这个在 0.002 秒内

=LET(x,INDEX(x,MODE(MATCH(x,x,0))))

使用 Microsoft 365 和 Windows 10 在处理器 Intel(R) Core(TM) i5-10400 CPU @ 2.90GHz、2904 Mhz、6 核、12 逻辑处理器上进行计时。

测试数据使用了七种不同的颜色和七种不同的名称,使用

生成
=INDEX(G$1:G$7,RANDBETWEEN(1,7))

=INDEX(H$1:H$7,7))

enter image description here

由于响应为 O(N^2),因此将搜索空间减少 7 倍应该可以将时间减少约 50 倍。