位置: IT常识 - 正文

WPS JS宏入门案例集锦(excel js宏)

编辑:rootadmin
WPS JS宏入门案例集锦

推荐整理分享WPS JS宏入门案例集锦(excel js宏),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:wps宏的使用方法,office js宏,wps宏代码是怎么写的,wps js宏教程,wps js宏教程,wps js宏教程,wps js宏教程,WPS JS宏入门案例集锦,内容如对您有帮助,希望把文章链接给更多的朋友!

JS宏官方API文档:https://qn.cache.wpscdn.cn/encs/doc/office_v19/index.htm

批量创建工作表/簿

批量创建工作表:

function 批量创建工作表(){for (var city of ["成都","上海","北京"]){let sht = Worksheets.Add();sht.Name = city;}}

批量创建工作簿:

function 批量创建工作簿(){for (var city of ["成都","上海","北京"]){book = Workbooks.Add();book.SaveAs(`E:/tmp/${city}`);book.Close();}}

若book.SaveAs不传入全路径,则默认可能保存到我的文档文件夹中。

批量拆分工作表到工作簿

数据如下:

执行代码:

function 批量拆分工作表(){for (var sh of Sheets){// 如果既不指定 Before 也不指定 After,则新建一个工作簿,其中包含复制的工作表。sh.Copy();ActiveWorkbook.SaveAs(`E:/VBA/wps/${sh.Name}.xlsx`);ActiveWorkbook.Close();}}

分解出3个独立的文件:

批量判断处理单元格数据

数据和需求如下:

简单的方法就是直接筛选再复制粘贴,但是现在我们需要完全基于js宏的语法实现:

function 分数筛选(){var Arr1=[];var Arr2=Range("a2:b13").Value();for (var row of Arr2){if (row[1]>=100){Arr1.push(row);}}Range("d4").Resize(Arr1.length,2).Value2=Arr1}

运行后:

工资条制作

数据如下:

执行如下代码:

function 工资条制作(){Application.DisplayAlerts=false;let src=Sheets("工资表");for(let sht of Sheets){if(sht.Name=="结果") sht.Delete();}Application.DisplayAlerts=true;var sht=Worksheets.Add();sht.Name="结果";for(i=0;i<10;i++) {src.Range("a1:m4").Copy();sht.Cells.Item(5*i+1,1).PasteSpecial();src.Range(`A${i+5}:M${i+5}`).Copy();sht.Cells.Item(5*i+5,1).PasteSpecial();}sht.Activate()}

拆分结果:

注意:如果原表不止10人,则修改循环次数即可。

WPS JS宏入门案例集锦(excel js宏)

如果允许直接在原表上修改,可以使用相对引用录制宏得到代码:

function 工资条制作2(){Range("a1:m4").Select();for (var i=1;i<=9;i++){Selection.Copy();ActiveCell.Offset(5, 0).Range("A1:M4").Insert(xlShiftDown, undefined);Application.CutCopyMode = false;ActiveCell.Offset(5, 0).Range("A1:M4").Select();}}任意多列SN号合并到一列

原数据都是如下格式的SN号:

下面我们考虑通过宏代码合并到一列,代码如下:

function 单表多列合并到一列新文件(){var vs=Range("A1").CurrentRegion.Value().flat();// 过滤掉空值并去重vs=Array.from(new Set(vs.filter(v=>v!=undefined)));// 一维数组默认赋值给一行,赋值给一列需要先转置二维vs = WorksheetFunction.Transpose(vs);var wb = Workbooks.Add();wb.Sheets(1).Range("A1").Resize(vs.length,1).Value2 = vs;}

注意:上面的代码使用JavaScript的语法对数组进行了去重。

Array.from(new Set(arr))

过滤空值:

arr.filter(v=>v!=undefined)

最终得到一列:

批量合并工作表并添加来源表名

原数据:

执行代码:

function 合并工作表数据(){var NewArr=[],n=1;for (var ws of Sheets){var Arr=ws.Range("a1").CurrentRegion.Value();if (n++ ==1){var title=Arr[0].concat("工作表名")};delete Arr[0]Arr.forEach(ar=>NewArr.push(ar.concat(ws.Name)));}NewArr.unshift(title);var wb=Workbooks.Add();wb.Sheets(1).Range("a1").Resize(NewArr.length,NewArr[0].length).Value2=NewArr;}

成功合并得到如下结果:

语音朗读

代码如下:

function Workbook_Open(){ Application.Speech.Speak("美好的一天就从这一刻开始吧!",true)}function Workbook_NewSheet(Sh){ Application.Speech.Speak("果然狠人老表,区区几张sheet是不够你消遣的!",true)}function Application_WorkbookBeforeClose(Wb, Cancel){ Application.Speech.Speak("就想问老板,可以下班了吗?")}function Application_SheetSelectionChange(Sh, Target){if(Sh.Name!="词汇"|Target.Value()==undefined) return;Application.Speech.Speak(Target.Value());}

保存上面的代码后,当打开或关闭该文件或新建工作表都会朗读对应的文字。

对于词汇这张工作表,点击任何有值的单元格都会对其进行朗读。

Application.Speech.Speak第二个参数传入true表示异步,默认为同步。

富文本弹窗

alert函数支持传入HTML:

function testAlert_CSS(){let foo = `<h3 style="color:red">Hi</h3><p style="color:green;text-shadow: 1px 1px 2px red, 0 0 1em blue, 0 0 0.2em blue;">Hi ${new Date().toLocaleDateString()}</p>`;alert(foo)}

执行效果:

判断目标是否在指定区域内function _m_isInArea(uArea,cell){ uArea = typeof(uArea) =="string" ? Range(uArea):uArea; cell = typeof(cell) =="string" ? Range(cell):cell; if(uArea.Parent.Name!=cell.Parent.Name) return false; let s_row=uArea.Row,e_row=s_row+uArea.Rows.Count-1; let s_col=uArea.Column,e_col=s_col+uArea.Columns.Count-1; let t_row = cell.Row,t_col = cell.Column;//Console.log(`${s_row}-${e_row},${s_col}-${e_col},(${t_row},${t_col})`);return s_row<=t_row && t_row<=e_row && s_col<=t_col && t_col<=e_col;}function _m_test(){ Console.log(_m_isInArea("A2:C20","B3")); Console.log(_m_isInArea("A2:C20","D3"));}

结果:

truefalse本地文件读写function read_write_data_txt(){let txtFile = "E:/tmp/a.txt"; let f = FreeFile() ;Open(txtFile,f,jsOutput,jsWrite);Write(f,"123");Write(f,"456,789");Write(f,"aaa,bbb"); Close(); Console.clear() let fNumber = FreeFile() Open(txtFile, fNumber,jsInput) while(!EOF(fNumber)) { let p=LineInput(fNumber); Console.log(p) } Close(fNumber)}"123""456,789""aaa,bbb"

生成文件:

JavaScript语法补充undefined和null的区别

undefined和null的区别(值相等,但类型不等) :

typeof undefined // undefinedtypeof null // objectnull === undefined // falsenull == undefined // truetypeof操作符

typeof 操作符可以检测变量的数据类型 :

typeof "John" // 返回 string typeof 3.14 // 返回 numbertypeof NaN // 返回 numbertypeof false // 返回 booleantypeof [1,2,3,4] // 返回 objecttypeof {name:'John', age:34} // 返回 objecttypeof new Date() // 返回 objecttypeof function () {} // 返回 functiontypeof myCar // 返回 undefined (如果 myCar 没有
本文链接地址:https://www.jiuchutong.com/zhishi/285085.html 转载请保留说明!

上一篇:如何挽留婚姻,如何拯救您的婚姻?(如何挽留婚姻危机)

下一篇:“和平之墙”和巴黎的埃菲尔铁塔 (© Prisma by Dukas Presseagentur GmbH/Alamy)(和平之城)

  • 微信状态怎么设置(微信状态怎么设成永久)

    微信状态怎么设置(微信状态怎么设成永久)

  • 抖音如何改名(抖音如何改名字,为什么显示我重置)

    抖音如何改名(抖音如何改名字,为什么显示我重置)

  • iphonexsmax支持双卡吗(iphonexsmax支持双移动卡吗?)

    iphonexsmax支持双卡吗(iphonexsmax支持双移动卡吗?)

  • 屏蔽对方qq对方知道吗(屏蔽对方qq对方有红色感叹号吗)

    屏蔽对方qq对方知道吗(屏蔽对方qq对方有红色感叹号吗)

  • 微信群怎么让个人禁言(微信群怎么设置让别人看不到)

    微信群怎么让个人禁言(微信群怎么设置让别人看不到)

  • iphone充一晚上电对电池有影响吗(iPhone充一晚上电对手机有影响吗)

    iphone充一晚上电对电池有影响吗(iPhone充一晚上电对手机有影响吗)

  • 怎么删除微信的表情包(怎么删除微信的状态设置)

    怎么删除微信的表情包(怎么删除微信的状态设置)

  • 蓝牙电池休眠冷冻激活(蓝牙电池休眠冷却多久)

    蓝牙电池休眠冷冻激活(蓝牙电池休眠冷却多久)

  • vivo日历活动怎么删除(vivo怎样关闭日历活动提醒)

    vivo日历活动怎么删除(vivo怎样关闭日历活动提醒)

  • 小米max怎么开启快充(小米max怎么打开)

    小米max怎么开启快充(小米max怎么打开)

  • 实况照片怎么拍3秒(荣耀实况照片怎么拍)

    实况照片怎么拍3秒(荣耀实况照片怎么拍)

  • 抖音如何解绑手机号码(抖音如何解绑手机号没有新号码)

    抖音如何解绑手机号码(抖音如何解绑手机号没有新号码)

  • 手机淘宝怎么实名认证(手机淘宝怎么进行实名认证)

    手机淘宝怎么实名认证(手机淘宝怎么进行实名认证)

  • 苹果11能支持5g网络吗(苹果11能支持20w快充吗)

    苹果11能支持5g网络吗(苹果11能支持20w快充吗)

  • 拼多多没人拼单怎么办(拼多多没人拼单会怎样)

    拼多多没人拼单怎么办(拼多多没人拼单会怎样)

  • 快手直播闪退怎么回事(快手直播时闪退)

    快手直播闪退怎么回事(快手直播时闪退)

  • 微信金山文档怎么取消(微信金山文档怎么看历史修改)

    微信金山文档怎么取消(微信金山文档怎么看历史修改)

  • oppoa5密码忘了怎么办(oppoa5密码忘了怎么样解锁不恢复出厂设置)

    oppoa5密码忘了怎么办(oppoa5密码忘了怎么样解锁不恢复出厂设置)

  • iphone11pro max尺寸(iphone11pro max尺寸多少厘米)

    iphone11pro max尺寸(iphone11pro max尺寸多少厘米)

  • 陌陌可以发红包吗(陌陌可以发红包的版本)

    陌陌可以发红包吗(陌陌可以发红包的版本)

  • Nuxt3从零开始配置与打包发布(nuxt支持vue3吗)

    Nuxt3从零开始配置与打包发布(nuxt支持vue3吗)

  • 6款常见的无人机仿真开发平台(附超详细特点功能对比)(最好用的无人品牌子)

    6款常见的无人机仿真开发平台(附超详细特点功能对比)(最好用的无人品牌子)

  • mysql索引建立的原则(mysql索引是否生效)

    mysql索引建立的原则(mysql索引是否生效)

  • 帝国cms升级到7.0 出现Unknown错误的解决办法(帝国cms升级到7.5后不能发布内容信息)

    帝国cms升级到7.0 出现Unknown错误的解决办法(帝国cms升级到7.5后不能发布内容信息)

  • 建筑公司办公室照片真实
  • 党建经费可以用来干什么
  • 其他收益怎么用
  • 顺风车公司可以开发票吗
  • 增值税专用发票使用规定 最新
  • 境内a上市公司非限售股股票转让所得怎么交个人所得税
  • 业务招待费扣除比例
  • 补开的银行手续费发票怎么做账
  • 税务局代开的增值税专票可以红冲吗?
  • 以前多计提了应付职工薪酬怎么平账?
  • 施工单位购买材料与设计不符
  • 年报中纳税总额怎么填
  • 原材料验收的重要性
  • 销售原材料的账务处理
  • 车辆租赁合同印花税怎么算
  • 营改增前取得的不动产出售的计税方法
  • 个人购买房屋的税
  • 废品残料回收入库
  • 冲抵货款销售返利会计分录怎么写?
  • 出口视同内销如何申报?
  • 去年的发票可以红冲重新开具吗?
  • 电脑中了勒索病毒要报警吗
  • 企业三大期间费用是什么
  • 如何安装u盘的系统
  • Tip是什么意思英语
  • 保险公司应收账款管理现状及存在的问题
  • 材料明细账的登记范本手写
  • php返回函数值的关键字
  • framework怎么用
  • 售后回租融资租赁案例
  • thinkphp 手机号和用户名同时登录
  • 小程序和h5页面的区别
  • php23种设计模式
  • php判断用户是否登录
  • 学费入账处理
  • 日用品属于哪个类型
  • 基本生产成本和辅助生产成本区别
  • 所得税申报资产总额平均值
  • element-ui tree 异步树实现勾选自动展开、指定展开、指定勾选
  • 资产处置收益的账务处理
  • 表单上传文件
  • mysql 数据库
  • mongodb简单使用
  • 怎么确定应付账款的完整性
  • 入库材料计入什么科目
  • 企业分配的股票股利宣告发放
  • 劳务发票去哪里开
  • sql server恢复
  • 代开发票相关问答有什么?
  • 免征增值税政策的政策有哪些?
  • 营业收入是指从全部营业收入中扣除
  • 医疗收费票据管理制度
  • 已认证发票是否已抵扣
  • 劳务合同如果不发工资怎么办
  • 教育费附加和地方教育费附加都要交吗
  • 向银行按揭贷款时,收入流水不够怎么办?
  • 代扣代缴的增值税额
  • 售楼部大楼
  • 建设期收到罚单怎么处罚
  • 进口增值税与关税发票哪里打印?
  • 出口退税的计算与流程
  • 废旧物资收购发票政策2018
  • 会计报表怎么算
  • 购买的垃圾袋计入什么科目
  • mysql 内存模型
  • 快速插入大量数据的asp.net代码(Sqlserver)
  • fedora系统怎么设置停电关机
  • WIN7系统如何设置表格默认保存位置
  • 如何解决win10系统开机一直转圈圈的问题
  • [视频大小超过限制,无法查看]怎么打开
  • js cocos
  • 直线画画
  • perl keys
  • cocos2djs教程
  • jq cookie
  • js实现文字闪烁的方法
  • 编程 delphi
  • 异地预缴的企业所得税带不出
  • 税务局风控
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设