ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] txt批量导入不同sheet并进行数据处理 部分功能已自行搞定

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-10-31 20:58 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 wtoily 于 2017-11-1 21:41 编辑

遇到很多需要批处理的测试文件,切需要作图和数据统计,再考虑能否批量化,目的如下,例子以及实现的效果将附件,请各位大侠帮忙:


1. 将所在文件夹的txt批量导入到一个Excel文件的不同sheet,sheet名称与txt文件名一致(备注:这里的txt有点特殊,第一行数据是一个日期,用双引号标注的,其余数据均已空格作为断列的参数);
"2017-05-20 at 18:20"
Date Time) A B C D E F G
2017-05-20 18:20:08 407.76 2.10 -15.65 51.15 86.78 0.0731 0.0168
2. 数据处理,对所有sheet添加一列(例子中的J列),内容为从1到n的逐1增加的序列,n与数据的行数一致;
3. 作图,对所有数据做以J列数据(J3开始为)横坐标,C列数据(C3开始)为纵坐标的散点图,图名称为A1的数据;
4. 简单计算(例子中xls文件绿色部分),使L2,M2,N2,O2,P2单元格中内容依次为ID,Day,time,Slop;使L3,M3,N3,O3,P3依次为L3:=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))
M3:=A$3
N3:=B$3
O3:=(P3^0.5)*STDEV(C$3:C$10000)/STDEV($J$3:$J$10000)
P3:=(CORREL(J$3:J$10005,$C$3:$C$10005)^2)

非常感谢。
11月1日更新:已搞定生成sheet的代码,以及对单个表格生成序号的代码(求批处理的方法),求生成散点图及获取相关系数及相关性的代码


帮忙.zip

34.44 KB, 下载次数: 11

例子

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-10-31 21:10 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
以上不一定要一个代码完成,几个代码分步完成也可以的!

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-11-1 00:24 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
第一步,批量生成sheet表格已经完美解决,代码如下:
  1. Sub addSht()
  2.     Dim Fso As Object, Fl As Object
  3.     Dim oClp As Object, Str$, i%, m%
  4.    
  5.     Set Fso = CreateObject("Scripting.FileSystemObject")
  6.     Set oClp = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
  7.     For Each Fl In Fso.getfolder(ThisWorkbook.Path & "/").Files
  8.         If Fl.Name Like "*.txt" Then
  9.             i = i + 1
  10.             If i > Sheets.Count Then Sheets.Add after:=Sheets(Sheets.Count)
  11.             Sheets(i).Name = Replace(Fso.getfilename(Fl), ".txt", "")
  12.             Open Fl For Input As #1
  13.             Str = StrConv(InputB(LOF(1), 1), vbUnicode): Reset
  14.             For m = 1 To 10
  15.                 Str = Replace(Str, "  ", " ")
  16.             Next
  17.             oClp.settext Replace(Str, " ", vbTab)
  18.             oClp.putinclipboard
  19.             Sheets(i).Paste Sheets(i).[A1]
  20.             oClp.Clear
  21.         End If
  22.     Next
  23.    
  24.     Set oClp = Nothing
  25. End Sub
复制代码


求添加序列以及画图的代码,灰常感谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-11-1 21:39 | 显示全部楼层
第二部 单个表格在制定列生成序列号已经搞定,但是不知道如何批量对所有表格进行批处理。代码如下:
  1. Sub mysub()
  2. Dim i As Integer, x As Integer
  3. x = 0
  4. For i = 3 To [b65536].End(xlUp).row
  5. If Range("a" & i) <> "" Then
  6. Range("j" & i) = x + 1
  7. x = x + 1
  8. End If
  9. Next i
  10. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-11-2 03:21 | 显示全部楼层
经过2天自学,总算实现全部功能了!
但发现txt转为sheet文件过程中容易出错,貌似是通病,不知道如何优化。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-10 02:21 , Processed in 0.022541 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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