我在处理某些事情时遇到了一些麻烦,希望有人能够帮助我(相当新手)找到我在这个Excel宏中做错的事情。< / p>
我有两个工作表,一个包含数据,一个包含计算数据表统计数据所需的条件(工作人员姓名,日期和月份名称)。编写宏是为了给出给定范围的工人在给定的月和年范围内执行的特定任务的数量的细分。扭曲的是,我试图确定任何给定工人执行任务的日期列表中唯一的日期。
例如,如果工人在2017年5月1日完成任务两次,并且每次都在2017年6月1日,2017年7月1日和2017年8月1日完成 - 我试图得到一个回复答案尽管已经完成了五项任务,但只使用了四天,对于那名工人来说只有四天。
我在.Value数组与Date数组的日期格式化方面遇到了很多问题,但我想我已经纠正了。我遇到的问题是我的输出数据与它应该的数据不匹配,数字有时会达到数百到数百,而单个月是不可能的。
任何帮助将不胜感激!我知道使用公式可以完成这项任务,但是我的数据非常疯狂,并且它正在消耗大量的处理能力。这是我的代码:
Sub Button1_Click()
Dim Data() As Variant
Dim Dates() As Variant
Data = Worksheets("Master List").Range("A2:" & "P" & Worksheets("Master List").UsedRange.Rows.Count).Value
ReDim Dates(0 To 0)
DataLengthX = UBound(Data, 1)
MonthCount = 0
For i = 41 To 76
MonthYear = Worksheets("Daily Count").Cells(i, 1).Value
For p = 3 To 27
DateNum = 0
ReDim Dates(0 To 0)
ReviewerName = Worksheets("Daily Count").Cells(40, p).Value
For x = 1 To DataLengthX
DateMatch = False
If ReviewerName = Data(x, 8) And MonthYear = Data(x, 12) Then
For Z = 0 To UBound(Dates, 1)
If Format(Dates(Z), "m/d/yyyy") = Format(Data(x, 9), "m/d/yyyy") Then
DateMatch = True
Exit For
End If
Next Z
If DateMatch = False Then
ReDim Dates(0 To DateNum)
Dates(DateNum) = Format(Data(x, 9), "m/d/yyyy")
DateNum = DateNum + 1
End If
End If
Next x
If UBound(Dates, 1) <> 0 Then
Worksheets("Daily Count").Cells(i, p) = UBound(Dates, 1) + 1
Else
Worksheets("Daily Count").Cells(i, p) = 0
End If
Next p
Next i