Excel VBA程序自动化任务:查找&根据某些条件突出显示重复项

时间:2014-04-13 02:35:13

标签: excel vba excel-vba

我必须为大约10,000个参赛作品完成一项有点乏味的任务。我对VBA没有经验,所以感谢你的帮助。

鉴于以下数据格式,该程序将:

enter image description here

1)以绿色突出显示一组重复的最旧副本(副本用A列表示,年龄用B列表示)

2)突出显示黄色

中的其余重复项

3)将一组(现在以绿色突出显示)中最旧的重复条目的C列中的代码复制到该组中的所有重复条目(A1,A3,A4)

所以输出看起来像这样:

enter image description here

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

这里是一个部分答案,指出你正确的方向...希望它让你接近但我没有测试它,所以确保你有一个备份......

它假设您可以按col a和col b排序。我从这里找到了颜色编号:http://dmcritchie.mvps.org/excel/colors.htm

Sub Highlight_Duplicates()

SaveCompany = ""
SaveColC = ""

For Counter = 1 To ActiveSheet.UsedRange.Rows.Count

    Set cola = ActiveSheet.Cells(Counter, 1)
    Set ColB = ActiveSheet.Cells(Counter, 2)
    Set ColC = ActiveSheet.Cells(Counter, 3)
    Set ColD = ActiveSheet.Cells(Counter, 4)

    ' Highlight the first company record green
    If cola.Value <> SaveCompany Or SaveCompany = "" Then
        Range(cola, ColD).Interior.ColorIndex = 4
        SaveColC = colc.value
    End If

    ' Highlight matching company record yellow and set value to oldest c
    If cola.Value = SaveCompany Then
        Range(cola, ColD).Interior.ColorIndex = 6
        colc.value = SaveColC
    End If

    ' Save the company
    SaveCompany = cola.Value

Next

End Sub

答案 1 :(得分:0)

也许这会有所帮助:

在D1中编写此数组公式:(不要忘记按Ctrl Shift Enter输入它)

=INDEX($C$1:$C$6;MATCH(MAX(IF(A1=$A$1:$A$6;$B$1:$B$6;""));IF(A1=$A$1:$A$6;$B$1:$B$6;"");0))

根据您的区域设置,您可能需要替换“;”通过“,”

将公式复制下来

现在选择A1:D6,转到条件格式,新规则,使用公式确定要格式化的单元格。

输入公式:

=$C1=$D1

应用绿色背景

使用公式添加另一条规则:

=AND($C1<>$D1;$D1<>"")

应用黄色背景