我有以下代码可以获取重复的行,但是我无法获取代码以突出显示粗体重复项以及同时删除它们。
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
End Sub
数据集和所需输出的示例可在以下可下载链接中看到:
https://www.dropbox.com/s/7rhktg6b4nk6ig0/Bold_highlight_Duplicate%20.xlsm
非常感谢任何帮助。谢谢。
编辑:
澄清一下,它应该是这样的,只是输入应该被删除,粗体突出显示应该出现在输出部分:
答案 0 :(得分: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。现在您知道输入部分覆盖了多少行+输出的间隙,并将您的选择偏移到输出部分。
然而,可能会出现并发症,依赖于您的输入/输出 - 我在您的示例中简要测试过 - 工作过。不过,我认为最好使用不同类型的循环和放大器。重复检测。