乐于分享
好东西不私藏

【WPS JSA】当前工作表公式转数值

【WPS JSA】当前工作表公式转数值

大家好,我是宽吻鳄。这里是「宽吻鳄画表勒格记」——专注WPS表格硬核技巧,每期干货,让你的工作效率直线飙升!欢迎关注,咱们一起解锁更多高效技能!

实际使用WPS表格时,常常对基础信息进行合并、统计、分析等操作,会设置很多公式,有的是表内公式,有的是表间公式。

设置了表间公式,生成的工作表与源工作表之间通过公式连接着,当两者脱离后,源工作表被重命名或被删除时,会出现取数错误提示,会直接造成生成的工作表数据遗失。

解决的办法之一是将设置表间公式转为数值。可以手工操作即通过复制+选择粘贴数值来实现,如果表间公式较多,手工操作效率低,也易出错;还有就是通过JSA代码来实现,非常便捷。

今天,重点介绍用JSA代码将当前工作表公式转数值。有两种模式:当前工作表公式转数值_仅表间公式、当前工作表公式转数值_所有公式(其中表间公式也有不需要的时候),可根据需求选择不同模式。

请记住一个WPS表格应用原则:凡是涉及批量或重复性操作,JSA(JavaScript for Application)宏代码都能帮你一键完成,秒速搞定!

要想活干得快,漂亮,还不加班,就来学习WPS JSA宏编程!磨刀不误砍柴功,打铁还需自身硬。

来吧,直接上代码。

WPS JSA】代码:

function 当前工作表公式转数值() {    // 弹出选择对话框,让用户选择公式转换数据模式    // 按钮类型 3 = vbYesNoCancel(显示"是"、"否"、"取消"三个按钮)    var choice = MsgBox(        "请选择转换模式:\n\n" +        "【是】- 仅表间公式转数值(表内公式保留不变)\n" +        "【否】- 所有公式转数值(含表内公式全部转为数值)\n\n" +        "【取消】- 退出操作",        3,  // 3 = vbYesNoCancel(是/否/取消)        "公式转数值 - 选择模式"    );    // 根据用户选择调用对应的函数    if (choice === 6) {  // 6 = vbYes(点击"是")        // 用户选择"是":调用仅表间公式转数值函数(表内公式保留不变)        当前工作表公式转数值_仅表间公式();    } else if (choice === 7) {  // 7 = vbNo(点击"否")        // 用户选择"否":调用所有公式转数值函数(含表内公式全部转为数值)        当前工作表公式转数值_所有公式();    } else {  // 点击"取消"或关闭对话框(返回值为 2 或其他)        // 用户取消操作,给出提示并退出        MsgBox("已取消操作。"0"提示");    }}function 当前工作表公式转数值_仅表间公式() {//功能:将当前工作表中所有跨工作表引用的公式(表间公式)转为数值,表内公式(不跨表引用的公式)保留不变。// 注意:此操作不可逆,建议执行前备份文件	    // 获取当前活动工作表    var sht = Application.ActiveSheet;    // 获取已使用区域(避免遍历空白单元格,提升效率)    var rng = sht.UsedRange;    // 获取已使用区域的总行数    var rows = rng.Rows.Count;    // 获取已使用区域的总列数    var cols = rng.Columns.Count;    // 计数器:记录转换了多少个表间公式    var totalCount = 0;    // 第一层循环:遍历每一行    for (var i = 1; i <= rows; i++) {        // 第二层循环:遍历每一列        for (var j = 1; j <= cols; j++) {            // 获取当前单元格对象            var cell = rng.Item(i, j);            // 判断条件:该单元格包含公式 且 公式中包含 "!"(即跨工作表引用)            if (cell.HasFormula && cell.Formula.indexOf("!"!== -1) {                // 将公式的计算结果赋值为静态数值(公式被覆盖,转为数值)                cell.Value2 = cell.Value2;                // 转换计数加1                totalCount++;            }            // 若公式不包含 "!",则判定为表内公式,不做任何处理,直接跳过        }    }    // 执行结果反馈    if (totalCount === 0) {        // 没有发现表间公式时提示        MsgBox("当前工作表未发现表间公式。\n(表内公式均已保留。)"0"提示");    } else {        // 完成转换后反馈结果        MsgBox("当前工作表 \"" + sht.Name + "\" 已完成转换!\n" +               "共转换 " + totalCount + " 个表间公式。\n" +               "表内公式均已保留未变。"0"操作结果");    }}function 当前工作表公式转数值_所有公式() {// 功能:将当前工作表中所有公式(含表内公式和表间公式)全部转为数值// 注意:此操作不可逆,建议执行前备份文件    // 获取当前活动工作表    var actSheet = Application.ActiveSheet;    // 获取已使用区域(避免遍历空白单元格,提升效率)    var usedRng = actSheet.UsedRange;    // 提前判断是否为空表    // 条件:usedRng不存在 或 单元格数量为0 或 仅A1有内容且为空    if (!usedRng || usedRng.Count === 0 || usedRng.Address === "$A$1" && actSheet.Range("A1").Value === "") {        MsgBox("当前工作表为空,无需转换。"0"提示");        return;  // 退出函数    }    // 获取已使用区域的总行数    var rows = usedRng.Rows.Count;    // 获取已使用区域的总列数    var cols = usedRng.Columns.Count;    // 计数器:记录转换了多少个公式单元格    var count = 0;    // 第一层循环:遍历每一行    for (var i = 1; i <= rows; i++) {        // 第二层循环:遍历每一列        for (var j = 1; j <= cols; j++) {            // 获取当前单元格对象            var cell = usedRng.Item(i, j);            // 判断该单元格是否包含公式            if (cell.HasFormula) {                // 将公式的计算结果赋值为静态数值(公式被覆盖,转为数值)                cell.Value2 = cell.Value2;                // 转换计数加1                count++;            }        }    }    // 执行结果反馈    if (count === 0) {        // 未发现公式时提示        MsgBox("当前工作表 \"" + actSheet.Name + "\" 中未发现公式。"0"提示");    } else {        // 完成转换后反馈结果        MsgBox("当前工作表 \"" + actSheet.Name + "\" 已完成转换!\n共转换 " + count + " 个公式单元格。"0"操作结果");    }}

基本操作步骤:

1.打开WPS表格文件。按下 Alt + F11(或点击「开发工具」→「WPS宏编辑器」),打开WPS JSA编辑器。

2.按Ctrk+O键(不是零),导入相应js文件,就直接导入了JSA宏代码。

3.回到WPS表格界面,点击「开发工具」→「运行宏」,找到相应宏,点击「运行」即可。

往期内容推荐:
【WPS JSA】选择写入枚举字典
【WPS JSA】秒删空行_当前表选择区域
【WPS JSA】秒删工作表数据区域内所有空行
【WPS JSA】工作表按字段拆分多个工作表
【WPS JSA】名字分组折行一次性生成分组名单
【WPS JSA】登记表模板一次性写入公式
【WPS JSA】提取当前工作表中的所有公式
什么是WPS JSA?如何调用WPS宏编辑器?
持续更新,上干货;不迷路,请多关注!
工欲善其事,必先利其器。
利器在手,天下我有。
JSA代码就是利器!
可下载以下资料查看测试:
2026年07月03日-【WPS JSA】当前工作表公式转数值-示例.zip
温馨提示:
1.请下载示例,尝试运行宏,查看实际效果,多练习,理解掌握宏运行原理。
2.使用JSA宏代码对实际工作表进行操作前,一定一定一定做好原数据备份,防止操作不当等造成数据丢失。