作者:绿色风
分类:
时间:2022-08-17
浏览:145
楼主 wudixin96 |
Q:如果用VBA从TXT文件中提取数据到EXCEL里,并参与 计算?
A:看图,第三列为计算生成。
- Dim regex, s, arr(), i
- i = 0
- Set regex = CreateObject("vbscript.regexp") '建立正则对象用以匹配相应的字符
- regex.Pattern = "^.*FREQUENCY.*$|^.*E-\d{2}$" '设置匹配字符以匹配符合要求的行。
- Open ThisWorkbook.Path & "\初始文件.txt" For Input As #1 '打开文件,如果不存在会出错。
- Do While Not EOF(1) '判断是否到了文件的末尾,如果没有,一直循环读取行。
- Line Input #1, s '从文件中读取一行数据,并赋值给变量s。
- If regex.test(s) Then '判断变量s是否为匹配,如果匹配,则截取相应部分。
- i = i + 1
- ReDim Preserve arr(1 To 3, 1 To i)
- s = Mid(s, 23, 48) '截取s变量中字符串,从23位置开始截,截取48个字符
- s = Application.Trim(s) '删除前后空格及中间多余空格只有一个空格
- arr1 = Split(s, " ") '按空格拆分s变量中的字符串为数组
- arr(1, i) = arr1(0)
- arr(2, i) = arr1(2)
- If arr(1, i) <> "T1" Then
- arr(3, i) = arr(1, i) ^ 2 + arr(2, i) ^ 2
- Else
- arr(3, i) = ""
- End If
- End If
- Loop
- [h2].Resize(i, 3) = Application.Transpose(arr)
- Close #1 '关闭两个已打开的文件。
- 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总版主之一