ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: ctp_119

[原创] 跟我学JavaScript in WPS

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-6-2 10:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
pc087 发表于 2022-6-2 08:59
单元格区域数据去重

方法好,简洁,,,值得学习!!!

TA的精华主题

TA的得分主题

发表于 2022-6-2 10:51 | 显示全部楼层
ctp_119 发表于 2022-5-29 19:49
接着上面,继续数组方法

           字符串转数组:

补充,在js里字符串转数组有种特别的写法 var arr = [..."abcd"],这种三点解构的方法,在js里应用的很广,也很有趣

点评

对,我也喜欢!!!  发表于 2022-6-2 17:28

TA的精华主题

TA的得分主题

发表于 2022-6-2 11:22 | 显示全部楼层
在js里,我个人觉得Map更贴近vba的字典
image.png
image.png

点评

一句话,JS中同一个问题,解决方案很多!!!  发表于 2022-6-2 17:30

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2022-6-3 18:53 | 显示全部楼层
pc087 发表于 2022-6-2 08:59
单元格区域数据去重


jsa里,同一个问题可以有多种解法,比vba数组自由多了

利用数组includes去重

利用数组includes去重

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-6-3 19:13 | 显示全部楼层
多工作簿多工作表提取数据.gif


//多工作簿多工作表汇总到一表中
function hz(){
        var path=ThisWorkbook.Path;      //把当前工作簿的路径赋值给变量path
        var myn=ThisWorkbook.Name;        //把当前工作簿的名字赋值给变量myn
        var sht=ActiveSheet;            //把当前工作表对象赋值给变量sht
        var str=path+"\\*.et";         //*号是通配符,表示扩展名为et的文件的完整路径
        var fn=Dir(str);               //用Dir函数得到该路径下的第一个et类型的文件名
        while(fn!=myn){             //不等于汇总工作簿就执行下列代码
                var wb=Workbooks.Open(path+"\\"+fn);       //打开fn工作簿,并把fn工作簿对象赋值给wb
                for (var sh of wb.Sheets){                //迭代fn工作簿中的工作表
                        var i=sh.Range("A65536").End(xlUp).Row;      //工作表中最大行号
                        var brr=new Array(i-1).fill(myn+"+"+sh.Name);      //把工作簿名称和工作表名称,填充一个数组,以便添加一个字段,说明数据来源
                        var arr=sh.Range("A2:p"+i).Value2;          //把单元格区域赋值给数组
                        sht.Range("A"+(sht.Range("A65536").End(xlUp).Row+1)).Resize(arr.length,16).Value2=arr;           //写入工作表
                        sht.Range("q"+(sht.Range("Q65536").End(xlUp).Row+1)).Resize(brr.length,1).Value2=brr;
                }
                wb.Close(false);     //关闭工作簿
                try{             //捕捉错误
                        fn=Dir();        //继续遍历下一个工作簿,直到最后空字符串
                }
                catch(err){break}      //发生错误,就跳出while循环
        }
}

TA的精华主题

TA的得分主题

发表于 2022-6-4 09:40 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

JSA因为数组有丰富的方法,所以合并表格变得方便很多
image.png

多表汇总_JSA.rar

6.75 KB, 下载次数: 100

实例文件

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-6-4 20:10 | 显示全部楼层
           在此感谢pc087坛友,他提供的flat()方法,后来我查资料,看书,深度学习了一下。现总结如下:
           flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
            var brr=arr.flat(depth);        //参数depth递归几层,默认值是1
             微信截图_20220604200630.png

           注意:arr始终都没有发生改变!!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-6-4 21:24 | 显示全部楼层
              变量递增(++)或递减(--)运算

              为什么会突然想到讲这个知识点,是有情结在里面的。想当年读书的时候,学习vc++的时候,硬是没有搞懂,不知道变量通过加加减减后的值。若干年后,自学却搞懂了!!!当年也不知道如何去调试代码,读的是死书。如今想想,可笑至极!!!
             注意,是变量的递增或递减,不是常量,所以2++或++2都是错误的。
            //变量的自增和自减运算
function test(){
        var i=1
        Console.log(i);     //i=1
        Debug.Print(i++);    //后++表示运行完这条语句后,表里i会增加1,这条语句的时候,还是变量的值,所以输出1
        Console.log(i);       //i=2
        Debug.Print(++i);     //前++表示变量先自增1后再运行该语句,所以输出3
        Console.log(i);
}
微信截图_20220604212135.png




TA的精华主题

TA的得分主题

发表于 2022-6-5 23:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
pc087 发表于 2022-6-2 08:59
单元格区域数据去重

这个是真厉害了,小白被震撼到了

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-6-6 07:51 | 显示全部楼层
              多工作薄多工作表提取数据的另外一种方法

              本方法采用的是filesearch方法:
                      微信图片编辑_20220606074829.jpg
     
                可以比较学习一下。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-21 18:30 , Processed in 0.045924 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表