她理财

登录 注册
#职场技能征集

来自上班那些事儿・148篇帖子・5967人参与

发帖
tobbyvic

大大提高效率之批量读取TXT中指定字符到指定单元格

tobbyvic
tobbyvic tobbyvic 2018-03-12 22:22 阅读(1320)

#职场技能有奖征集-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


粘贴后是这个样子:



最后点击运行之后,神奇的事情出现了!!  请看看原来的那个表



是不是感觉很真震惊~~

每一行就是一个文件中的对应的数值。。。


希望能帮到大家^^

只看楼主
全部回复(2)

回复楼主

回帖
小组话题

扫码下载

APP

iOS • Android

想理财却无从下手? 打开应用
通俗实用的理财课程