用逗号读取TXT到单个单元格中

我有一个具有以下数据示例的txt文件

赫兹,TEST1,TEST2,TEST3,TEST4,TEST5,

1,#,#,#,#,#, 2,#,#,#,#,#, 3,#,#,#,#,#, 4,#,#,#,#,#, 5,#,#,#,#,#, 6,#,#,#,#,#, 7,#,#,#,#,#, 

。 。 等等

所以每个testing都作为1,2,3,4,5频率的读数

但是当我使用我的代码时,它将所有的文本读入第一列,而不是分开的列。 我以为这个“,”应该把它分开,所以逗号之间的每一个部分都是分开的列和行?

现在看起来像这样 在这里输入图像说明

我喜欢它看起来像 在这里输入图像说明

码:

 Dim DataFileName As String Dim DFNamePath As String Dim Handle As String Dim i As Integer i = 2 DataFileName = Cells(1, 2).Value DFNamePath = "C:\Users\aholiday\Desktop\Data Dump\" & DataFileName & ".txt" If MsgBox("Import RF Data?", vbYesNo) = vbYes Then Open DFNamePath For Input As #1 Do Until EOF(1) Input #1, Handle Cells(i, 1) = Handle i = i + 1 Loop Close #1 Else Exit Sub End If 

在循环过程中,我也得到了一个运行时错误62input文件的结尾,我想循环最后一遍

使用Range.TextToColumns方法,您可以随时将导入的TXT分割到工作表中。

 Sub split_Import() Application.DisplayAlerts = False '<~~ take the traing wheels off With Worksheets("Sheet4") With .Columns(1) .TextToColumns Destination:=.Cells(1), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, _ Comma:=True, Tab:=False, Semicolon:=False, _ Space:=False, Other:=False, _ FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), _ Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1)) End With End With Application.DisplayAlerts = True End Sub 

您的数据非常简单,所以不需要在General输出之外设置任何xlColumnDataType FieldInfo值。

直接Workbooks.OpenText方法

对于未知数量的列, Workbooks.OpenText方法可能是更好的select。 请注意,它与Range.TextToColumns方法非常相似。 FieldInfo xlColumnDataType的数组是可选的。

 Sub split_Import() Dim fn As String, fp As String, ws As Worksheet fp = Environ("TMP") & Chr(92) '<~~ set the TXT source folder Set ws = Worksheets("Sheet3") '<~~ set destination worksheet With ws fn = .Cells(1, 1).Value2 & ".txt" Workbooks.OpenText Filename:=fp & fn, startrow:=2, DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, _ Comma:=True, Tab:=False, Semicolon:=False, _ Space:=False, Other:=False, local:=False With ActiveWorkbook With .Worksheets(1).Cells(1, 1).CurrentRegion ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(.Rows.Count, .Columns.Count) = .Value End With .Close False End With End With End Sub 

请注意,我已经放弃了标题(例如, startrow:= 2 )以匹配您的第一个数据图像。 设置为startrow:=1如果你想保留标题。

请注意,我的合并单元格在A列中第一个空行的定位方面遇到了一些麻烦。如果您打算保留它们,则可能需要进行调整。