WPS通过js宏实现序列自动多级编号

WPS通过js宏实现序列自动多级编号

满足批量增行时自动修改编号,以及编号自动根据层级调整

实现目的

测试用例,按树状分组,使结构清晰

待实现功能

美化以后有时间再说

  • 代码还能优化,目前重新修改下单元格能实现效果,先上传一版
  • 根据层级自动设置该行单元格样式
  • 当某个用例不通过时,与父级一起突出显示。

效果预览

wps自动编号

实现代码

var isChange = true;
function Workbook_SheetChange(Sh, rg)
{
   
	//修改单元格时触发
	if(isChange){
   //由于使用修改单元格触发,增加判断变量,修改内容完毕后恢复
		Debug.GC();//触发垃圾回收
		//单次有瑕疵
		try{
   
			checkAndChangeNum();//序列校验			
		}catch(e){
   
			isChange = true;
		}
	}
}

function checkAndChangeNum()
{
   
	isChange = false;
	//--------↓↓↓↓↓---配置参数---↓↓↓↓↓--------
	let titleRow = 1;//标题占用行数---根据实际修改
	let orderTitle = '序列';//排序的字段名。单元格格式不能为数值!!!否则1.10会变为1.1
	let maxEmptyRow = 9;//一次性最大增行数,避免多余判断
	let maxEmptyCol = 9;//一次性最大增列数,避免多余判断
	//--------↑↑↑↑↑---配置参数---↑↑↑↑↑--------
	
	//最好指定工作表对象,不容易出错
	let wb = ThisWorkbook
	let sht = wb.ActiveSheet
	
	let isBreak = false;
	let curTitleRow = 0;//遍历标题行,最终为需排序字段所在行---修改序号起始行
	let curTitleCol = 0;//遍历标题列,最终为需排序字段所在列
	//遍历获取需排序字段所在行列
	for(var i=0;i<titleRow;i++){
   
		curTitleRow = i+1;
		Debug.Print("开始遍历标题第:"+curTitleRow+"行");
		let rowNum = 0;//当前行
		let emptyRow = 0;//连续空行
		let titles = sht.Range(''+curTitleRow+':'+curTitleRow+'')//遍历标题行数据,匹配字段排序的字段名
		for( title of titles){
   
			if(title.Text==orderTitle){
   
				curTitleCol = title.Column;
				//获取到需要自动修改序号列
				isBreak = true;
				break;
			}
			
			if(rowNum!=title.Row){
   
				rowNum=title.Row
				emptyRow = 0;//计次重置
			}else if(title.Text==null || title.Text==''){
   
				emptyRow++;
			}
			
			if(emptyRow>maxEmptyRow){
   
				Debug.Print("连续空值超"+maxEmptyRow+"次,跳出循环。");
				break;
			}
			
		}
		
		//判断是否拿到目标所在列,拿到之后跳出循环
		if(isBreak){
   
			Debug.Print("获取到排序字段所在行:"+curTitleRow+",列:"+curTitleCol);
			break;
		}else{
   
			Debug.Print("继续循环下一行");
		}
	}
	
	//将列数转为列名,可能有更好方法
	let colNames = ["a","b","c","d","e","f","g","h"</
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值