突出显示VBA中重复项之间的差异

时间:2017-01-09 19:46:16

标签: excel vba

您好我有一个包含以下列的电子表格:

Transaction_ID  counter State   File_Date   Date_of_Service Claim_Status    NDC_9   Drug_Name   Manufacturer    Quantity    Original_Patient_Pay_Amount Patient_Out_of_Pocket   eVoucher_Amount WAC_per_Unit__most_recent_  RelayHealth_Admin_Fee   Total_Voucher_Charge    Raw_File_Name

此处有重复的交易ID。是否有VBA可以突出显示两行之间存在差异的位置?因此,可能存在具有相同交易ID的数据,但我想强调它们可能具有不同的其他字段的位置,因此它们不是真正重复的并且希望看到哪些信息是不同的。

谢谢!

2 个答案:

答案 0 :(得分:0)

假设:

  1. 这是一个未分类的数据集
  2. 第1列包含可重复的ID
  3. 第一行包含标题
  4. ...以下代码(在SHeet的模块中)会将任何单元格黄色变为黄色,其值对于最左侧列中显示的ID是完全唯一的...

        Option Explicit
    
        Public Sub HighlightUniqueValues()
    
            Dim r As Long, c As Long  'row and column counters
            Dim LastCol As Long, LastRow As Long 'right-most and bottom-most column and row
            Dim ColLetter As String
            Dim RepeatValues As Long
    
            'get right-most used column
            LastCol = Me.Cells(1, Me.Columns.Count).End(xlToLeft).Column
            'get bottom-most used row
            LastRow = Me.Cells(Me.Rows.Count, "A").End(xlUp).Row
    
            'assume first column has the main ID
            For r = 2 To LastRow 'skip the top row, which presumably holds the column headers
                For c = 2 To LastCol 'skip the left-most column, which should contain the ID
                    'Get column letter
                    ColLetter = Split(Cells(1, c).Address(True, False), "$")(0)
    
                    '   Count the number of repeat values in the current
                    'column associated with the same value in the
                    'left-most column
                    RepeatValues = WorksheetFunction.CountIfs(Range("A:A"), Range("A" & r), Range(ColLetter & ":" & ColLetter), Range(ColLetter & r))
    
                    '   If there is only one instance, then it's a lone
                    'value (unique for that ID) and should be highlighted
                    If RepeatValues = 1 Then
                        Range(ColLetter & r).Interior.ColorIndex = 6 'yellow background
                    Else
                        Range(ColLetter & r).Interior.ColorIndex = 0 'white background
                    End If
                Next c
            Next r
    
        End Sub
    

    ... e.g enter image description here

答案 1 :(得分:0)

Excel&#39> 查找重复条件格式应该足够了。问题是它只适用于一列。

  

因此可能存在具有相同交易ID的数据,但我想突出显示其他字段不同的地方,因此它们并非真正重复

因此,您不必单独跟踪 Transaction ID 列中的重复项,而是可以尝试添加新列,并在该新列中连接组合值应<的所有列/ em>是唯一的 - 然后在 列上运行Excel的查找重复条件格式。

例如,如果[Transaction_ID],[File_Date]和[NDC_9]的组合应该是唯一的,请创建一个组合[Transaction_ID],[File_Date]和[NDC_9]列值的新列 - 假设您的数据位于实际的你可以有一个像这样的表公式:

=[@Transaction_ID]&[@File_Date]&[@NDC_9]
  

并希望了解哪些信息不同。

然后,您可以过滤该列中的欺骗,然后查看其他列,您可以看到它们的不同之处。用你提出问题的方式来说,实际上不可能更具体......