2014-04-13 16 views
0

我必须完成一个有点乏味的任务对于一个Excel约10000项。我没有VBA的经验,所以我会很感激你的帮助。Excel的VBA程序来自动任务:查找和突出显示基于某些条件重复

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

enter image description here

1)中绿的一组重复的(最老的重复高亮显示由列重复的符号,年龄由列B表示)

2)选择重复的其余部分在黄色

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

所以输出应该是这样的:

enter image description here

任何帮助,非常感谢!

+0

可以排序的表?即...按A排序,B然后运行一段简单的代码? – clutton

+0

对于排序是正确的,但是如何突出显示最老的绿色,其余的显示为黄色? – diana00

+0

这是一个http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem X-Y问题?现在谁将分析并分析10,000个黄色或绿色的条目?另一种解决方案可能是导入到MS Access或SQL Express中,并运行查询来理解它。如果你喜欢,你可以再次导出到CSV。 –

回答

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 
0

也许这将帮助:

在D1写这个数组公式:(不要忘记按Ctrl Shift键回车输入)

=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<>"") 

应用黄色背景

相关问题