如何保持excel VBA中每对的最后值?

Contract No Price D/019/09 17.85 D/019/09 17.85 D/019/09 17.85 D/019/09 17.85 D/023/09 17.85 D/023/09 17.85 D/026/09 0 D/026/09 0 D/038/11 20.6 D/038/11 20.6 D/038/11 20.6 

以上是一个示例数据系列…我想保留每个唯一合同的最后发生号码。 在上述例子中,我只想保留D / 023/09 17.85,D / 026/09 0和D / 038/11 20.6。 所以应该只有3个独特的值。 什么是最有效的方法呢?

进一步我的评论这里是另一种方式,这不需要您的数据进行sorting 。 看D/019/09的例子

 =IF(COUNTIF($A2:$A$13,A2)>1,0,B2) 

在这里输入图像说明

没有vba需要在这里…添加列C并将其命名为“检查”。 在单元格C2中插入下面的公式:

 =if(A2<>A3,1,0) 

比复制该公式直到数据范围结束。 接下来,在C列中应用0筛选器。删除所有的行,你有它。

您的表格之前:

在这里输入图像说明

您的表格后:

在这里输入图像说明

尝试下面的代码。 使用VBA

在这里输入图像描述

 Sub sample() Dim lastRow As Long, j As Long lastRow = Range("A65000").End(xlUp).Row j = 1 For i = lastRow To 2 Step -1 If Cells(i, 1).Value <> Cells(i + 1, 1) Then Cells(i, 1).Copy Cells(j, 3) Cells(i, 1).Offset(0, 1).Copy Cells(j, 4) j = j + 1 End If Next End Sub