函数大提速!友商能去倒杯水,WPS眨眼出结果!
金山办公
👋 各位WPS用户朋友们,久等了!!
平时做表最怕什么?
肯定是数据一多,改个数字就开始疯狂计算中……
为了解决这痛点,2024年下半年到2025年我们的技术团队死磕“计算引擎”。
这一次,WPS表格新版本真的支棱起来了!不仅速度提升,在很多复杂计算场景下,速度甚至大幅超越了友商。
📊 口说无凭,直接上实测对比:
(我们在同一台电脑上,用同样的超大文件进行PK)
✅ 做月度统计(SUMIFS等公式)时:
友商:需要 42秒
WPS新版:仅需 1.6秒!🚀
(友商能去倒杯水,wps眨眼就出结果)
✅ 筛选海量数据(FILTER公式)时:
友商:耗时 57秒
WPS新版:0.1秒 瞬间完成!⚡
(基本就是秒开,没有任何延迟)
✅ 核对查找数据(XLOOKUP/VLOOKUP)时:
友商:大约 2~5秒
WPS新版:不到1秒,几乎无感。😎
💡 【极速模式开启指南】
请使用版本号 12.1.0.24034 (32位)12.1.0.24031(64位)及以上版本(25年11月版本或更新 )
官网下载地址:https://www.wps.cn/
为了确保持续超越友商的速度体验,送大家一个“隐藏加速小技巧”:
在使用公式查找数据时,尽量锁定查找区域,这样能完美触发我们的极速引擎,让表格飞起来!
(所谓锁定查找区域,指的是“拖拽填充公式时,不会轻易变更的区域”。它有如下几个常见形式:
由坐标指定的区域,如 $A$1:$B$5000 这种带 $ 符号的写法。要求每一个坐标都带$符号。这样的区域,在任何一个方向上填充公式,都不会变更
整列(A:A)或整行(1:1)。对$符号不做要求。A:A在上下方向填充时不变,1:1在左右方向填充时不变
trimrange、.:.语法糖的运算结果
指向动态数组的结果)
优化适用场景
RANGEIF类(SUMIFS, COUNTIFS, AVERAGEIFS, MAXIFS, MINIFS, SUMIF, COUNTIF, AVERAGEIF)
当查找区域是锁定查找区域时,可得到性能优化
使用通配符进行查找的场景,尚不支持性能优化
FILTER
使用【整行整列匹配某个值】(譬如A:A=A2, 1:1=B1)作为FILTER的“包括”参数时,可得到性能优化(需使用2025年12月及更高版本)
大量FILTER函数对大区域数据做筛选,尚不支持性能优化
XLOOKUP
当查找区域是锁定查找区域时,可得到性能优化
当查找区域不是锁定查找区域,或者是一个中间计算结果时,尚不支持性能优化(需要从中间结果进行查找时,建议在表格内另行开辟一个区域存放中间结果,然后对中间结果进行查找)
匹配模式不是“精确匹配”,或搜索模式不是“正序”/“逆序”,尚不支持性能优化
VLOOKUP
当查找区域是锁定查找区域时,可得到性能优化
当查找区域不是锁定查找区域,或者是一个中间计算结果时,尚不支持性能优化(需要从中间结果进行查找时,建议在表格内另行开辟一个区域存放中间结果,然后对中间结果进行查找)
🎁 【全网征集】还有比友商慢的文件吗?
虽然在我们的测试里已经跑赢了,但实际业务表格千变万化。
如果你更新后,手里的表格计算速度依然不如友商、计算速度不理想
如果你发现,计算一半,想改个数据但停不下来
🙏 请千万别默默忍受!
麻烦把文件里的敏感数据替换掉(保留公式和数据规模)发给我们。我们需要这些“硬骨头”来进一步优化,争取让大家在更多的场景下能体验到飞的感觉!
QQ:2105711431
附:计算计时脚本
VB
Sub MeasureTime()
Application.MultiThreadedCalculation.Enabled = True
Application.MultiThreadedCalculation.ThreadCount = 4
Dim startTime As Double
Dim endTime As Double
Dim elapsedTime As Double
' 记录开始时间(单位:秒)
startTime = Timer
' ========== 这里放置要计时的代码 ==========
Application.CalculateFullRebuild
' ========================================
' 记录结束时间
endTime = Timer
' 计算耗时(秒)
elapsedTime = endTime - startTime
' 显示结果(精确到毫秒)
MsgBox "耗时: " & Format(elapsedTime, "0.000") & " 秒", vbInformation
End SubJS
function MeasureTime()
{
Application.MultiThreadedCalculation.Enabled = true
Application.MultiThreadedCalculation.ThreadCount = 4
// 记录开始时间(毫秒级时间戳)
let startTime = new Date().getTime();
// 重新计算所有工作表(完全重建计算)
Application.CalculateFullRebuild();
// 记录结束时间
let endTime = new Date().getTime();
// 计算运行时间(转换为秒)
let runTime = (endTime - startTime) / 1000;
// 弹窗显示运行时间
alert(`重新计算完成,耗时:${runTime.toFixed(2)}秒`);
}
金山办公
金山办公
金山办公
WPS寻令官 | WPS产品体验官
金山办公
WPS寻令官 | WPS产品体验官
WPS寻令官
WPS寻令官
WPS寻令官 | WPS产品体验官
@金山办公
@金山办公
金山办公
KVP函数专家、创作者俱乐部成员