|
楼主 |
发表于 2012-5-25 17:48
|
显示全部楼层
本帖最后由 令狐风 于 2012-5-25 17:49 编辑
play9091 发表于 2012-5-25 17:22
把你的代碼也付上來吧!
代码都是最笨的循环
见笑了!
不过这个是针对真实的文件的,跟上面那个举例子用的附件不完全吻合
- Sub CopyData()
-
- Dim i%, j%, sum!
- With Sheets("修正数据")
-
- For i = 3 To Sheets("原始数据1").Cells(Rows.Count, 1).End(xlUp).Row
- .Cells(i - 1, 1) = Sheets("原始数据1").Cells(i, 1) '直接copy数据
- For j = (i - 1) To Sheets("原始数据1").Cells(Rows.Count, 1).End(xlUp).Row '需要填充空单元格
- If Sheets("原始数据1").Cells(j + 1, 2) <> "" Then
- .Cells(i - 1, 2) = Sheets("原始数据1").Cells(j + 1, 2)
- Exit For
- End If
- Next j
- .Cells(i - 1, 3) = Sheets("原始数据1").Cells(i, 3)
- sum = 0
- '需要求20周期移动平均
- For j = 1 To 20
- sum = sum + Sheets("原始数据1").Cells(i + j - 1, 4)
- Next j
- .Cells(i - 1, 4) = sum / 20
- .Cells(i - 1, 5) = Sheets("原始数据1").Cells(i, 5)
- For j = (i - 1) To Sheets("原始数据1").Cells(Rows.Count, 1).End(xlUp).Row
- If Sheets("原始数据1").Cells(j + 1, 6) <> "" Then
- .Cells(i - 1, 6) = Sheets("原始数据1").Cells(j + 1, 6)
- Exit For
- End If
- Next j
- For j = 7 To 11 '需要做加减计算
- .Cells(i - 1, j) = Sheets("原始数据1").Cells(i, j + 5) + .Cells(i - 1, 2) - Sheets("原始数据1").Cells(i, j)
- Next j
- For j = 12 To 15
- .Cells(i - 1, j) = Sheets("原始数据1").Cells(i, j + 5) + .Cells(i - 1, 5) - Sheets("原始数据1").Cells(i, j - 5)
- Next j
- For j = 16 To 20
- .Cells(i - 1, j) = Sheets("原始数据1").Cells(i, j + 10) + .Cells(i - 1, 2) - Sheets("原始数据1").Cells(i, j + 5)
- Next j
- For j = 21 To 24
- .Cells(i - 1, j) = Sheets("原始数据1").Cells(i, j + 10) + .Cells(i - 1, 5) - Sheets("原始数据1").Cells(i, j)
- Next j
- Next i
-
- End With
-
- End Sub
复制代码
|
|