ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何用EXCEL批量处理TXT并将结果自动录入EXCEL

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-12-19 13:10 | 显示全部楼层
yangyangzhifeng 发表于 2012-12-19 12:57
请上传一个实际的txt文件

我传的那个TXT就是实际的其中一个,但我是选的一个很小的传的,它只有2万多行,其他的多有5万多行的,

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-12-19 13:13 | 显示全部楼层
因为其他的都太大了,一个都有好几M,,附件传不上。。。。

TA的精华主题

TA的得分主题

发表于 2012-12-19 14:05 | 显示全部楼层
放眼TOT 发表于 2012-12-19 13:13
因为其他的都太大了,一个都有好几M,,附件传不上。。。。

实际文件最后有一空行,改成这样
  1. Sub test()
  2.     Dim Arr, k&, ph$, fl$, sp1#, sp2#, brr, i&
  3.     Dim crr(), n&
  4.     ph = ThisWorkbook.Path & ""
  5.     fl = Dir(ph & "*.txt")
  6.     Do While fl <> ""
  7.         Open ph & fl For Input As #1
  8.         Arr = Split(StrConv(InputB(LOF(1), 1), vbUnicode), vbCrLf)
  9.         Reset
  10.         k = UBound(Arr)
  11.         sp1 = 0: sp2 = 0
  12.         For i = 0 To k
  13.             If Arr(i) <> "" Then
  14.                 brr = Split(Arr(i), ",")
  15.                 sp1 = sp1 + Val(brr(42))
  16.                 sp2 = sp2 + Abs(Val(brr(6)) - (Val(brr(24)) + Val(brr(25))) / 2) / Val(brr(6))
  17.             Else
  18.                 k = k - 1
  19.             End If
  20.         Next
  21.         sp1 = sp1 / (k + 1): sp2 = sp2 / (k + 1)
  22.         n = n + 1
  23.         ReDim Preserve crr(1 To 3, 1 To n)
  24.         crr(1, n) = brr(0)
  25.         crr(2, n) = sp1
  26.         crr(3, n) = sp2
  27.         fl = Dir
  28.     Loop
  29.     Sheet2.Range("a2:c" & Rows.Count).ClearContents
  30.     Sheet2.Range("a2").Resize(n, 3) = Application.Transpose(crr)
  31. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2012-12-19 14:59 | 显示全部楼层
本帖最后由 wxsumer 于 2012-12-19 15:11 编辑

你好,
Sub 试试这个()
'通过CMD运行语句将所有.txt文件合并
'Excel 放在.txt所在的文件夹
'路径注意: CMD不识别中文路径,简单的如 D:\111
PP = ThisWorkbook.Path
DD = "Stock_" & Date
aa = PP & "\" & DD & ".txt"
BB = ThisWorkbook.Name

'激活CMD
Shell "cmd /c type " & PP & "\*.txt > " & aa, vbNormalFocus

Application.Wait (Now + TimeValue("0:00:02"))
Workbooks.OpenText Filename:=aa, DataType:=xlDelimited
Windows(DD & ".txt").Activate
Cells.Copy

Windows(BB).Activate
Sheets("这里你要改成你要粘贴那一页的名字").Select
Cells.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Windows(DD & ".txt").Close

Windows(BB).Activate

end sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-12-19 22:45 | 显示全部楼层
yangyangzhifeng 发表于 2012-12-19 14:05
实际文件最后有一空行,改成这样


运行成功了!!好激动!!可是,出来的数跟我需要求的那两个量结果不一样啊。。。我需要求的spread1是txt文件中的第43列(也就是EXCEL的AQ)的平均数,另一个spread2是在最后面新插了一列求每行的=2*ABS(G1-(Y1+Z1)/2)/G1,再计算这求得的这列的平均数就是spread2.

麻烦您再修正一下啊,谢谢谢谢谢!!
我还是学生,今天一整天都上课去了,所以回复得比较晚。不好意思啊。

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-12-19 22:55 | 显示全部楼层
wxsumer 发表于 2012-12-19 14:59
你好,
Sub 试试这个()
'通过CMD运行语句将所有.txt文件合并

试了下,也是提示下标越界了,然后得到合并的EXCEL那个表格里面也没有逗号分隔出个列诶。。。而且我的数据太多了,,都合并不太现实啊。。。。。
谢谢能够回复!!!!!!!!!!!!!!!!!!!TAT

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-12-19 23:01 | 显示全部楼层
yangyangzhifeng 发表于 2012-12-19 14:05
实际文件最后有一空行,改成这样

sp2 = sp2 + Abs(Val(brr(6)) - (Val(brr(24)) + Val(brr(25))) / 2) / Val(brr(6))
我改了一下您的这段,因为我那个公式里G是第7列,Y和Z是25、26列,我以为是你不小心数字弄错了,可是改完算出的结果更加差别很大了,,,好奇怪啊。。。。。TAT。。。

TA的精华主题

TA的得分主题

发表于 2012-12-19 23:10 | 显示全部楼层
放眼TOT 发表于 2012-12-19 22:45
运行成功了!!好激动!!可是,出来的数跟我需要求的那两个量结果不一样啊。。。我需要求的spread1是t ...

程序应该没错,你的txt文件AQ列,有不少数据是200

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-12-19 23:17 | 显示全部楼层
yangyangzhifeng 发表于 2012-12-19 23:10
程序应该没错,你的txt文件AQ列,有不少数据是200

恩,可是就是跟我用自己录制的那个宏算出来的结果不一样。。。为啥。。。。就我上传的那个000008的TXT文件,我用自己录的宏求得的两个量是45.78297157和0.231298085,而用您给我的代码算出的两个量是45.74973228和0.115649043。。。。。

TA的精华主题

TA的得分主题

发表于 2012-12-19 23:18 | 显示全部楼层
放眼TOT 发表于 2012-12-19 23:01
sp2 = sp2 + Abs(Val(brr(6)) - (Val(brr(24)) + Val(brr(25))) / 2) / Val(brr(6))
我改了一下您的这段 ...

程序是照你的要求设计的,检查一下是不是你的文本文件数据本来就有差错,也没有表头都不知道这些数据是什么意思?严格按你说的位置设计计算式
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 03:45 , Processed in 0.042065 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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