|
大家好, VBA菜鸟一枚, 现在遇到一个棘手难题,我现在在给医院做一个模型,模型的基本组成是清洗-包装-消毒-配送,然后对每个步骤如清洗都有每天的数据,包括清洗数量以及时间,模型与原始数据是在不同的sheet中,现在我想输入任意一段时间,比如6月8号到11号或7月2号到15号(这个用户自主决定),希望模型能够根据原始数据的对应日期可以自动生成(数量,时间),请问通过VBA如何能够办到,多谢大家了
最好调整成一致的。当然也可以智能判断,但比较麻烦。附件表3已调成和表2一样的表式。 - Sub 统计()
- Set d1 = CreateObject("scripting.dictionary")
- Set d2 = CreateObject("scripting.dictionary")
- sd = [c1]: ed = [c2] '开始日期、结束日期
- For Each sh In Worksheets
- If sh.Index > 1 Then
- arr = sh.[a1].CurrentRegion
- For i = 2 To UBound(arr)
- If arr(i, 2) >= sd And arr(i, 2) <= ed Then
- xkey = arr(i, 5)
- d1(xkey) = d1(xkey) + arr(i, 1) '数量累加
- d2(xkey) = d2(xkey) + arr(i, 4) '时间累加
- End If
- Next
- End If
- Next
- arr = [a5:d10]: ra = UBound(arr)
- xday = ed - sd + 1
- For i = 2 To ra - 1
- xkey = arr(i, 1)
- arr(i, 2) = d1(xkey) / xday
- arr(i, 3) = d2(xkey) / xday
- arr(i, 4) = arr(i, 2) * 7
- s1 = s1 + arr(i, 2)
- s2 = s2 + arr(i, 3)
- Next
- arr(ra, 2) = s1: arr(ra, 3) = s2: arr(ra, 4) = s1 * 7
- [a5:d10] = arr
- End Sub
- Sub 清除数据()
- [b6:d10].ClearContents
- End Sub
复制代码
|
|