Office实用小技能get高效率办公&科研VBA For Excel

EXCEL批量读取TXT中指定字符到指定单元格

2018-03-13  本文已影响4人  tobbyvic

在工作中或者生活中,有没有遇到这样一种情形:要总结这一段时间的数据,需要将各个txt文本中对应的数据整理到一张表格中。这时候如果要是一个一个打开txt文件,然后找相关的数据可就头大了,一两个文件还好,要是有几十个txt文件,那可真是欲哭无泪啊。本次就跟大家分享一下Excel中如何批量TXT中指定的字符到指定的单元格!

如图:要在test这个Excel文件中,把那三个txt中对应关键字的数值都汇总到这个表格中。

image

这三个txt文件的名称也都是没有规律的,下面来看看txt中的内容

image

每个txt中都有着对应的“日常开销”、“额外开销”、“收益”,我们的目标就是要找出这些关键字对应的值,然后将这些不同txt文件中对应的关键字的数值填充到不同行的表格中。

我们可以看到每个文件中数值前面的关键字都是一样的,都是“日常开销是”、“额外开销是”、“收益是”,接下来我们就是通过这个共同点来解决这个问题。

首先要说明一下,我们这次解决的方法,不需要一连串操作,只需要一串代码(是的!Excel中也能跑代码,你没有看错),,各位不用紧张,这一串代码是万能的,根本不需要改动,也不需要怎么看懂,大致知道是干嘛的就行了,用的时候复制-》粘贴 -》 运行即可,不同的地方只是在于修改要匹配的关键字就OK了。。

下面介绍一下,怎么运行代码,来让其自动填充,首先看下图,表格名-》右键 -》查看代码

image

然后会弹出这样一个框框

image

这个时候呢,不要方,看看是不是左上部分选中的是当前需要填充的表格,然后把下面的代码粘贴到右边大框框里面,点击运行(那个播放键)

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

粘贴后是这个样子:

image

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

image

是不是感觉很真震惊~~

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

希望能帮到大家^^

上一篇 下一篇

猜你喜欢

热点阅读