ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

跨工作簿查询,但是日期每月会变动

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-7-5 00:38 | 显示全部楼层 |阅读模式
各位老师好,

期望  “人力汇总” 表能汇总其他工作簿“人力系数”表内容,要注意的是每个项目的人力信息部分日期不一样,而且汇总表里的日期每月也会变动。



新人小白,翻阅了几天论坛,因为汇总表日期每月会变,没能写成功代码,恳请各位老师指导。感谢!!!


image.png

image.png

TA的精华主题

TA的得分主题

发表于 2022-7-5 08:11 | 显示全部楼层
上传你的excel附件,具体说明需求,最好模拟一点结果,才能得到满意的答案

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-7-5 09:32 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2022-7-5 09:48 | 显示全部楼层
建议发个附件不然被人很难回答

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-7-5 10:09 | 显示全部楼层
学习js宏 发表于 2022-7-5 09:48
建议发个附件不然被人很难回答

感谢提醒,忘了发附件。麻烦帮忙给看下,谢谢

跨工作簿查询,标题不一致.rar

32.63 KB, 下载次数: 5

TA的精华主题

TA的得分主题

发表于 2022-7-10 19:20 | 显示全部楼层
李糖糖 发表于 2022-7-5 10:09
感谢提醒,忘了发附件。麻烦帮忙给看下,谢谢
  1. function 人力汇总(){
  2.         ChDrive(ThisWorkbook.Path);
  3.         ChDir(ThisWorkbook.Path);
  4.        
  5.         let fname=Application.GetOpenFilename(...["Excel文件(*.xlsx)","*.xls*",,,true]);
  6.         if (fname==false){
  7.                 alert("未选择任何工作簿。");
  8.                 return;
  9.         }
  10.        
  11.         let sh=ThisWorkbook.Sheets.Item("系数表");
  12.         let c1=sh.Range("a2").End(xlToRight).Column
  13.         let xsarr=Range("a2").Resize(1,c1).Value2;
  14.         let obj=new Object();
  15.         for (let [i,v] of xsarr[0].entries()){
  16.                 obj[WorksheetFunction.Text(v,"yyyymm")]=i;
  17.         }
  18.        
  19.         Application.DisplayAlerts=false;
  20.         for (let f of fname){
  21.                 Workbooks.Open(f);
  22.                 let xmarr=ActiveSheet.Range("b9:i9").Value2[0];
  23.                 let temparr=[xmarr[1],xmarr[0],xmarr[2],xmarr[3],xmarr[4],xmarr[6],xmarr[7]];
  24.                
  25.                 temparr.length=xsarr[0].length;
  26.                
  27.                 let c2=ActiveSheet.Cells(11,Columns.Count).End(xlToLeft).Column;
  28.                 let r1=ActiveSheet.Cells(Rows.Count,3).End(xlUp).Row;
  29.                 let btarr=ActiveSheet.Cells(11,1).Resize(1,c2).Value2[0];
  30.                 let sjarr=ActiveSheet.Cells(r1,1).Resize(1,c2).Value2[0];
  31.                
  32.                 for (let [i,v] of btarr.entries()){
  33.                         let bt=WorksheetFunction.Text(v,"yyyymm");
  34.                         if (bt in obj){
  35.                                 n=obj[bt];
  36.                                 temparr[n]=sjarr[i];
  37.                         }
  38.                 }
  39.                 xsarr.push(temparr);
  40.                 ActiveWorkbook.Close(false);
  41.         }
  42.         if (xsarr.length>1){
  43.                 sh.Range("a2").Resize(xsarr.length,xsarr[0].length).Value2=xsarr;
  44.         }
  45.         Application.DisplayAlerts=true;
  46. }
复制代码

TA的精华主题

TA的得分主题

发表于 2022-7-10 19:21 | 显示全部楼层
附件在此,请测试。

人力汇总.zip

10.36 KB, 下载次数: 6

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-7-13 19:06 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-4 02:29 , Processed in 0.045481 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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