0

嗨,我正在使用 VB 在 excel 中填充数据。在工作表中,列 G 有许多具有相同数字的单元格(并且它们被重复而不遵循任何模式)。首先,我想找出哪些条目不是唯一的,然后将第一次出现在列中并删除遇到重复的整行。这是一个例子:

在此处输入图像描述

从图中可以看出,在 G 列中,数字 1000 和 2200 重复出现。因此需要删除整个第 3 行和第 6 行(保留第 1 行和第 2 行,其中 1000 和 2200 首先出现)。

这是我无法工作的代码:

Sub Dupli()

    Dim i As Long, dic As Object, v As Object

    dic = CreateObject("Scripting.Dictionary")

    i = 1
    For Each v In sheet.UsedRange.Rows
        If dic.exists(v) Then sheet.Rows(v).EntireRow.Delete() Else dic.Add(v, i)
        i = i + 1
    Next v

End Sub
4

2 回答 2

1

尝试这样的事情。我认为您不需要字典(除非您的代码中其他地方还需要它)。删除对象时,通常需要向后迭代集合。该方法只是使用该CountIf函数来测试特定行的 G 列中的单元格值是否在所有 G 列中出现多次,如果条件为真则删除该行。

Sub Dupli()

    Dim i As Long
    Dim cl as Range

    i = 1
    For i= sheet.UsedRange.Rows.Count to 1 Step -1
        Set cl = sheet.Cells(i,7) '## Examine the cell in Column G
        If Application.WorksheetFunction.CountIf(sheet.Range("G:G"),cl.Value) > 1 Then
            sheet.Rows(i).EntireRow.Delete
    Next

End Sub
于 2013-07-30T13:42:32.223 回答
-1
  1. 把它放在H1中:

=COUNTIF(G$1:G1;G1)

  1. 填写到底
  2. 在 G 列上进行自动过滤
  3. 过滤掉 1 的值
  4. 按行标题选择剩余行
  5. 右键单击行标题>单击删除...
于 2013-07-29T19:19:35.097 回答