ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如果用VBA从TXT文件中提取数据到EXCEL里,并参与 计算?

如果用VBA从TXT文件中提取数据到EXCEL里,并参与 计算?

作者:绿色风 分类: 时间:2022-08-17 浏览:97
楼主
wudixin96
Q:如果用VBA从TXT文件中提取数据到EXCEL里,并参与 计算?

A:看图,第三列为计算生成。


  1.      Dim regex, s, arr(), i
  2.     i = 0
  3.     Set regex = CreateObject("vbscript.regexp")   '建立正则对象用以匹配相应的字符
  4.     regex.Pattern = "^.*FREQUENCY.*$|^.*E-\d{2}$"        '设置匹配字符以匹配符合要求的行。
  5.     Open ThisWorkbook.Path & "\初始文件.txt" For Input As #1  '打开文件,如果不存在会出错。
  6.     Do While Not EOF(1)    '判断是否到了文件的末尾,如果没有,一直循环读取行。
  7.         Line Input #1, s  '从文件中读取一行数据,并赋值给变量s。
  8.         If regex.test(s) Then  '判断变量s是否为匹配,如果匹配,则截取相应部分。
  9.             i = i + 1
  10.             ReDim Preserve arr(1 To 3, 1 To i)
  11.             s = Mid(s, 23, 48)    '截取s变量中字符串,从23位置开始截,截取48个字符
  12.             s = Application.Trim(s) '删除前后空格及中间多余空格只有一个空格
  13.             arr1 = Split(s, " ") '按空格拆分s变量中的字符串为数组
  14.             arr(1, i) = arr1(0)
  15.             arr(2, i) = arr1(2)
  16.             If arr(1, i) <> "T1" Then
  17.                 arr(3, i) = arr(1, i) ^ 2 + arr(2, i) ^ 2
  18.             Else
  19.                 arr(3, i) = ""
  20.             End If
  21.         End If
  22.     Loop
  23.     [h2].Resize(i, 3) = Application.Transpose(arr)
  24.     Close #1    '关闭两个已打开的文件。
  25.     Set regex = Nothing    '清空变量regex。
工.jpg
 
夺.jpg
 
2楼
0Mouse
很不错的实例!提取文本文件中的所需内容,正则真是大有作为。
题目是“如何用”,不是“如果用”,笔误了。

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap