Excel – 使用共享数据查找重复值,并确定首先“创build”哪一个值

所以我有一个包含3个不同类别数据的表格:Time,Value,ID。 将有多个值对应于每个ID,但是那些值也可能稍后被复制。 基本上每个ID是一个“文件夹”,值是文件。 我需要find在另一个“文件夹”中出现“文件”的所有实例。 最重要的是,我需要确定哪些文件先添加到它们各自的文件夹中。 这是一个例子:

时间 。 。 。 。 价值。 。 。 。 ID

一点 。 。 。 。 1。 。 。 。 。 。 。 。 一个

2:00 。 。 。 。 2。 。 。 。 。 。 。 。 一个

3:00 。 。 。 。 3。 。 。 。 。 。 。 。 一个

4:00 。 。 。 。 1。 。 。 。 。 。 。 。 乙

5:00。 。 。 。 。 4。 。 。 。 。 。 。 。 乙

6:00 。 。 。 。 2。 。 。 。 。 。 。 。 C

我需要程序来输出一个类似这样的表:

原始ID。 。 。 新ID

一个 。 。 。 。 。 。 。 。 。 。 。 乙

一个 。 。 。 。 。 。 。 。 。 。 。 C

在这种情况下,程序定位“价值”的重现,然后确定哪个ID对应于最早的时间。 我一直在使用For循环和If / Then语句的不舒服的数量,但它变得越来越混乱。 希望你们中的一个人都能帮忙! 在此先感谢,我真的很感激。

这将在vba中完成:

Sub RobH() Dim OID As String Dim NID As String Dim ws As Worksheet Dim rng As Range Set ws = ActiveSheet With ws For Each rng In .Range("A2:A7") OID = .Evaluate("=IF(COUNTIF($B$2:$B$7," & rng.Offset(, 1).Value2 & ")>1,INDEX($C$2:$C$7,MATCH(MIN(IF($B$2:$B$7=" & rng.Offset(, 1).Value2 & ",$A$2:$A$7)),$A$2:$A$7,0)),""Unique"")") NID = .Evaluate("=IF(COUNTIF($B$2:$B$7," & rng.Offset(, 1).Value2 & ")>1,INDEX($C$2:$C$7,MATCH(MAX(IF($B$2:$B$7=" & rng.Offset(, 1).Value2 & ",$A$2:$A$7)),$A$2:$A$7,0)),""Unique"")") If OID <> NID And OID <> rng.Offset(, 2) Then Debug.Print OID & " " & NID End If Next rng End With End Sub 

它使用的基本公式是:

 =IF(COUNTIF($B$2:$B$7,E2)>1,INDEX($C$2:$C$7,MATCH(MIN(IF($B$2:$B$7=E2,$A$2:$A$7)),$A$2:$A$7,0)),"unique") 

这是第一次发生。 为了得到最后一个MIN的最大值:

 =IF(COUNTIF($B$2:$B$7,E2)>1,INDEX($C$2:$C$7,MATCH(MAX(IF($B$2:$B$7=E2,$A$2:$A$7)),$A$2:$A$7,0)),"unique") 

在E2中都是持有待测值的单元。 两者都是数组公式,需要用Ctrl-Shift-Enter确认。