如何用excel批量读取txt中固定行列的数据
比如说我有24个txt。文件名为001到024,我想用excel批量读取这24个txt中的第三行第四列的数据,有什么办法吗。大侠帮忙,多谢了!...
比如说我有24个txt。文件名为001到024,我想用excel批量读取这24个txt中的第三行第四列的数据,有什么办法吗。大侠帮忙,多谢了!
展开
展开全部
'将如下宏代码粘贴到excel的VBA编辑器中,按F5运行即可,注意修改你的txt文件所在的目录。
Sub ReadTxt()
Dim Path As String, MyValue As String, fn As Long
Path = "C:\test" '假定你的24个txt文件处在C:\test 文件夹中,可以自行修改
fn = FreeFile
For i = 1 To 24
j = 0
Open "C:\test\" + Format(i, "000") + ".txt" For Input As fn
Do Until EOF(fn)
Line Input #fn, MyValue
j = j + 1
If j = 3 Then Exit Do
Loop
Close #fn
MyValue = Trim(MyValue)
If InStr(MyValue, ",") Then '假设各列的数据分隔符为中文逗号,如果是英文逗号,自行修改为InStr(MyValue, ",")
pos = inst(MyValue, ",")
If pos Then
pos = InStr(pos + 1, MyValue, ",")
If pos Then
pos = InStr(pos + 1, MyValue, ",")
If pos Then
MyValue = Mid(MyValue, pos + 1)
pos = InStr(MyValue, ",")
If pos Then MyValue = Left(MyValue, pos - 1)
End If
End If
End If
ElseIf InStr(MyValue, " ") Then '假设各列的数据分隔符为空格
Do
a = Len(MyValue)
MyValue = Replace(MyValue, " ", "")
Loop While a <> Len(MyValue)
pos = inst(MyValue, " ")
If pos Then
pos = InStr(pos + 1, MyValue, " ")
If pos Then
pos = InStr(pos + 1, MyValue, " ")
If pos Then
MyValue = Mid(MyValue, pos + 1)
pos = InStr(MyValue, " ")
If pos Then MyValue = Left(MyValue, pos - 1)
End If
End If
End If
ElseIf InStr(myvale, vbTab) Then '假设每一行的各列的分隔符为一个Tab制表符
Do
a = Len(MyValue)
MyValue = Replace(MyValue, vbTab + vbTab, vbTab)
Loop While a <> Len(MyValue)
pos = inst(MyValue, vbTab)
If pos Then
pos = InStr(pos + 1, MyValue, vbTab)
If pos Then
pos = InStr(pos + 1, MyValue, vbTab)
If pos Then
MyValue = Mid(MyValue, pos + 1)
pos = InStr(MyValue, vbTab)
If pos Then MyValue = Left(MyValue, pos - 1)
End If
End If
End If
End If
Cells(i, 1) = myvale '将提取的数据填充在第一列的各行中
Next
MsgBox "处理提取完毕!"
End Sub
Sub ReadTxt()
Dim Path As String, MyValue As String, fn As Long
Path = "C:\test" '假定你的24个txt文件处在C:\test 文件夹中,可以自行修改
fn = FreeFile
For i = 1 To 24
j = 0
Open "C:\test\" + Format(i, "000") + ".txt" For Input As fn
Do Until EOF(fn)
Line Input #fn, MyValue
j = j + 1
If j = 3 Then Exit Do
Loop
Close #fn
MyValue = Trim(MyValue)
If InStr(MyValue, ",") Then '假设各列的数据分隔符为中文逗号,如果是英文逗号,自行修改为InStr(MyValue, ",")
pos = inst(MyValue, ",")
If pos Then
pos = InStr(pos + 1, MyValue, ",")
If pos Then
pos = InStr(pos + 1, MyValue, ",")
If pos Then
MyValue = Mid(MyValue, pos + 1)
pos = InStr(MyValue, ",")
If pos Then MyValue = Left(MyValue, pos - 1)
End If
End If
End If
ElseIf InStr(MyValue, " ") Then '假设各列的数据分隔符为空格
Do
a = Len(MyValue)
MyValue = Replace(MyValue, " ", "")
Loop While a <> Len(MyValue)
pos = inst(MyValue, " ")
If pos Then
pos = InStr(pos + 1, MyValue, " ")
If pos Then
pos = InStr(pos + 1, MyValue, " ")
If pos Then
MyValue = Mid(MyValue, pos + 1)
pos = InStr(MyValue, " ")
If pos Then MyValue = Left(MyValue, pos - 1)
End If
End If
End If
ElseIf InStr(myvale, vbTab) Then '假设每一行的各列的分隔符为一个Tab制表符
Do
a = Len(MyValue)
MyValue = Replace(MyValue, vbTab + vbTab, vbTab)
Loop While a <> Len(MyValue)
pos = inst(MyValue, vbTab)
If pos Then
pos = InStr(pos + 1, MyValue, vbTab)
If pos Then
pos = InStr(pos + 1, MyValue, vbTab)
If pos Then
MyValue = Mid(MyValue, pos + 1)
pos = InStr(MyValue, vbTab)
If pos Then MyValue = Left(MyValue, pos - 1)
End If
End If
End If
End If
Cells(i, 1) = myvale '将提取的数据填充在第一列的各行中
Next
MsgBox "处理提取完毕!"
End Sub
TableDI
2024-07-18 广告
2024-07-18 广告
在Excel中,直接将多个表格文件合并成一个文件夹是不可行的,因为Excel是用于处理数据表格的,而文件夹是操作系统用于存储文件的。然而,你可以使用Excel的“合并工作簿”功能或者手动操作来将多个Excel表格的内容合并到一个新的工作簿中...
点击进入详情页
本回答由TableDI提供
展开全部
直接读取时不可能的了,你可以先按顺序导入到一个表格中作为你批量读取的数据库,然后给每一个txt数据区域命名(其实就相当于做了一个二维数组),再用 offset() ,match(),index(). 按你的第三行第四列的坐标读出放到你想要放置的地方即可!你还可以动态的指定坐标的
函数举例:=offset(命名1,3,4,),就是取区域(命名1)中第三行第四列的数据。
说明白点就是一个数据的引用问题
函数举例:=offset(命名1,3,4,),就是取区域(命名1)中第三行第四列的数据。
说明白点就是一个数据的引用问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询