ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] JS问答练习帖

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-15 18:59 | 显示全部楼层
问题:函数创建数组?
举例1:函数创建数组的方法?

function text(){
        let arr1=new Array();               //创建1个空数组[]
        let arr2=new Array(5);                                //创建1个5个元素的数组
        let arr3=new Array(10,4,8);                        //创建[10,4,8]数组
        let arr4=Array.of();                                //创建1个空数组
        let arr5=Array.of(5);                            //创建数组[5]
        let arr6=Array.of(10,4,8);                        //创建数组[10,4,8]
       
        let arr7=[1,2,3];
        let arr8=Array.from(arr7);                        //等同于[...arr7],当arr7内元素值变化,arr8初始数值不变
        let arr9=Array.from("abc985");      //等同于[..."abc985"]==[a,b,c,9,8,5]
        let arr10=Array.from(arr7,x=>x*10)  //生成数组[10,20,30]
}       

TA的精华主题

TA的得分主题

发表于 2024-8-15 20:25 | 显示全部楼层
我的城市你来过 发表于 2024-8-15 17:25
问题Q:数组去重?
举例1:已知A列数据,去重填入B列?(运行速度慢,未排序,待优化)

filter去重,好像也不慢啊! 1.jpg

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-8-16 08:16 | 显示全部楼层
我的城市你来过 发表于 2024-8-15 17:25
问题Q:数组去重?
举例1:已知A列数据,去重填入B列?(运行速度慢,未排序,待优化)
  1. function test04(){
  2.     let arr = Range("A1",Cells(Rows.Count, 1).End(xlUp))()
  3.     let res = [...new Set(arr.flat())].map(v => [v])
  4.     Range('B1').Resize(res.length, 1).Value2 = res
  5. }
复制代码


评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-16 09:01 | 显示全部楼层
问题Q:比较2个单元格值?
举例1:单元格a1(日常变化),更新后比较单元格b1,取最大值填入b1单元格?

function text(){
        let rn=InputBox("请入A1单元格数值");
                let a1=Range("a1").Value2=Number(rn);
                let b1=Range("b1").Value2
                        Range("b1").Value2=WorksheetFunction.Max(a1,b1)
}

TA的精华主题

TA的得分主题

发表于 2024-8-16 10:46 | 显示全部楼层
代码收集站啊,真好!感谢楼主分享

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-16 14:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
问题Q:获取文件夹中的工作薄名?
举例1:获取文件夹中的工作薄名?

/*function text(){
        let pah=ThisWorkbook.Path;
                let file=Dir(`${pah}/*.*`);
                        while (true){
                                Console.log(file);
                                try{
                                        file=Dir();
                                }catch(err){
                                        alert("工作薄已检索完毕");break
                                }
                        }
}*/

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-16 15:29 | 显示全部楼层
问题Q:单行、单列单元格数据转数组?
举例1:单行、单列单元格数据转数组?

function text(){
        let arr=Array.from(Range("a1",Range("a999").End(xlUp)).Value(),x=>x[0]);brr=[]
        brr=[...brr,arr]
        Console.log(`${brr}`)
       
        let arr1=Array.from(Range("a1").Resize(1,5).Value()[0]);
        Console.log(`${arr1}`)
}

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-17 08:35 | 显示全部楼层
问题Q:数组的修改读写?
举例1:将数组中满足条件的值输出至单元格区域?

function text2(){
        var arr=[85,86,84,89,95,97,92];
        var newarr=[],num=0
        for (var i in arr){
                if (arr[i]>=90){
                        newarr[num]=arr[i];
                        num++
                }
        }Range("e1").Resize(1,newarr.length).Value2=newarr
}

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-17 09:13 | 显示全部楼层
本帖最后由 我的城市你来过 于 2024-8-17 09:47 编辑

问题Q:一维行数组转列数组?
举例1:将[1,2,3]填入E列1至3行单元格内?

function text(){
        let arr1=Range("a1",Range("e999").End(xlup).Value()[0];                              //获取行数组
        let arr2=Array.from(Range("a1",Range("a999").End(xlUp)).Value(),x=>x[0]);                //获取列数组
        Range("e1:e3").Value2=WorksheetFunction.Transpose([1,2,3])                                                //行数组转列
}

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-17 09:48 | 显示全部楼层
问题Q:箭头函数用法?
举例1:列举箭头函数的方程格式?

function text1(){
        let sum1=function(x,y){var z=x+y;return z};alert(sum1(1,8))                        //结果9
        let sum2=(x,y)=>{var z=x+y;return z};alert(sum2(2,5))                                //结果7
        let sum3=(x,y)=>{return x+y};alert(sum3(10,20))                                                //结果30
        let sum4=(x,y)=>x+y;alert(sum4(100,200))                                                        //结果300
        let sum5=x=>x*9;alert(sum5(6))                                                                                //结果54
        let sum6=()=>50;alert(sum6())                                                                                //结果50
        alert((x=>x*x)(9))                                                                                                        //结果81
        alert(((x,y)=>x-y)(9,7))                                                                                        //结果2
}
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-25 03:01 , Processed in 0.038681 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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