ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] JS问答练习帖

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-17 11:24 | 显示全部楼层
问题Q:1行标题如何(去除空值)转化为1列值?
举例1:1行标题如何(去除空值)转化为1列值?

function text(){
        var arr1=Range("a1:f1").Value()[0];
        var arr2=[],num=0;
        for (var st in arr1){
                if (arr1[st]!=null){
                arr2[num]=arr1[st];num++                       
                }
        }        Range("l1").Resize(arr2.length,1).Value2=null
                Range("l1").Resize(arr2.length,1).Value2=WorksheetFunction.Transpose(arr2)
}

TA的精华主题

TA的得分主题

发表于 2024-8-17 12:00 | 显示全部楼层
  1. function test07(){
  2.         _26 : {
  3.                 let file = Dir(`${ThisWorkbook.Path}/*.*`)
  4.                 while(file){        // 空字符串转布尔值时为false
  5.                         console.log(file)
  6.                         file = Dir()
  7.                 }
  8.                 alert("文件已检索完毕")
  9.         }
  10.         _27 : {
  11.                 // 如果Array.form第一参是一个数组对象,写得就哆嗦了,直接调用数组的flat方法就可以了
  12.                 let arr1 = Range("a1",Range("a999").End(xlUp)).Value().flat()        // 单列转一维数组
  13.         let arr2 = Range("a1").Resize(1,5).Value()[0]                                        // 直接就是一维数组
  14.         }
  15.         _28 : {
  16.                 var arr=[85,86,84,89,95,97,92];
  17.                 var newArr = arr.filter(n => n >= 90)        // 直接用filter
  18.         Range("e1").Resize(1,newArr.length).Value2 = newArr
  19.         }
  20. }
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-17 14:16 | 显示全部楼层
问题Q:单元格字符串去重合并?
举例1:将"231821258529"去重合并?

/*function text(){
        var rng=String(Range("a1").Value());brr1=[]
                var arr1=rng.match(/\d/g);
                        var brr1=arr1.filter((x,st,self)=>self.indexOf(x)==st);
                                Range("b1").Value2=`${brr1.join("")}`
}*/

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-18 09:22 | 显示全部楼层
问题Q:获取每一行最大值?
举例1:获取每一行最大值?

/*function text(){
        var lastrow=Range("g999").End(xlUp).Row;
        var arr1=Array.from(Range("b2:g"+lastrow).Value());
        var brr1=[];
        for (var s=0;s<lastrow;s++){
                try{
                        var at=WorksheetFunction.Max(arr1[s]);
                        var brr1=[...brr1,at]
                }catch(err){
                        return;
                }
                        Range("i2:i"+lastrow).Delete();
                        Range("i2:i"+lastrow).Value2=WorksheetFunction.Transpose(brr1)
        }
}*/

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-18 12:12 | 显示全部楼层
问题Q:map方法迭代?
举例1:0-9序列与0-8序列相乘显示?

function text(){
        var arr1=[...new Array(4).keys()];
        var arr2=[...new Array(3).keys()];
        var arr3=arr1.map(x=>arr2.map(y=>`${x}×${y}=${x*y}`));
        var arr4=arr3.flat();
        console.log(`${arr3}`)
}

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-18 15:31 | 显示全部楼层
问题Q:数据匹配引用同行数据?
举例1:根据A列序号,检索数据源区域所需结果?

/*function text(){
        var fst=WorksheetFunction;
        var lst=Range("a99").End(xlUp).Row
        for (var sss=1;sss<=lst;sss++){
                var arr0=Array.from(Range("a"+sss).Value());
                var arr1=Array.from(Range("n1:n10").Value(),x=>x[0]);
                var brr=[]
                for (var snt=0;snt<arr1.length;snt++){
                         var arr2=Array.from(arr1,x=>x==arr0[snt]);
                         try{
                          var n=fst.Match(true,arr2,0)
                         var brr=[...brr,Range(`o${n}:q${n}`).Value()[0]]                                
                         }catch(err){
                                 break
                         }
        }Range("a"+sss).Offset(0,1).Value2=`${brr.join("/")}`
        }
}*/

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-18 16:24 | 显示全部楼层
问题Q:去除单元格汉字,保留数字符号?
举例1:去除单元格汉字,保留数字符号?

function text(){
        let st=Range("a1").Value();
        let rn=st.split(/[一-龟]+/gs);
                Range("b1").Value2=(`${rn.join("")}`)
}

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-18 17:44 | 显示全部楼层
问题Q:正则提取中英文字符串?
举例1:提取中英文字符串?

function text(){
        var fst=WorksheetFunction;
        var lst=Range("a99").End(xlUp).Row
                for (sss=4;sss<=lst;sss++){
                        try{
                            let at=Range("a"+sss).Value();
                            let nt=at.match(/(?=[A-z])[A-z0-9-一-龟]+(?=.费|\s|、)/gs);
                                   let mt=Range("a"+sss).Offset(0,2).Resize(1,nt.length).Value2=nt;
                        }catch(err){
                                break
                        }
                }
}

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-19 14:32 | 显示全部楼层
问题Q:指定打印机直接打印选择表?
举例1:指定打印机直接打印选择表?

/*function text(){
        var pr1136="HP LaserJet Professional M1136 MFP";
        for (var st of Sheets){
                 var sst=st.Name;
                 switch(String(sst)){
                        case "D":Worksheets.Item("D").PrintOut("pr1136");break
                        case "F":Worksheets.Item("F").PrintOut("pr1136");break
                        case "G":Worksheets.Item("G").PrintOut("pr1136");break
                        default:break
                }
        }
}*/

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-19 19:57 | 显示全部楼层
问题Q:表格颜色清除、2列数据和为0删除整行?
举例1:复制一份表格,进行问题Q操作?(会报错,要多运行几次)?

function textcopy(){
                var sss=Worksheets.Count;
                        if (sss<2){
                                var st=Sheets.Copy(null,Worksheets("数据原表"));
                                        Sheets(2).Name="修改";
                    }
                    
                var lst=Range("a999").End(xlUp).Row;
                var fst=WorksheetFunction
                        for (var nnn=2;nnn<=lst;nnn++){
                                try{
                                        Range(`e${nnn}:f${nnn}`).Interior.ColorIndex=xlColorIndexNone
                                            var sst=fst.Sum(Range(`e${nnn}:f${nnn}`).Value());
                                 if (sst==0){
                                         Range(`a${nnn}:f${nnn}`).Delete()
                                }
                                        }catch(err){break}
                                }
}

28、复制表格并清除颜色,删除数据和为空整行.zip

12.99 KB, 下载次数: 4

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-25 02:41 , Processed in 0.036528 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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