由于需要将TXT文件与Excel文件进行对比,但两种文件格式差异比较大,于是通过VBA写了一下小工具,以便日后方便使用。
''**********************************************************************************************
''功能 将TXT的多行文本文件进行处理,以ID为单位处理成 一行,以便能够与Excel的对应文件进行对比分析
''**********************************************************************************************
Sub readValue()
Dim wkBook1 As Workbook
Dim wkSheet1 As Worksheet
Dim stringTmp As String
Dim id As String
Dim i As Integer
'打开文件
Set wkBook1 = Workbooks.Open(ThisWorkbook.Path & "\" & "test.xlsx")
'指定表
Set wkSheet1 = wkBook1.Sheets("Sheet1")
i = 2 '单元格 行 开始位置
id = "" '单元格id值
Do While i < 350
'与上一行的单元格id值一致
If id = wkSheet1.Range("B" & i).Value Then
'将value值 拼接 在上一行的value值之后,单元格内换行
stringTmp = stringTmp & Chr(10) & wkSheet1.Range("C" & i).Value
'循环开始时
ElseIf id = "" Then
'获取ID 对应的value值
stringTmp = wkSheet1.Range("C" & i).Value
'与上一行的单元格id值不一致
Else
' 在对应的相同ID的最后一行 右侧G列 保存ID值
wkSheet1.Range("G" & i - 1).Value = wkSheet1.Range("B" & i - 1).Value
' 在对应的相同ID的最后一行 右侧H列 保存拼接后的value值
wkSheet1.Range("H" & i - 1).Value = stringTmp
'初始化 保存新的ID对应的value值
stringTmp = wkSheet1.Range("C" & i).Value
End If
'将当前行的ID值保存到id变量,以便下一次比较
id = wkSheet1.Range("B" & i).Value
i = i + 1
Loop
End Sub