我想获取有关连续关键单元格值的值的数据。问题是文件真的很大,我有一个 .txt 文件,它有大约 54000 行和 14 列,因此文本文件本身是 20 mb,在此之上我需要针对 D 列获取值F 列中的值。F 列中的值是唯一的。
到目前为止,我一直尝试使用直接方法从 .txt 文件中提取数据并将其复制到工作表中,然后运行循环以获取附加值。
但是即使等待 15 分钟,代码也无法从 .txt 文件中提取数据。
Do While bContinue = True
outRow = 1
sInputFile = Application.GetOpenFilename("Text Files (*.txt), *.txt")
If sInputFile = "False" Then
bContinue = False
Reset 'close any opened text file
Exit Sub
Else
outCol = outCol + 2
'process text file
fNum = FreeFile
Open sInputFile For Input As #fNum
Do While Not EOF(fNum)
outRow = outRow + 1
Line Input #fNum, sInputRecord
Sheets("Sheet1").Cells(outRow, outCol).Value = sInputRecord
Loop
Close #fNum
End If
Loop
errHandler:
Reset
End Sub
我预计它需要一些时间,但运行这段代码需要很长时间,这会破坏使用宏的目的。我只是请求是否有人有更好的方法来解决这个问题。
代码的第一部分丢失了,但我猜你声明了变量。如果没有,那可能会对性能有所帮助。
您也可以尝试在流程开始时关闭计算,然后在最后将它们切换回来。
Application.Calculation = xlCalculationManual
'...
Application.Calculation = xlCalculationAutomatic
您是说您只需要文本中的第 4 列和第 6 列,但您将整行放入一个单元格中。
如果您真的只想将一行的这两个部分放入工作表中,您可能需要执行以下操作:
With Sheets("Sheet1")
Do While Not EOF(fNum)
outRow = outRow + 1
Line Input #fNum, sInputRecord
.Cells(outRow, outCol).Value = Split(sInputRecord,";")(3)
.Cells(outRow, outCol+1).Value = Split(sInputRecord,";")(5)
Loop
End With
将分号更改为分隔符在 txt 文件中的任何字符。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句