2012-10-25 44 views
0

我有以下代码挑选重复的行,但是我无法让代码突出显示粗体重复以及同时删除它们。如何以粗体突出显示重复行excel vba

Public Sub ProcessData() 
Const TEST_COLUMN As String = "A" '<=== change to suit 
Dim i As Long 
Dim iLastRow As Long 
Dim rng As Range 

With ActiveSheet 

    iLastRow = .Cells(.Rows.Count, TEST_COLUMN).End(xlUp).Row 
    For i = 1 To iLastRow 
     If .Evaluate("SUMPRODUCT(--(A" & i & ":A" & iLastRow & "=A" & i & ")," & _ 
    "--(D" & i & ":D" & iLastRow & "=D" & i & ")," & _ 
    "--(F" & i & ":F" & iLastRow & "=F" & i & ")," & _ 
    "--(J" & i & ":J" & iLastRow & "=J" & i & ")," & _ 
     "--(K" & i & ":K" & iLastRow & "=K" & i & "))") > 1 Then 
      If rng Is Nothing Then 
       Set rng = .Cells(i, "A").Resize(, 11) 
      Else 
       Set rng = Union(rng, .Cells(i, "A").Resize(, 11)) 
      End If 
     End If 
    Next i 

    **If Not rng Is Nothing Then rng.Delete.font.bold = true** 


End With 

结束子

数据集的例子,期望的输出可以在下面的下列下载的链接中可以看出:

https://www.dropbox.com/s/7rhktg6b4nk6ig0/Bold_highlight_Duplicate%20.xlsm

任何帮助,将非常赞赏。谢谢。

编辑:

澄清,这是应该的样子,只是输入将被删除,并以粗体高亮应该出现在输出部分:

enter image description here

+0

你为什么要将它们设置为粗体,如果你想删除它们? ahh - 等待 - 你想用联合删除'rng',并设置另一个rng粗体或其他方式 - 对吗? – Jook

+0

大胆的功能可以让我看到列a(名称)中的同一个变量被复制和删除。感谢您的答复。 – user1574185

+0

我想删除(rng)并加粗删除的重复行。我希望这能够澄清我对问题表述的任何误解。再次感谢您的回复和时间。 – user1574185

回答

0

相反**If Not rng Is Nothing Then rng.Delete.font.bold = true**使用以下内容:

If Not rng Is Nothing Then 
    with rng 
    .Offset(.Areas(.Areas.Count).Rows(.Areas(.Areas.Count).Rows.Count).Row + 1).Font.Bold = True 
    .Delete 
    end with 
End If 

这是如何工作的?

那么,你可以在测试重复的时候设置粗体指示符,但是你采取了不同的方法,但不允许这样做。

因此,您的rng是一个多区域选择。

您必须到达最后一个区域,然后到该区域的最后一行,然后检索您所在的实际行。然后为其之间的空间添加+1。现在你知道输入部分覆盖了多少行+输出的间隙,并且你将这个计数的选择抵消到输出部分。

但是,可能会有复杂性,依赖于您的输入/输出 - 我在您的示例中简单测试了这个工作。尽管如此,我认为使用不同种类的环路重复检测会更好。

+0

非常感谢您的帮助。这正是我需要的。非常感谢您的时间和回应。 – user1574185

+0

Jook能否请您展示重复行检测宏的示例,该宏将检测重复行并突出显示任何重复项?谢谢 – 2012-10-31 04:03:59