|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
因为带着小孩子做科学实验,所以产生了很多txt格式记录的温湿度数据,200+的txt,前100我都是一个个导入然后分列,选择不导XX列冗余数据,再一列列把数据复制粘贴成需要的格式,耗费了极大的精力和时间,于是在上周的一个晚上,我翻遍了所有EXCELHOME论坛中带txt批量导入以及分列的帖子,找到了一些凑合能用的代码,例如代码1:Sub DAORU()Dim s() As String, f As String, i As Long, b() As Byte
With Sheet1
.Cells.Clear
f = Dir(ThisWorkbook.Path & "\*.TXT")
While f > ""
Open ThisWorkbook.Path & "" & f For Input As #1
s = Split(StrConv(InputB(LOF(1), 1), vbUnicode), vbCrLf)
Close #1
.[A1].Offset(, i) = f
.[A2].Offset(, i).Resize(UBound(s) + 1) = WorksheetFunction.Transpose(s)
i = i + 1
f = Dir()
Wend
.Rows(1).Replace What:=".txt", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
With .Range("A1").CurrentRegion
.Sort key1:=Sheet1.Cells(1), order1:=xlAscending, Orientation:=xlSortRows
End With
.Activate
End With
MsgBox "OK"
End Sub
代码2:Sub cc()
Dim Str As String, s, i%
Str = Dir(ThisWorkbook.Path & "/*.txt")
Application.DisplayAlerts = False
[a:h].ClearContents
Do While Str <> ""
Open ThisWorkbook.Path & "\*.txt" & Str For Input As #1
s = Split(StrConv(InputB(LOF(1), 1), vbUnicode), vbCrLf)
Close #1
For i = 0 To UBound(s)
If s(i) <> "" Then s(i) = Str & " " & s(i)
Next
[a65536].End(3)(2).Resize(UBound(s) + 1) = WorksheetFunction.Transpose(s)
Str = Dir()
Loop
[a:a].TextToColumns [a2:h2], OtherChar:=" "
Application.DisplayAlerts = True
End Sub
其中代码2应该能满足我的绝大部分需求,但是总是遇到503,文件无法找到的错误,或者下标界限超出,代码时而能反应,时而没有作用,由于帖子都是4至5年前的回复,所以不太好挖坟去询问别人,而我又是一个死脑经的究极萌新,当时脑袋抽筋似的一直想搞明白,东拼西凑找代码,钻牛角尖熬夜到第二天中午十二点依然无法解决,当时是真滴头疼,觉得自己抄近路的想法真的是撞得头破血流,虽然想着好好看教程学一学,但是无奈时间紧,任务重,因此恳求各位大神能够给我一点帮助,我的具体需求如下:
需要将100+txt文件中的时间列和温度列导入一个SHEET,首列以文件名命名,分别记录各个txt文件中的时间序列(完成的excel中是我后期处理过的相对时间),之后每列呈阶梯状记录各个txt文件的对应温度序序列。
恳求大家的帮助,如果能优化代码2,可以节省我后期比较大的工作量;如果能完成最终格式要求的话,真是不胜感激,如果您坐标在北京的话,一定要答应我请您吃海底捞!!!
|
|