VBA在col中找到唯一值,其中col B中的日期等于col C中的值

时间:2017-11-28 16:27:16

标签: vba excel-vba excel

抱歉,我没有代码,因为我不太清楚从哪里开始。这似乎不应该那么困难,但我完全卡住了..

我在col A中有名字,在col B中有日期。

名称和日期都有重复。

在col C中有一个唯一日期列表。

我试图编写一些代码,告诉我col A中名称的唯一数量,其中日期是col C中的x。

非常感谢任何帮助!

由于

Col A      Col B         Col C          Col D
name       dates        Unique dates    
bob        02/01/2000   02/01/2000  
fred       02/01/2000   03/01/2000  
harry      03/01/2000       
bob        03/01/2000       
fred       02/01/2000       
harry      03/01/2000       

所以在col D中,我希望在运行代码时有一个数字,数字将是每个唯一日期的唯一名称数。因此,对于02年1月2日在col D中,数字将是2

1 个答案:

答案 0 :(得分:0)

以下代码可以根据需要执行,但是我使用Sheet2作为帮助工作表来在计算出现次数之前删除重复项,因此只要你有一个Sheet2并且Sheet1上的列D中有零,那么它应该工作:

Sub foo()
    LastRow2 = Sheet1.Cells(Sheet1.Rows.Count, "D").End(xlUp).Row 'Find the last Row on column A of Sheet1
    Columns("A:B").Copy 'Copy the first two columns of Sheet1.
    Sheets("Sheet2").Paste 'Paste the columns into Sheet2
    Application.CutCopyMode = False
    LastRow3 = Sheet2.Cells(Sheet2.Rows.Count, "A").End(xlUp).Row ' Count the number of rows on Sheet2 Column A
    Sheet2.Range("$A$1:$B$" & LastRow3).RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes ' Remove duplicates on Sheet2

    For i = 2 To LastRow3 'Loop through Sheet2 to find expected values
        For j = 2 To LastRow2 ' Loop through Sheet1 Column D to compare values
            If Sheet1.Cells(j, 3).Value = Sheet2.Cells(i, 2).Value Then ' If values on Sheet1 Column D match those on Sheet2 Column B Then
                Sheet1.Cells(j, 4).Value = Sheet1.Cells(j, 4).Value + 1 ' Increment Column D on Sheet1 by one (to be able to increment the first/original value should be 0)
            End If
        Next j
    Next i
End Sub