我认为我尝试做的事情非常基本,但我对VBA来说是全新的,所以我会陷入困境,我发现的答案很接近,但不是完全正确。
我有一个行条目列表,如下所示:
1 4 32 2 4
2 6 33 1 3
1 4 32 2 4
4 2 30 1 5
请注意,第1行和第3行是重复的。我想只有每个唯一行的一个实例,但我不想删除重复项,我想报告每种类型有多少。每行代表一个库存项目,因此删除重复的条目而不指示总数量将非常糟糕!
所以,我想要的输出看起来像这样,其中第6列计算每个项目的实例总数:
1 4 32 2 4 2
2 6 33 1 3 1
4 2 30 1 5 1
我的数据集大于这5列,它们接近10左右,所以我想将最后一列放在最后,而不是将其硬编码到第6列(即列" F")
更新
我找到了一些可以进行微调的代码,今天早上有用,但是在搞了一些其他的宏之后,当我回到这个时,它告诉我有一个"编译错误,错误的参数数量或无效的属性分配"它似乎对"范围"不满意。为什么工作代码会停止工作?
Sub mcrCombineAndScrubDups2()
For Each a In range("A1", Cells(Rows.Count, "A").End(xlUp))
For r = 1 To Cells(Rows.Count, "A").End(xlUp).Row - a.Row
If a = a.Offset(r, 0) And a.Offset(0, 1) = a.Offset(r, 1) And a.Offset(0, 2) = a.Offset(r, 2) Then
a.Offset(0, 4) = a.Offset(0, 4) + a.Offset(r, 4)
a.Offset(r, 0).EntireRow.Delete
r = r - 1
End If
Next r
Next a
End Sub
答案 0 :(得分:0)
假设您的数据从名为A1
的工作表上的ws1
开始,以下代码将删除重复的行。不是通过移动整个表而是删除整行。
Sub deletedupe()
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim row1 As String
Dim row2 As String
i = 1
j = 1
k = 1
Do While Sheets("ws1").Cells(i, 1).Value <> ""
row1 = ""
j = 1
Do While Sheets("ws1").Cells(i, j).Value <> ""
row1 = row1 & Sheets("ws1").Cells(i, j).Value & " "
j = j + 1
Loop
k = i + 1
Do While Sheets("ws1").Cells(k, 1).Value <> ""
row2 = ""
j = 1
Do While Sheets("ws1").Cells(k, j).Value <> ""
row2 = row2 & Sheets("ws1").Cells(k, j).Value & " "
j = j + 1
Loop
If row1 = row2 Then
Sheets("ws1").Rows(k).EntireRow.Delete
Else
k = k + 1
End If
Loop
i = i + 1
Loop
End Sub