VBA读取txt 遇到某行一样的数据就把相同的数据存入同一个数组
时间: 2023-06-12 16:02:10 浏览: 45
你好,可以使用以下代码实现:
```VBA
Sub readTxt()
Dim filePath As String '文件路径
Dim arr() As String '存储数据的数组
Dim index As Integer '数组下标
index = 0 '初始化数组下标为0
filePath = "C:\test.txt" '文件路径,根据实际情况修改
'打开文件
Open filePath For Input As #1
'逐行读取文件
Do While Not EOF(1)
Line Input #1, tempStr
'如果该行数据与上一行相同,则将数据存入数组中
If tempStr = prevStr Then
arr(index) = tempStr
index = index + 1
End If
'保存当前行数据,用于下一次比较
prevStr = tempStr
Loop
'关闭文件
Close #1
End Sub
```
以上代码可以读取指定路径下的test.txt文件,并将其中相同的行数据存入同一个数组中。如需修改文件路径或存储方式,可根据实际情况进行修改。希望能够帮助到您。
相关问题
VBA读取txt 遇到某行一样的数据把子行所有数据整合一起
,该怎么做?
对于这个问题,可以使用VBA读取txt文件,并使用循环语句遍历每一行数据。当遇到某行与之前的某行相同时,使用字符串拼接操作将子行数据整合在一起,最终将整合后的数据输出为新的txt文件。以下是示例代码供参考:
Sub MergeRows()
Dim FilePath As String
FilePath = "C:\test.txt" 'txt文件路径
Dim NewFilePath As String
NewFilePath = "C:\newtest.txt" '新txt文件路径
Dim FSO As Scripting.FileSystemObject
Set FSO = New Scripting.FileSystemObject
Dim OpenFile As Scripting.TextStream
Set OpenFile = FSO.OpenTextFile(FilePath, ForReading, False, TristateUseDefault) '打开txt文件
Dim OpenNewFile As Scripting.TextStream
Set OpenNewFile = FSO.CreateTextFile(NewFilePath, True, False) '创建新txt文件
Dim PreLine As String
Dim CurLine As String
Dim MergeText As String
Dim MergeFlag As Boolean
PreLine = ""
MergeText = ""
MergeFlag = False
Do Until OpenFile.AtEndOfStream
CurLine = OpenFile.ReadLine '读取一行数据
If CurLine = PreLine And PreLine <> "" Then '如果当前行与之前行相同
MergeText = MergeText & vbCrLf & CurLine '使用字符串拼接将子行数据整合在一起
MergeFlag = True
ElseIf MergeFlag = True Then
OpenNewFile.WriteLine MergeText '将整合后的数据输出到新txt文件
MergeText = ""
MergeFlag = False
Else
OpenNewFile.WriteLine PreLine '将上一行数据输出到新txt文件
End If
PreLine = CurLine
Loop
OpenNewFile.WriteLine PreLine '最后一行数据需要单独处理
OpenFile.Close '关闭文件
OpenNewFile.Close
End Sub
VBA不打开txt 读取数据分行存入数组然后按列拆分输出到excel表
ChitGPT:你好!关于你的问题,你可以使用VBA打开txt文件,使用Split函数将数据按行进行拆分,然后将拆分后的数据存储到数组中。接下来,你可以在Excel中打开一个新的工作表,将数组中的数据按照列进行拆分输出。
以下是一个简单的VBA代码示例:
Sub ReadTxtFile()
Dim filePath As String
Dim dataArray() As String
Dim dataRange As Range
Dim i As Integer, j As Integer
'选择要打开的文本文件'
filePath = Application.GetOpenFilename(FileFilter:="Text Files (*.txt), *.txt")
If filePath = "False" Then Exit Sub
'打开文件,读取数据到数组中'
Open filePath For Input As #1
dataArray = Split(Input$(LOF(1), 1), vbNewLine)
Close #1
'在Excel中输出数据到新工作表上'
Sheets.Add
Set dataRange = Range("A1").Resize(UBound(dataArray) + 1, 1)
dataRange = Application.Transpose(dataArray)
For j = 1 To UBound(dataArray) + 1
For i = 1 To UBound(Split(dataArray(j - 1)))
Cells(i, j) = Split(dataArray(j - 1))(i - 1)
Next i
Next j
End Sub
希望能够帮到你!