【发布时间】:2015-04-03 16:57:57
【问题描述】:
我已经阅读了关于合并行和合并数据的所有其他问题。我确实遇到了一个我认为对我有用的解决方案,但是当我运行宏时,它实际上并没有对正确的列求和。作为 VBA 的新手,我无法弄清楚宏中需要更改哪些内容才能在我的工作表中工作。
背景: 我想使用宏,因为我每天都会收到一份报告,我必须对其进行操作,以便它可以处理到我们的系统中。我创建了一个 VBA 宏来为我进行操作,但我意识到该报告现在有具有不同值的重复行。下面是最后一组数字需要相加的示例。 (我的实际报告中的 J 栏)
即
第 1 行:C3=1234,名称,C5=ABC,C5Name,C4=DEF,C4Name,21361
第 2 行:C3=1234,名称,C5=ABC,C5Name,C4=DEF,C4Name,132165
这是我找到的解决方案,但我需要知道要更改哪些内容以与我实际需要总结的列相对应。
Sub Merge()
Dim ColumnsCount As Integer
Dim i As Integer
Range("A1").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
Do While ActiveCell.Row <= ActiveSheet.UsedRange.Rows.Count
If ActiveCell.Value = ActiveCell.Offset(1, 0).Value Then
For i = 1 To ColumnsCount - 1
ActiveCell.Offset(0, i).Value = ActiveCell.Offset(0, i).Value + ActiveCell.Offset(1, i).Value
Next
ActiveCell.Offset(1, 0).EntireRow.Delete shift:=xlShiftUp
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
End Sub
非常感谢任何和所有帮助。如果我需要提供更多信息,请告诉我。
~安德烈亚
【问题讨论】:
-
j列将合并到哪些相同的列值?是否需要检查多个列? -
A-I 和 K-L 列包含重复信息。
-
这些列之一是作为索引还是作为一个整体?重复行是否连续?因为您的代码对它首先合并的列进行排序,然后如果它们相同,则合并连续的行。你想要你的代码顺序吗?
-
所以,第一部分应该对所有数据进行排序。我实际上将其修改为包含 3 列,因此所有重复项都被分组。
-
好的。然后,首先对数据进行排序,以便连续重复。然后在一个循环中,比较哪些列足以确保行彼此重复。然后将第二列 j 值与第一列相加;最后删除第二行;删除一行后从计数器中减去一个。 (这个减法很重要)顺便说一句,您的代码在单个列上工作,并在通过求和合并它们时删除该列中的重复项。在一个列中合并足够数量的(可能是所有)列以进行排序和比较可能是一个好主意。那是哪一栏?
标签: excel merge consolidation vba