如何在excel VBA中仅保留每对的最后一个值?

时间:2013-04-18 07:12:01

标签: excel excel-vba 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个唯一值。最有效的方法是什么?

3 个答案:

答案 0 :(得分:1)

此处我的评论是另一种方式,不需要对数据进行排序。请参阅D/019/09

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

enter image description here

答案 1 :(得分:0)

这里不需要vba ...... 添加C列并将其命名为“Check”。在单元格C2中插入以下公式:

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

将该公式复制到数据范围的末尾。 接下来在C列中应用0的过滤器。删除所有行,然后就可以了。

之前的表格:

enter image description here

您的表格之后:

enter image description here

答案 2 :(得分:0)

尝试以下代码。使用VBA

enter image description here

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