ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] VBA 数据统计问题求助

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-4-11 17:54 | 显示全部楼层 |阅读模式
本帖最后由 nemenis 于 2024-4-11 18:48 编辑

对附件中的数据,名称如下图所示,要求:
1. 前两个_ _的数据(文件名中数字060224之前的数据)定义为lot,每个lot对应多个csv文件,只筛选出结尾包含SCA_HS的文件,如果同lot包含多个结尾有SCA_HS的文件,则取中间060224104128这串中间数字较大的那个csv文件
2. 选定对应lot 的csv文件后,将lot信息存储到工作表VBA_SUM中sheet“sum”第一列中。
3. 将选定对应lot的csv文件打开分列,取第一列第一个大于1.2的行对应的第二列数字填入sheet“sum”对应lot的第二列中;取第四列最大值填入sheet“sum”对应lot的第三列中



自己尝试编写了一个VBA,思路时先筛选结尾包含SCA_HS的文件,然后筛选属于同一lot的文件,最后再根据中间那串数字大小选定数字较大的csv文件,将lot信息放在放在附件excel:VBA_SUM中第一列,打开此csv文件并分列,取第一列第一个大于1.2的行对应的第二列数字填入sheet“sum”对应lot的第二列中;取第四列最大值填入sheet“sum”对应lot的第三列中。结果在筛选记录lot信息的时候就出现编译错误无法继续进行,请大神帮忙看下错误原因?谢谢。

另外,取第一列第一个大于1.2的行对应的第二列数字填入sheet“sum”对应lot的第二列中;取第四列最大值填入sheet“sum”对应lot的第三列中这个操作也请教一下有什么什么简便一些的方法?谢谢
image.jpg
image.jpg

data.7z

252.05 KB, 下载次数: 22

TA的精华主题

TA的得分主题

发表于 2024-4-11 18:30 | 显示全部楼层
060224104128这串中间数字较大的那个csv文件,应该就是lot相同的最后那个文件,对吧?

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-11 18:49 | 显示全部楼层
LIUZHU 发表于 2024-4-11 18:30
060224104128这串中间数字较大的那个csv文件,应该就是lot相同的最后那个文件,对吧?

是的,您理解的没错,但按照不同规格重新排列一下可能会变

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-11 18:50 | 显示全部楼层
本帖最后由 nemenis 于 2024-4-11 18:55 编辑


我一直卡在这个报错没搞清楚这个报错时什么原因
image.png

TA的精华主题

TA的得分主题

发表于 2024-4-11 19:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
好像是这个效果,重新写的
录制_2024_04_11_19_07_34_585.gif

TA的精华主题

TA的得分主题

发表于 2024-4-11 19:09 | 显示全部楼层
JSA代码,不是VBA
  1. function 提取数据(){
  2.         let fname=Dir(`${ThisWorkbook.Path}\\*HS.CSV`);
  3.         let obj={},res=[["LOT","Vge","Icsc"]];
  4.         while(fname!=""){
  5.                 let key=fname.split("_").slice(0,2).join("_");
  6.                 obj[key]=`${ThisWorkbook.Path}\\${fname}`;
  7.                 fname=Dir();
  8.         }
  9.         for (let key in obj){
  10.                 let fnum=FreeFile();
  11.                 Open(obj[key],fnum,jsInput);
  12.                 let k=0,m,n;
  13.                 while(!EOF(fnum)){
  14.                         let [a,b,c,d]=LineInput(fnum).split(/\t/g);
  15.                         if (++k<=7) continue;
  16.                         if (a>1.2 && m==null) m=b;
  17.                         n=n==null?d:(n<d?d:n);
  18.                 }
  19.                 res.push([key,m,n]);
  20.                 Close(fnum);
  21.         }
  22.         Sheets.Item("sum").Activate();
  23.         Cells.ClearContents();
  24.         Range("a1").Resize(res.length,res[0].length).Value2=res;
  25.        
  26. }
复制代码

TA的精华主题

TA的得分主题

发表于 2024-4-11 19:10 | 显示全部楼层
WPS打开测试下,Excel不行

0-VBA_SUM.zip

19.95 KB, 下载次数: 7

TA的精华主题

TA的得分主题

发表于 2024-4-11 19:14 | 显示全部楼层
nemenis 发表于 2024-4-11 18:49
是的,您理解的没错,但按照不同规格重新排列一下可能会变

从系统导出来的数据,名称一般还是比较有规律的

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-12 11:08 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
辛苦大佬帮忙,代码很简洁,不过公司电脑只有microsoft office,还是运行不了,还是谢谢您

TA的精华主题

TA的得分主题

发表于 2024-4-12 12:35 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
不知猜的对不对
image.png

评分

1

查看全部评分

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

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-6-17 12:39 , Processed in 0.052238 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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