WPS表格JSA之20:详解工作表+单元格操作

在UOS系统中使用WPS表格办公时,很多人会被重复的表格操作(比如批量修改工作表、填充单元格数据)困扰。学点WPS表格JS脚本操作,能轻松实现自动化处理,大幅提升办公效率。
一、工作表操作(新建/重命名/删除/切换,批量搞定)
工作表是表格数据的载体,日常办公中新建、重命名、删除多个工作表的操作很繁琐,用JS脚本可一键批量完成,以下是最常用的4个实例,覆盖90%场景。
实例1:新建工作表(指定名称+位置)
适用场景:批量新建月度报表工作表(如“1月数据”“2月数据”),无需手动点击「新建工作表」。
// 新建工作表(指定名称,插入到当前工作表之前)function createNewSheet() {// 获取当前活动工作簿const workbook = Application.ActiveWorkbook;// 新建工作表const newSheet = workbook.Sheets.Add();// 给新工作表命名newSheet.Name = "1月数据";// 激活新工作表(新建后自动切换过去)newSheet.Activate();// 提示操作完成alert("工作表「1月数据」新建成功!");}
实例2:批量重命名工作表(按规则统一命名)
适用场景:将现有工作表(Sheet1、Sheet2…)批量重命名为“产品1”“产品2”…,统一格式。
// 批量重命名工作表function renameSheets() {// 获取当前活动工作簿const workbook = Application.ActiveWorkbook;// 获取工作表总数const sheetCount = workbook.Worksheets.Count;// 循环遍历所有工作表,依次重命名for (let i = 1; i <= sheetCount; i++) {const sheet = workbook.Worksheets(i);// 重命名规则:产品+i(可修改为自己需要的规则,如“客户+i”)sheet.Name = "产品" + i;}alert(`共${sheetCount}个工作表,已批量重命名完成!`);}
实例3:删除指定工作表(避免误删,带判断)
适用场景:删除不需要的工作表(如“临时数据”),添加判断条件,防止误删重要工作表。
// 删除指定名称的工作表function deleteSheet() {// 获取当前活动工作簿const workbook = Application.ActiveWorkbook;// 目标删除工作表名称const targetName = "临时数据";const sheetCount = workbook.Worksheets.Count;// 循环查找目标工作表,找到后删除for (let i = 1; i <= sheetCount; i++) {const sheet = workbook.Worksheets(i);if (sheet.Name === targetName) {// 删除工作表(DisplayAlerts=false:关闭删除确认弹窗)Application.DisplayAlerts = false;sheet.Delete();Application.DisplayAlerts = true;alert(`工作表「${targetName}」已删除!`);return; // 找到后直接退出循环,避免多删}}// 若未找到目标工作表,提示信息alert(`未找到名称为「${targetName}」的工作表!`);}
注意:删除操作不可逆,建议运行前备份表格数据;DisplayAlerts=false用于关闭系统确认弹窗,可根据需求保留。
实例4:切换到指定工作表+获取工作表信息
适用场景:快速切换到目标工作表(如“汇总表”),并获取该工作表的编号、所用区域等信息,用于后续操作。
// 切换工作表并获取工作表信息function getSheetInfo() {// 获取当前活动工作簿const workbook = Application.ActiveWorkbook;// 目标切换工作表名称const targetName = "汇总表";let targetSheet = null;// 查找目标工作表const sheetCount = workbook.Worksheets.Count;for (let i = 1; i <= sheetCount; i++) {const sheet = workbook.Worksheets(i);if (sheet.Name === targetName) {targetSheet = sheet;break;}}if (targetSheet) {// 切换到目标工作表targetSheet.Activate();// 获取工作表信息(名称、所用区域行数)const sheetName = targetSheet.Name; // 工作表名称const sheetId = targetSheet.Index;//工作表编号const usedRows = targetSheet.UsedRange.Rows.Count; // 所用区域行数// 弹出信息提示alert(`已切换到工作表「${sheetName}」\n编号:${sheetId}\n已使用行数:${usedRows}`);} else {alert(`未找到「${targetName}」工作表!`);}}
二、单元格操作(取值/赋值/格式设置/批量填充,解放双手)
单元格是表格数据的最小单元,取值、赋值、格式设置是最基础的操作,用JS可实现批量处理,尤其适合大量数据录入和格式统一,以下实例覆盖常用场景,兼顾基础和进阶。
实例1:基础操作(单元格取值/赋值)
适用场景:获取指定单元格(如A1)的值,或给指定单元格(如B2)赋值,替代手动输入。
// 单元格取值+赋值基础操作function cellBaseOp() {// 获取当前活动工作表const sheet = Application.ActiveWorkbook.ActiveSheet;// 1. 给指定单元格赋值(A1赋值文本,B2赋值数字,C3赋值日期)sheet.Cells(1, 1).Value2 = "产品名称"; // Cells(行, 列),1=A列,2=B列...sheet.Cells(1, 2).Value2 = 100; // B2赋值数字100sheet.Cells(1, 3).Value2 = new Date(); // C3赋值当前日期// 2. 获取指定单元格的值(获取A1、B2的值并弹出提示)const a1Value = sheet.Cells(1, 1).Value2;const b2Value = sheet.Cells(1, 2).Value2;alert(`A1的值:${a1Value}\nB1的值:${b2Value}`);}
关键说明:Cells(行, 列)是核心语法,行和列均为数字(如A列=1、B列=2),无需记忆字母列标,新手也能快速上手。
实例2:批量填充单元格(指定范围,统一赋值)
适用场景:给指定单元格范围(如A2:A10)批量填充相同内容(如“未审核”),替代手动复制粘贴。
// 批量填充指定范围单元格function batchFillCell() {const sheet = Application.ActiveWorkbook.ActiveSheet;// 批量填充:A2到A10,全部填充“未审核”const range = sheet.Range("A2:A10"); // 指定单元格范围(和表格中输入范围一致)range.Value2 = "未审核";// 可选:给填充的单元格设置字体颜色(红色),让内容更醒目range.Font.Color = 255;alert("A2:A10范围已批量填充完成,字体设置为红色!");}
扩展:可修改Range范围(如“B2:D10”),填充内容也可改为数字、日期等,同时支持设置字体、字号等格式,颜色值不知是多少时可通过录制宏代码查看。
实例3:进阶操作(批量填充公式,动态计算)
适用场景:批量给指定范围单元格填充公式(如计算A列+B列的和、C列的含税价),无需手动输入公式,适合大量数据计算。
// 批量填充公式,实现动态计算function fillFormulaBatch() {// 关闭屏幕刷新(提升批量操作速度),操作完成后恢复Application.ScreenUpdating = false;const sheet = Application.ActiveWorkbook.ActiveSheet;// 获取表格已使用的最大行数(避免手动指定结束行)const lastRow = sheet.UsedRange.Rows.Count;// 循环填充公式(从第2行开始,跳过表头)for (let row = 2; row <= lastRow; row++) {// 1. D列:填充公式=A列+B列(如D2=A2+B2)sheet.Cells(row, 4).Formula = `=A${row}+B${row}`;// 2. E列:填充公式=C列*1.1(含税价,如E2=C2*1.1)sheet.Cells(row, 5).Formula = `=C${row}*1.1`;// 3. F列:填充IF判断公式(C列>1000显示“高”,否则显示“低”)sheet.Cells(row, 6).Formula = `=IF(C${row}>1000,"高","低")`;}// 关闭屏幕刷新(提升批量操作速度),操作完成后恢复Application.ScreenUpdating = true;alert(`公式填充完成!共处理${lastRow-1}行数据(跳过表头)`);}
实用技巧:该实例可直接用于报表计算(如销售数据汇总、成本核算),只需修改公式内容,就能适配不同场景,比手动输入公式高效10倍以上。
实例4:单元格格式设置(批量美化,统一规范)
适用场景:批量设置单元格格式(如表头加粗、居中、背景色,数字保留2位小数),让表格更规范、更美观。
function setCellFormat() {const sheet = Application.ActiveWorkbook.ActiveSheet;// 1. 设置表头格式(A1:F1,加粗、居中、黄色背景、黑色字体)const titleRange = sheet.Range("A1:F1");titleRange.Font.Bold = true; // 加粗titleRange.HorizontalAlignment = 2; // 2=水平居中(1=左对齐,3=右对齐)titleRange.Interior.Color = 65535; // 背景色黄色titleRange.Font.Color = "#000000"; // 字体颜色黑色// 2. 设置数字格式(B2:C10,保留2位小数)const numRange = sheet.Range("B2:C10");numRange.NumberFormat = "0.00"; // 保留2位小数// 3. 设置日期格式(G2:G10,格式为yyyy-mm-dd)const dateRange = sheet.Range("G2:G10");dateRange.NumberFormat = "yyyy-mm-dd";// 4. 调整列宽(A到F列,统一宽度为15)for (let col = 1; col <= 6; col++) {sheet.Columns(col).ColumnWidth = 15;}alert("单元格格式批量设置完成,表格已美化!");}
三、常见问题&注意事项(避坑必看)
-
脚本运行报错?先检查宏功能是否启用,再确认代码中工作表名称、单元格范围是否正确,避免拼写错误; -
无法获取单元格值?确保目标工作表是活动工作表,或在代码中明确指定工作表(如workbook.Worksheets(“汇总表”)); -
批量操作卡顿?在代码开头添加app.ScreenUpdating = false,操作完成后恢复为true,关闭屏幕刷新提升速度; -
语法不兼容?避免使用ES6+语法(如let、const可正常使用,但箭头函数、模板字符串需谨慎),示例代码均为兼容写法; -
安全提示?WPS会拦截未知脚本,运行前需确认脚本来源安全,避免运行陌生脚本导致数据泄露。
四、总结
以上就是UOS系统WPS表格中,JS操作工作表和单元格的核心方法及实例,覆盖新建、删除、取值、赋值、批量填充、格式设置等常用场景。
其实JS操作WPS表格的核心逻辑很简单:通过API获取工作表和单元格对象,再调用对应的属性和方法,实现自动化操作。新手可以从基础实例(如单元格赋值、新建工作表)开始,熟悉语法后再尝试进阶操作(如批量填充公式、多表汇总)。
学会这些脚本,能轻松解决重复办公难题,比如批量处理几百行数据、统一表格格式、多工作表汇总等,让你从繁琐的表格操作中解放出来,专注更重要的工作~
如果你有具体场景或疑问,欢迎在评论区留言,宝哥会尽力解答!

夜雨聆风
