JS-WPS 自动化办公(3)数据整理-找数据

hi uu们,测了电路收了N多数据,从中找到关键信息在整理到一个表格里,干过没有?我干过,甚至干到早上3.钟,要给我累吐了!

读大学的时候没有认真听讲,VBA怎么用,一心只想学电路,现如今,为了搞数据,只能继续搞JSA。为什么不从哪里跌倒从哪里爬起来,因为在泥地里在怎么跑也没有在水泥地里跑的快。所以咱们继续JSA。

📌 我的核心需求

  1. 在XX列找到匹配的数据
    1. 源文件(sourcefile)是示波器波形的RawData
    2. 需要找到波形最高点的的单元格和时间
  2. 将数据拷贝到指定的 汇总.xlsx 文件

💡 开始需求拆解

  1. 读取XX列的内容
  2. 判断是否是XX列的最大值
  3. 拷贝最大值所在的单元格以及最大值的时间单元格
  4. 激活 汇总.xlsx
  5. 添加人性化功能

函数实现

首先我们先基于之前的车轮子做为一些参考:

JS-WPS 自动化办公(1) --表格

JS-WPS自动化办公(2) --文档

获取最大值

复制代码
function GetMax()
 {
     //选择要遍例的列
    let cellRange="S";
    //初始化最大值
    let maxValue =0;
    //从哪里开始遍历
    for(let i=3;i<100;i++)
    {
        //如果MaxValue小于当前的单元格就将当前单元格的值幅值给MaxValue
        if(maxValue<Range(cellRange+i).Value2)
        {
            maxValue=Range(cellRange+i).Value2;
        }
        //如果不是那就保持MaxValue
        else
        {
            maxValue=maxValue;
        }
    }
    //打印最大值
    console.log("GetMax:"+maxValue);
    return maxValue;
}

测试结果1:完成了需求1和2的拆解

但是!但是! 这是一个表格!

所以表格就要用表格的方法,通常我们用的是=MAX(S3:S100),所以我们也不需要去写个for

在JSA里的新实现如下

复制代码
function GetMax()
 {
     //选择要遍例的列
    let cellRange="S";
    //初始化最大值
    let maxValue =0;
    //将Q2的值等于S3:S100 里面的Max
    Range("Q2").Value(undefined,"=MAX(S3:S100)");
    //获取Q2的值
    maxValue=Range("Q2").Value2;
    //打印最大值
    console.log("GetMax:"+maxValue);
    return maxValue;
}

看起来使用JS结合表格文件的代码要简单的多。

测试结果2:完成了需求1和2的拆解

📹JSA脚本录制

接下来需要完成拷贝操作,如果不知道拷贝从哪里到哪里,那么可以使用宏录制的功能,这样也算图形化的编程了。

将刚刚生成的代码拷贝过来,代码如下:

复制代码
function Macro1()
{
    // 选择B4单元格
    Range("B4").Select();
    // 复制B4单元格的内容
    Selection.copy(undefined);
    // 粘贴到D4单元格
    Range("D4").Select();
    ActiveSheet.Paste(undefined,undefined);
}

这时候咱们就可以将这两个程序结合起来,代码如下:

复制代码
function GetMax()
 {
    //初始化最大值
    let MaxCell="Q2";
    let PasteCell="D4";
    let maxValue =0;
    //将Q2的值等于S3:S100 里面的Max
    Range(MaxCell).Value(undefined,"=MAX(B3:B100)");
    //获取Q2的值
    maxValue=Range(MaxCell).Value2;
    //打印最大值
    console.log("GetMax:"+maxValue);
    // 选择B4单元格
    Range(MaxCell).Select();
    // 复制B4单元格的内容
    Selection.Copy(undefined);
    //粘贴为数值
    Windows.Item("汇总.xlsx").Activate();
    //选择指定单元格
    Range(PasteCell).Select();
    //粘贴为数值
    Selection.PasteSpecial(xlPasteValues, xlPasteSpecialOperationNone, false, false);
    //返回最大值
    return maxValue;
}

测试结果:添加到汇总表格

🎉人性化功能添加--封装成函数

封装成参数带入,方便其他文件调用

复制代码
function GetMax(MaxCell,PasteFileName,PasteCell,SEL_Range)
 {
    //初始化最大值
    let maxValue =0;
    //将Q2的值等于S3:S100 里面的Max
    Range(MaxCell).Value(undefined,"=MAX("+SEL_Range+')');
    //获取Q2的值
    maxValue=Range(MaxCell).Value2;
    //打印最大值
    console.log("GetMax:"+maxValue);
    // 选择B4单元格
    Range(MaxCell).Select();
    // 复制B4单元格的内容
    Selection.Copy(undefined);
    //粘贴为数值
    Windows.Item(PasteFileName).Activate();
    Range(PasteCell).Select();
    Selection.PasteSpecial(xlPasteValues, xlPasteSpecialOperationNone, false, false);
    return maxValue;
}
function test()
{
    let printMax;
    printMax=GetMax('Q1','汇总.xlsx','A1','B2:B100');
    Console.log('Max Value'+printMax);
}

好了今天的文章就到这里,希望大家能通过WPS提高效率,支持国产软件!下图为苍南县望里镇。

相关推荐
4ever.ov014 分钟前
精学C++第一站 从命名空间到引用:C++入门核心语法全梳理(13000字长文)
开发语言·c++·clion
小杨互联网14 分钟前
Go 现代 CLI 工具离线镜像合集
开发语言·后端·golang·开源·go·命令行
揽星河..22 分钟前
【C语言】数组
c语言·开发语言·算法
FRing0324 分钟前
JavaScript入门到精通三十三(异常处理、call方法、apply方法、bind方法、防抖、节流)
开发语言·前端·javascript
geovindu31 分钟前
rust: Semaphore Pattern
开发语言·后端·设计模式·rust·代理模式·企业级信号量模式·同步型模式
纪念 2291 小时前
C++ 算法(模拟)
开发语言·c++·算法
niucloud-admin1 小时前
NIUCLOUD PHP SAAS上门家政使用文档--服务订单:评价列表
开发语言·php
jktantan2 小时前
(二)Vue 3 的 attrs 不是响应式:el-form 扩展属性同步的三种方案
前端·javascript·vue.js·element-plus
Wang's Blog2 小时前
Java 项目实战: 交友项目 - 项目:需求分析与滑动数据设计
java·开发语言·交友
gz927cool2 小时前
Python 全栈应用最佳实践完整指南
开发语言·python·ai