|
|
楼主 |
发表于 2026-10-27 09:01:43
|
显示全部楼层
办公WPS表格代码JSA //旧版
//逐个显示表格选区内单元格 //显示可换成其他逐个操作单元格
//可多个小区块,重叠单元格只处理一次,整行/整列只处理在用区UsedRange内的
- function 显示区内单元格测试(){
- console.clear();
- let 当前表=ActiveSheet,选中区域=Selection;
- let 单元格地址对象=区域内单元格(当前表,选中区域); //活动表,选中多区
- for(let 格地址属性 in 单元格地址对象){
- if(单元格地址对象.hasOwnProperty(格地址属性)){
- console.log("地址属性:"+ 格地址属性 +"\t值:"+ 单元格地址对象[格地址属性]);
- let 单元格=当前表.Range(格地址属性);
- //可以对单元格进行操作。如:
- //单元格.Value2=2; //修改内容
- //单元格.Interior.Color = 0xC0FF; //设置背景橙色
- }
- }
- }
- function 区域内单元格(表,选区){ //旧版函数:返回单元格对象
- let 在用区=表.UsedRange;console.clear();
- let 单元格对象={},计数=0;
-
- //遍历选区内所有小方块
- console.log("选区地址:"+选区.Address() +"\t在用区:"+ 在用区.Address());
- let 选区地址=选区.Address();
- let 选区块组=选区地址.split(',');
- for(let 块号=0;块号<选区块组.length;块号++){
- let 有效地址=选区块组[块号]; //console.log("块"+块号+":"+选区块组[块号]);
-
- //处理整行、整列的区 //整两行$7:$8 //整列$D:$D
- let 区块待判地址=选区块组[块号].replace(/[$]/g,'');
- let 区块无行地址=区块待判地址.replace(/[\d]/g,''); //地址去除数字
- if(区块无行地址==':'){ //整行区,取在用区内部分
- if(Intersect(在用区,表.Range(区块待判地址))){
- let 整行在用区=Range(在用区.Address() +" "+ 区块待判地址);
- //console.log("块"+块号+":"+ 选区块组[块号] + "\t整行取重叠在用:"+ 整行在用区.Address());
- 有效地址=整行在用区.Address();
- }else{
- console.log("块"+块号+":"+选区块组[块号]+ "\t//整行不在用区跳过");continue; //整行跳过
- }
- }
- let 区块无列地址=区块待判地址.replace(/[a-zA-Z]/g,'');
- if(区块无列地址==':'){ //整列区,也是取在用区内部分
- if(Intersect(在用区,表.Range(区块待判地址))){
- let 整列在用区=Range(在用区.Address() +" "+ 区块待判地址);
- //console.log("块"+块号+":"+ 选区块组[块号] + "\t整列取重叠在用:"+ 整列在用区.Address());
- 有效地址=整列在用区.Address();
- }else{
- console.log("块"+块号+":"+选区块组[块号]+ "\t//整列不在用区跳过");continue; //整列跳过
- }
- }
-
- //获取普通区块的行号列号,遍历区内每个单元格
- let 单块有效区=表.Range(有效地址);
- let 单块起止=有效地址.split(':');
- let 起始格=表.Range(单块起止[0]),终止格=表.Range(单块起止[1]);
- for(let 行号=起始格.Row;行号<=终止格.Row;行号++){
- for(let 列号=起始格.Column;列号<=终止格.Column;列号++){
- let 单元格=表.Cells(行号,列号);
- let 格地址=单元格.Address(0,0);
- if(typeof 单元格对象[格地址]=="undefined"){单元格对象[格地址]=1;计数++;} //存单元格地址
- else{单元格对象[格地址]++;}
- //console.log("属性:"+ typeof 单元格对象[单元格.Address(0,0)]);
- }
- }
- console.log("块"+块号+":"+选区块组[块号] +"\t有效:"+有效地址 +"\t行列数:"+单块有效区.Rows.Count +","+ 单块有效区.Columns.Count);
- }
- console.log("单元格数量:"+ 计数);
- return 单元格对象;
- }
复制代码 |
|