我从B行开始有很多行,它们提供了项目的详细信息。
E.g。
ProjectID, END Date, Number of Hours to complete, Number of Weeks to complete
AAA001, 15-Jan-2017, 37.5, 4
AAB002, 15-Feb-2017, 75, 5
AAC003, 20-Feb-2017, 37.5, 3
我希望每一行都能多次复制到新的表格中(根据完成的周数),我希望完成的小时数除以完成的周数,我希望Date可以根据完成的周数返回几周 例如
AAA001, 18-Dec-16, 9.375, 1
AAA001, 25-Dec-16, 9.375, 1
AAA001, 1-Jan-17, 9.375, 1
AAA001, 8-Jan-17, 9.375,1
AAB002, 11-Jan-17, 15, 1
AAB002, 18-Jan-17, 15 ,1
AAB002, 25-Jan-17, 15 ,1
AAB002, 1-Feb-17, 15 ,1
AAB002, 15-Feb-17, 15, 1
...
等等
有没有办法在VBA中执行此操作,然后根据日期按顺序对结果表进行排序?
我担心我试图寻找解决方案而只能找到部分答案。如果有人可以评论他们提供的代码,那将对我有所帮助。
提前多多感谢。
答案 0 :(得分:0)
它没有优化,但有效。我希望它能实现你的意思。 Yout输入必须位于从A列到D列的第一张纸上,您需要有第二张纸
Option Explicit
Sub test()
Dim cnt As Integer
Dim i As Integer, j As Integer, k As Double
i = 2
k = 2
Sheets(2).Cells(1, 1).Value = Sheets(1).Cells(1, 1).Value
Sheets(2).Cells(1, 2).Value = Sheets(1).Cells(1, 2).Value
Sheets(2).Cells(1, 3).Value = Sheets(1).Cells(1, 3).Value
Sheets(2).Cells(1, 4).Value = Sheets(1).Cells(1, 4).Value
While Sheets(1).Cells(i, 1).Value <> ""
cnt = Sheets(1).Cells(i, 4).Value
For j = 1 To cnt
Sheets(2).Cells(k, 1).Value = Sheets(1).Cells(i, 1).Value
Sheets(2).Cells(k, 2).Value = Sheets(1).Cells(i, 2).Value
Sheets(2).Cells(k, 3).Value = Sheets(1).Cells(i, 3).Value / Sheets(1).Cells(i, 4).Value
Sheets(2).Cells(k, 4).Value = 1
k = k + 1
Next j
i = i + 1
Wend
End Sub