我的 excel 文件中有 350K 行。我需要将所有具有唯一 ID 的行合并到同一行,如下所示:
Unique ID | Mbr ID | Name
1 | 10227 | ABC1
1 | 254112 | ABC2
2 | 3688 | XYZ1
2 | 1123 | XYZ2
2 | 9800 | XYZ3
出于某种原因,我们需要将具有相同唯一 ID 的字段合并为一个,如下所示:
Unique ID | Mbr ID | Name Unique ID | Mbr ID | Name Unique ID | Mbr ID | Name
1 | 10227 | ABC1 1 | 254112 | ABC2
2 | 3688 | XYZ1 2 | 1123 | XYZ2 2 | 9800 | XYZ3
我们尝试使用vLookup
,但似乎需要很长时间,而且大多数情况下根本不起作用。有什么想法吗?
PS 我们尝试了一种叫做的工具Kutools
,但是它也不起作用。
答案1
假设名为 Sheet1 的工作表上拥有的源数据占据 A1:Cxxxxxx 范围。
创建一个名为 Sheet2 的工作表 - 数据透视表数据将放入其中。
按 A 列(唯一 ID)对源数据进行排序。
然后运行下一个宏:
Sub doPivot()
Dim sh As Worksheet
Dim vals()
Dim i As Integer
Dim uid
Dim crow As Integer
Dim ccol As Integer
Set sh = ThisWorkbook.Sheets("Sheet2")
vals = ThisWorkbook.Sheets("Sheet1").UsedRange.Value
For i = LBound(vals, 1) To UBound(vals, 1)
If vals(i, 1) = uid Then
ccol = ccol + 3
Else
crow = crow + 1
ccol = 1
End If
uid = vals(i, 1)
sh.Cells(crow, ccol) = vals(i, 1)
sh.Cells(crow, ccol + 1) = vals(i, 2)
sh.Cells(crow, ccol + 2) = vals(i, 3)
Next i
End Sub
最后,如果需要的话,将标题向左移动。