我有两个问题,下面:
这是我的CSV测试数据。
的数据
我使用下面的命令查找重复项,然后将每行第二个单元格中的所有数据合并合并到第一个唯一记录(行)的第二个单元格中。
Sub CombineAndRemoveDuplicates()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Dim dict As Object
Dim key As Variant
Dim combinedData As String
' Set the worksheet
Set ws = ThisWorkbook.Sheets(1)
' Set the last row in column A
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' Create a dictionary to store combined data for each unique value in column A
Set dict = CreateObject("Scripting.Dictionary")
' Loop through the rows
For i = 2 To lastRow
' Check if the value in column A is already in the dictionary
If dict.Exists(ws.Cells(i, 1).Value) Then
' If duplicate, combine the value from another column (let's say column B)
combinedData = dict(ws.Cells(i, 1).Value) & " | " & ws.Cells(i, 2).Value
dict(ws.Cells(i, 1).Value) = combinedData
Else
' If not a duplicate, add to the dictionary with the original values from columns A and B
dict.Add ws.Cells(i, 1).Value, ws.Cells(i, 2).Value
End If
Next i
' Clear the existing data in the worksheet
ws.Cells.Clear
' Output the unique values and combined data to the worksheet
ws.Cells(1, 1).Resize(dict.Count, 1).Value = Application.WorksheetFunction.Transpose(dict.Keys)
ws.Cells(1, 2).Resize(dict.Count, 1).Value = Application.WorksheetFunction.Transpose(dict.Items)
' Cleanup
Set dict = Nothing
End Sub
字符串
它几乎可以工作,但不包括第一行的“Text1”。只有重复行的数据。所以我得到的输出是这样的:
的
我想要的是:
第二个问题是,当我将一个包含此代码的模块插入到我正在处理的CSV中时,这是可行的,但如果我将模块保存在我的PERSONAL.xlsb工作簿中,并在我打开的新CSV中使用它,我会得到以下错误:
“运行时错误'13':以下行中的类型不匹配”. ws.Cells(1,1).Resize(dict.Count,1).Value = Application.WorksheetFunction.Transpose(dict.Keys)ws.Cells(1,2).Resize(dict.Count,1).Value = Application.WorksheetFunction.Transpose(dict.Items)
任何对其中一个或两个问题的帮助都是很好的。
Thanks in advance
2条答案
按热度按时间brtdzjyr1#
字符串
2exbekwf2#
For i = 2
更改为For i = 1
以包含第一行Set ws = ActiveSheet
操作活动工作表上的数据字符串
问:我有A到P列,我想保留A到H列和J到P列中的所有内容,但合并A列中重复的I列
型
的数据