2017-04-19 89 views
0

我试图识别整列如果列B 列C具有重复的值与VBA脚本。例如,如果我有一个包含一个表:如何识别两列中具有相同值的行?

ID Age Grade 
1 14  90 
2 15  78 
3 14  90 
4 16  86 
5 16  86 
6 15  89 
7 14  88 

我运行该脚本后,我想与那些在B列列C.因此,新的片重复值的行新的工作表看起来像:

ID Age Grade 
1 14  90 
3 14  90 
4 16  86 
5 16  86 

这是我迄今在识别行的方面。我不是那么远。

Sub ID() 
Dim LastRowcheck As Long, n1 As Long 
Dim LastRowcheck2 As Long, n2 As Long 

With Worksheets("grades") 
    LastRowcheck = .Range("B" & .Rows.Count).End(xlUp).Row 
    LastRowcheck = .Range("C" & .Rows.Count).End(xlUp).Row 

    For n1 = LastRowcheck To 1 Step -1 
     If .Cells(n1, 1).Value = Cells(n1 + 1, 1).Value And .Cells(n2, 1).Value = Cells(n2 + 1, 1).Value Then 
      '''export to new sheet 
     End If 
    Next n1 
End With 
End Sub 
+0

首先,你应该按年龄排序列,然后分级按升序排列,那么你可以检查连续的行,看看他们是否有相同的价值观,然后一旦你修剪表可以通过ID –

+0

度假村我正在使用的工作表超过100,000行,并不是所有的等级都是整数,他们只有3位小数。通过脚本识别它们会更容易。 @AhmedMasud – Abtra16

+1

使用'application.countifs'来标识倍数。 – Jeeped

回答

2

使用application.countifs来标识倍数。

Dim lastRowcheck As Long, n1 As Long 

With Worksheets("grades") 
    lastRowcheck = Application.Max(.Range("B" & .Rows.Count).End(xlUp).Row, _ 
            .Range("C" & .Rows.Count).End(xlUp).Row) 

    For n1 = lastRowcheck To 1 Step -1 
     If Application.CountIfs(.Columns("B"), .Cells(n1, "B").Value2, .Columns("C"), .Cells(n1, "C").Value2) > 1 Then 
      '''export to new sheet 
      Debug.Print .Cells(n1, "A") & ":" & .Cells(n1, "B") & ":" & .Cells(n1, "C") 
     End If 
    Next n1 
End With 
+0

我得到了一个“应用程序定义或对象定义的错误”与If语句。有任何想法吗? – Abtra16

+0

我的歉意;我有错误的var名称。固定在上面。 – Jeeped

+0

这是应该输出到一个新的工作表,或者它只是确定行? – Abtra16

相关问题