【JS宏实战案例】自动核对报表报送情况,表姐表妹的福音来了

懒人办公
懒人办公

创作者俱乐部成员

【案例】某乡镇有20个村,表妹需要收集所有村的人员信息,现已收集了17个村的信息,但是由于各村报表人员素质不一,文件命名混乱,单从文件名,无法看出是哪个村的表,也不知道还差哪些村没报送。只有打开每个文件,才能从D2单元格中看出村名。

【结果】表妹需要得到下面的结果,A列是20个村的名称,B列是报送情况,凡是已报送的村,不管它的文件名是否规范,都能从后台提取其D2单元格的村名,在B列相应位置标记“已报送”,未报送的村,则不作标记,这样就能看出哪些村报送了,哪些村没报送。

【操作效果】具体操作效果如下:

【代码】具体代码如下,可按ALT+F11打开WPS宏编辑器,复制下面的代码粘贴到编辑器中。

function 核对报送情况() {

Application.ScreenUpdating=false //关闭屏幕刷新

obj={} //定义字典,存放报送单位

n=Range('a'+Rows.Count).End(xlUp).Row //获取最后行号

ar=Range('a4:a'+n).Value2 //将单位区域写入数组

ar.forEach(v=>obj[v]='') //将单位写入字典

dw=Range('c1').Value2 //将C1单元格的单位名称赋值给变量dw

let fd = Application.FileDialog(msoFileDialogFilePicker) //打开文件选择器

fd.Filters.Clear() //清除文件选择器内容

fd.Filters.Add('Excel文件', '*.xls;*.xlsx;*.xlsm') //显示EXCEL文件

fd.Title = '请选文件' //设置文件选择器标题

if (fd.Show() != -1) { //如果不选择任何文件

alert('你没选中文件!') //弹出提示

return; //结束退出函数

}

for (let i = 0; i < fd.SelectedItems.Count; i++) { //遍历文件

let f=fd.SelectedItems.Item(i + 1) //将文件名赋值给变量f

let wb = Workbooks.Open(f) //打开工作簿,赋值给对象wb

let dw1 = wb.ActiveSheet.Range(dw).Value2 //获取每张表格中的单位名称

wb.Close(false) //关闭工作簿(不保存)

obj[dw1]=='' ? obj[dw1]='已报送' : obj[dw1]='' //判断单位名称在字典中是否存在,存在则表示已报送

}

for(i=4;i<=n;i++){ //按单位名称循环

t=Cells.Item(i,1).Value2 //将单位名称写入变量t

if(obj[t]){ //判断送报单位在字典中是否存在

Cells.Item(i,2).Value2=obj[t] //如果存在就在B列写入“已报送”

}

}

Application.ScreenUpdating=true //关闭屏幕刷新

}

【素材下载】点击下方链接,下载文件到本地文件夹,在本地文件夹中打开,A列输入自己的单位名称,点击“查看报送情况”按钮,选择表格文件,即可实现自动核对。

https://kdocs.cn/l/clfrcEUJ43zn

贵州省
浏览 2164
2
20
分享
20 +1
21
2 +1
全部评论 21
 
徐露露
这个还是要用到vba才行,没有vba的怎么办哇
· 浙江省
回复
 
阖家幸福
有机会细细看
· 广西
回复
 
若你
讲解的很细致👍
· 云南省
回复
 
徼嘦嘂斠趫
讲解的非常透彻入骨,学到了很多知识
· 广东省
回复
 
。
讲解的非常详细,学到了很多知识
· 四川省
回复
 
偏执
讲的很好,真棒👍
· 上海
回复
 
DDDDDyb
讲的非常清楚
· 山西省
回复
 
楼楼
讲解的非常非常好,学习到了
· 浙江省
回复
 
默守.1份宁静
描述非常清晰。一下就自动提取出来需要的信息,这个真的很实用,学会了太提高工作效率了,必须收藏起来以备不时之事。
· 福建省
回复
 
admin
我怎么点击的是图片,无法点击了
· 新疆
回复
懒人办公
懒人办公

创作者俱乐部成员

先点左上角的按钮,用WPS打开,你直接打开是在线表,在线表目前还不支持宏功能
· 贵州省
回复
 
WPS超玩会大管家
WPS超玩会大管家

创作者俱乐部大管家

那表哥表弟的福利什么时候送到?
· 广东省
回复
懒人办公
懒人办公

创作者俱乐部成员

表哥表弟可以偷看
· 贵州省
回复
 
Mr 达
解释清楚,操作流程讲解透彻,值得信赖,良心推荐!
· 四川省
回复
 
懒人办公
懒人办公

创作者俱乐部成员

最后一行注释错了,改为:Application.ScreenUpdating=true //开启屏幕刷新,不改也没关系,并不影响运行效果
· 贵州省
回复
 
wps新路
wps新路

WPS函数专家

打开屏幕刷新?
· 重庆
回复
懒人办公
懒人办公

创作者俱乐部成员

写错了,不要在意这些细节
· 贵州省
回复
 
懒人办公
懒人办公

创作者俱乐部成员

这绝对是收表报表人员的福音,需要的小伙伴赶快下载吧
· 贵州省
回复
WPS_1686017130
为啥我测试不能多选文件呢?大佬
· 广东省
回复