我有一个表,其中包含同一个人的重复项,我想将它们合并为一行,同时总结分配给每行数据的两列。
我想通过使用 A 列作为匹配内容的“参考点”来合并 A 到 D 列中的数据。然后我希望将这些值添加到 E 列和 F 列中。给我下面的结果。
我确信有一个简单的解决方案,但我对 VBA 很陌生,还没有遇到任何事情。
谢谢
我有一个表,其中包含同一个人的重复项,我想将它们合并为一行,同时总结分配给每行数据的两列。
我想通过使用 A 列作为匹配内容的“参考点”来合并 A 到 D 列中的数据。然后我希望将这些值添加到 E 列和 F 列中。给我下面的结果。
我确信有一个简单的解决方案,但我对 VBA 很陌生,还没有遇到任何事情。
谢谢
这可以使用以下代码来完成:
Sub foo()
LastRow = Sheet1.Cells(Sheet1.Rows.Count, "A").End(xlUp).Row
For x = 2 To LastRow
Sheet1.Cells(x, 7).Value = "=SUMIF(R1C1:R17C6,RC[-6],C[-2])"
Sheet1.Cells(x, 8).Value = "=SUMIF(R1C1:R17C6,RC[-7],C[-2])"
Next x
Range("G2:H" & LastRow).Copy
Range("G2:H" & LastRow).PasteSpecial Paste:=xlPasteValues, operation:=xlNone, SkipBlanks:=False, Transpose:=False
Range("E2:F" & LastRow).Delete Shift:=xlToLeft
Sheet1.Range("$A$1:$H$" & LastRow).RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6, 7, 8), Header:=xlNo
End Sub
本质上,代码将 G 和 H 列中的所有值相加,然后复制并粘贴为值(以摆脱单元格上的公式),然后删除 E 和 F 列中的内容,向左移动以带来新值到正确的列,最后它会删除所有重复项,以便为您提供所需的编译列表。