我正在尝试创建数据集,发现很难手动进行操作。我只是想知道我们是否有办法在Excel中自动进行操作。
如上图所示,我需要52周。例如201703; 201704; 201705 ...... 201752。
在这方面的任何帮助将不胜感激!
谢谢, Ganesh
答案 0 :(得分:1)
我认为您已经确定了WeekDiff的模式,该模式始终从5到-5。 由于您具有201701的数据,因此可以基于这些数据生成从201702开始的数据。 一旦插入201701的数据,就可以对CRW,Snapweek和WeekDiff单元格使用以下公式。 拖动直到获得首选结果。
Cell#A14 =IF(A2<>"",A2+1,"")
单元格B14 =IF(NUMBERVALUE(RIGHT(B2,2))<52,IF(B2<>"",B2+1,""),B2+49)
单元格C14 =IF(C2<>"",C2,"")
答案 1 :(得分:0)
您的weekdiff公式可能是:
=(MIN(DATE(LEFT(A2,4)+1,1,0),DATE(LEFT(A2,4),1,1)-WEEKDAY(DATE(LEFT(A2,4),1,1),2)+RIGHT(A2,2)*7)-MIN(DATE(LEFT(B2,4)+1,1,0),DATE(LEFT(B2,4),1,1)-WEEKDAY(DATE(LEFT(B2,4),1,1),2)+RIGHT(B2,2)*7))/7
但是我不确定您是否还希望自动填写年份-星期,如果是这样,请尝试以下操作:
Sub tst()
Dim startweek As Long, i As Long, j As Long, k As Long, arr(1 To 624, 1 To 3)
startweek = 201701
For j = 1 To 52
For i = 1 To 12
k = k + 1
If i = 12 Then Exit For
arr(k, 1) = startweek: arr(k, 3) = 6 - i: arr(k, 2) = startweek - arr(k, 3)
If Val(Right(arr(k, 2), 2)) > 52 Then arr(k, 2) = arr(k, 2) - 48
Next i
startweek = startweek + 1
Next j
Sheet1.Cells(2, 1).Resize(UBound(arr), UBound(arr, 2)) = arr
End Sub
答案 2 :(得分:0)
我与@Surani同时进行了挖掘并得到
在A2中
=201700+INT((ROW()-2)/11)+1
在C2中
=5-MOD(ROW()-2,11)
在B2中
=IF((MOD(A2,100)-C2)<1,201652-(C2-MOD(A2,100)),IF((MOD(A2,100)-C2)>52,201800+(MOD(A2,100)-C2)-52,201700+MOD(A2,100)-C2))
但是其他解决方案看起来更短!