WPS的简单JS宏应用

本文记录了使用WPS的JS宏功能来处理数据的问题,详细介绍了如何通过宏功能解决字段名不一致导致的数据无法直接筛选的挑战。作者分享了JS宏的调试技巧,包括使用JSON.stringify()来查看变量,并提供了最终实现代码和相关学习资源。

有一阵子没写博客了,各种琐事忙碌;前段时间接触了下WPS的宏功能,抽点时间写个学习笔记吧。

案例背景简单说一下,主任让我统计OA后台在建工程项目的概况,后台数据导出一张表,再问隔壁经营部的同事要了一张中标项目统计表。开始想着挺简单的,直接整合两张表的项目名称,两列数据筛选标记出重复值就行;然而OA后台统计的字段名是“工程合同”,经营部统计的是“项目名称”,双方数据并不能直接筛选重复值,“工程合同”=“项目名称”+“xxx合同”。

网上查了下资料,感觉可以用WPS的宏功能解决,果断开搞。
PS:WPS宏支持JS和VB两种模式,由于之前做过一段时间的web前端开发,对JS语言更熟悉,所以用的JS模式。
在这里插入图片描述
直接写几行测试代码上手:

function test()
{
    var xmmc_arr = Range("B4:B60").Value();
    console.log('test');
    console.log(xmmc_arr);
    console.log(JSON.stringify(xmmc_arr));
}

F5看下运行效果,可见变量是不能直接通过console调试的,要通过JSON.stringify()方法将JavaScript值转换为JSON字符串,这是一个小小的坑。
在这里插入图片描述
有宏录制的功能,即使在不查API文档的情况下,也能知道一些操作代码。这里直接使用js的includes()方法,对每个单元格的字符串做对比。
直接放上最终代码,顺便附上相关文档链接:

function Macro1() {
    var results_xmarr = [];
    var results_htarr = [];
    //读取对应单元格的数据
    var xmmc_arr = Range("B4:B60").Value();
    var htmc_arr = Range("J2:J77").Value();
    for (var x of xmmc_arr) {
        for (var y of htmc_arr) {
            if (y[0].includes(x[0])) {
                results_xmarr.push(x);
                results_htarr.push(y);
            }
        }
    }
    //在指定单元格写入数据
    Range("H2:H77").Value2 = results_xmarr;
    Range("I2:I77").Value2 = results_htarr;
}

WPS JS宏入门视频教程:
https://www.wps.cn/learning/course/detail/id/330734.html
WPS JS宏API文档:
https://open.wps.cn/docs/client/wpsLoad
Excel VBA 参考文档:
https://learn.microsoft.com/zh-cn/office/vba/api/overview/excel

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值