函数大提速!友商能去倒杯水,WPS眨眼出结果!

黄帅
黄帅

金山办公

👋 各位WPS用户朋友们,久等了!!

平时做表最怕什么?

肯定是数据一多,改个数字就开始疯狂计算中……

为了解决这痛点,2024年下半年到2025年我们的技术团队死磕“计算引擎”。

这一次,WPS表格新版本真的支棱起来了!不仅速度提升,在很多复杂计算场景下,速度甚至大幅超越了友商

📊 口说无凭,直接上实测对比:

(我们在同一台电脑上,用同样的超大文件进行PK)

做月度统计(SUMIFS等公式)时:

  • 友商:需要 42秒

  • WPS新版:仅需 1.6秒🚀

(友商能去倒杯水,wps眨眼就出结果)

WPS新版本:1.6s

友商:46s

【金山文档 | WPS云文档】 xx_利润表

筛选海量数据(FILTER公式)时:

  • 友商:耗时 57秒

  • WPS新版0.1秒 瞬间完成!

(基本就是秒开,没有任何延迟)

WPS新版:0.1秒

友商:57s

【金山文档 | WPS云文档】 尺码生成

核对查找数据(XLOOKUP/VLOOKUP)时:

  • 友商:大约 2~5秒

  • WPS新版不到1秒,几乎无感。😎

WPS新版本:0.8s

友商:5.2s

【金山文档 | WPS云文档】 Xlookup函数性能


💡 【极速模式开启指南】

请使用版本号 12.1.0.24034 (32位)12.1.0.24031(64位)及以上版本(25年11月版本或更新 )

官网下载地址:https://www.wps.cn/

为了确保持续超越友商的速度体验,送大家一个“隐藏加速小技巧”:

在使用公式查找数据时,尽量锁定查找区域,这样能完美触发我们的极速引擎,让表格飞起来!

(所谓锁定查找区域,指的是“拖拽填充公式时,不会轻易变更的区域”。它有如下几个常见形式:

  1. 由坐标指定的区域,如 $A$1:$B$5000 这种带 $ 符号的写法。要求每一个坐标都带$符号。这样的区域,在任何一个方向上填充公式,都不会变更

  1. 整列(A:A)或整行(1:1)。对$符号不做要求。A:A在上下方向填充时不变,1:1在左右方向填充时不变

  1. trimrange、.:.语法糖的运算结果

  1. 指向动态数组的结果)

优化适用场景

  • RANGEIF类(SUMIFS, COUNTIFS, AVERAGEIFS, MAXIFS, MINIFS, SUMIF, COUNTIF, AVERAGEIF)

  • 当查找区域是锁定查找区域时,可得到性能优化

  • 使用通配符进行查找的场景,尚不支持性能优化

  • FILTER

  • 使用【整行整列匹配某个值】(譬如A:A=A2, 1:1=B1)作为FILTER的“包括”参数时,可得到性能优化(需使用2025年12月及更高版本)

  • 大量FILTER函数对大区域数据做筛选,尚不支持性能优化

  • XLOOKUP

  • 当查找区域是锁定查找区域时,可得到性能优化

  • 当查找区域不是锁定查找区域,或者是一个中间计算结果时,尚不支持性能优化(需要从中间结果进行查找时,建议在表格内另行开辟一个区域存放中间结果,然后对中间结果进行查找)

  • 匹配模式不是“精确匹配”,或搜索模式不是“正序”/“逆序”尚不支持性能优化

  • VLOOKUP

  • 当查找区域是锁定查找区域时,可得到性能优化

  • 当查找区域不是锁定查找区域,或者是一个中间计算结果时,尚不支持性能优化(需要从中间结果进行查找时,建议在表格内另行开辟一个区域存放中间结果,然后对中间结果进行查找)


🎁 【全网征集】还有比友商慢的文件吗?

虽然在我们的测试里已经跑赢了,但实际业务表格千变万化。

如果你更新后,手里的表格计算速度依然不如友商、计算速度不理想

如果你发现,计算一半,想改个数据但停不下来

🙏 请千万别默默忍受!

麻烦把文件里的敏感数据替换掉(保留公式和数据规模)发给我们。我们需要这些“硬骨头”来进一步优化,争取让大家在更多的场景下能体验到飞的感觉

邮箱:huangshuai1@wps.cn

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 Sub

JS

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)}秒`);
}
广东省
浏览 991
2
16
分享
16 +1
28
2 +1
全部评论 28
 
殇俊
急需脱敏软件,数据太多了
· 浙江省
回复
 
陈新新
👍
· 广东省
回复
 
金才
金才

金山办公

点赞
· 湖北省
回复
 
包罗万象
如果我A列是数组生成的话,那引用A列时输入A2#会有性能优化吗
· 广东省
回复
黄帅
黄帅

金山办公

有。对数组公式结果的直接引用是绝对引用
· 广东省
1
回复
 
笑梦天涯
升级后,一个2000行数据2个条件的Filter查询左下角快速地在闪动进行计算,没升级前不会。 平时还时不时出现计算未完成的提示
· 广东省
回复
黄帅
黄帅

金山办公

升级前的版本是?早期版本wps的filter其实是残缺的,只会处理前256行数据来着 方便的话可以发脱敏后的文件让我们分析一下卡点
· 广东省
回复
 
懒得批爆
懒得批爆

WPS寻令官 | WPS产品体验官

刚刚试过了,直接卡死了,最后还是换用竞品才完成工作,图一、图二是文档属性 修改公式后连续操作就会出现图三的操作。 这还是调整了数据源后的数据仅包含2024年和2025年,图四是数据源的文档,仅数据源不含任何公式,无论是本地文档还是云文档,均会等待很久,竞品会稍微快十几秒。
· 四川省
回复
黄帅
黄帅

金山办公

文件方便脱敏后让我们分析么
· 广东省
回复
 
Hypnotist
Hypnotist

WPS寻令官 | WPS产品体验官

厉害呀~点赞
· 四川省
回复
 
song
song

WPS寻令官

太棒了!
· 广东省
回复
 
亂雲飛渡
亂雲飛渡

WPS寻令官

点赞
· 广东省
回复
 
风清月霁
风清月霁

WPS寻令官 | WPS产品体验官

厉害了,wps流弊~!
· 河南省
回复
 
徐飞帆
徐飞帆

@金山办公

给研发大佬加🍗
· 广东省
回复
 
梁博云
梁博云

@金山办公

资瓷
· 广东省
回复
黄帅
黄帅

金山办公

吼啊
· 广东省
回复
 
王德利
太强了
· 广东省
回复
 
会飞的鱼
会飞的鱼

KVP函数专家、创作者俱乐部成员

厉害了,点赞
· 辽宁省
回复