大大提高效率之批量读取TXT中指定字符到指定单元格
#职场技能有奖征集-2018年3月
在工作中或者生活中,有没有遇到这样一种情形:要总结这一段时间的数据,需要将各个txt文本中对应的数据整理到一张表格中。这时候如果要是一个一个打开txt文件,然后找相关的数据可就头大了,一两个文件还好,要是有几十个txt文件,那可真是欲哭无泪啊。本次就跟大家分享一下Excel中如何批量TXT中指定的字符到指定的单元格
如图:要在test这个Excel文件中,把那三个txt中对应关键字的数值都汇总到这个表格中。
这三个txt文件的名称也都是没有规律的,下面来看看txt中的内容
每个txt中都有着对应的“日常开销”、“额外开销”、“收益”,我们的目标就是要找出这些关键字对应的值,然后将这些不同txt文件中对应的关键字的数值填充到不同行的表格中。
我们可以看到每个文件中数值前面的关键字都是一样的,都是“日常开销是”、“额外开销是”、“收益是”,接下来我们就是通过这个共同点来解决这个问题。
首先要说明一下,我们这次解决的方法,不需要一连串操作,只需要一串代码(是的!Excel中也能跑代码,你没有看错),,各位姐妹不用紧张,这一串代码是万能的,根本不需要改动,也不需要怎么看懂,大致知道是干嘛的就行了,用的时候复制-》粘贴 -》 运行即可,不同的地方只是在于修改要匹配的关键字就OK了。。
下面介绍一下,怎么运行代码,来让其自动填充,首先看下图,表格名-》右键 -》查看代码
然后会弹出这样一个框框
这个时候呢,不要方,看看是不是左上部分选中的是当前需要填充的表格,然后把下面的代码粘贴到右边大框框里面,点击运行(那个播放键)
Sub Clltxt()
Dim p$, f$, fso As Object, Txt As Object
Set fso = CreateObject("Scripting.FileSystemObject")
r = Array("日常开销是", "额外开销是", "收益是") '!!这里就是要匹配的文字,举例:如果要匹配txt中“产量是”,修改下就可以了
p = ThisWorkbook.Path & "\"
f = Dir(p & "*.txt")
ReDim arr(1 To 3000, 1 To 3) '!!上面关键字那里是几个,这里就把两个3换成几,比如4个,就是1 To 4000,1 To 4
'!!下面就是循环当前文件夹下的txt文件,并匹配每个文件中的关键字,并把后面的数字取出来,注意要搜寻的txt中数值要和关键字在一行
Do While f <> "" '
k = k + 1
Set Txt = fso.OpenTextFile(p & f, 1)
s = Txt.readall
For i = 0 To UBound(r)
ar = Split(s, r(i))
If UBound(ar) Then
sr = Split(ar(1), vbCrLf)
arr(k, i + 1) = sr(0)
End If
Next
Txt.Close
f = Dir
Loop
ActiveSheet.UsedRange.Offset(1).ClearContents
[a2].Resize(k, UBound(arr, 2)) = arr
Set Txt = Nothing
Set fso = Nothing
MsgBox "ok"
End Sub
粘贴后是这个样子:
最后点击运行之后,神奇的事情出现了!! 请看看原来的那个表
是不是感觉很真震惊~~
每一行就是一个文件中的对应的数值。。。
希望能帮到大家^^
还没有人回复,赶紧来抢沙发啦~