Excel宏用于数据重新格式化

时间:2019-05-31 01:55:42

标签: excel vba

我需要在Excel中重新格式化33500行数据。我正在尝试编写一个宏来为我做这件事。

我放置了一些嵌套循环来解决问题

Dim i As Integer
Dim m As Integer
Dim n As Integer
Dim K As Integer
Dim p As Integer
Dim c As Integer

For c = 0 To 10

    For n = 5 To 10

        K = 14 + 7 * (n - 5)

        For i = 0 To 7
            m = 14 + 8 * c
            ActiveSheet.Cells(m + i, n).Select
            Selection.Copy

            ActiveSheet.Cells(K + i, 37).Select
            ActiveSheet.Paste
        Next i

    Next n

Next c

我被困在如何完成32500行的操作中

2 个答案:

答案 0 :(得分:0)

Excel的Integer的值范围是-32,768到32,767,因此格式化33,500行可能是个问题。假设您对代码的工作方式感到满意,那么将变量类型更改为Long可能是一个不错的开始。

顺便说一句,您应该避免使用SELECTing个单元格,因为它会减慢代码速度并导致错误。您可以使用

之类的工具轻松在单元格之间复制和粘贴
Cells(m + i, n).Copy Destination:=Cells(K + i, 37)

答案 1 :(得分:0)

根据注释修改了代码,现在看起来像是一种魅力。非常感谢

将我视作整数 昏暗的整数 昏暗为整数 Dim K作为整数 昏暗p为整数

对于i = 0到121

m = 14    对于n = 5到35

ActiveSheet.Range(Cells(m + i * 8,n),Cells(m + i * 8 + 7,n))。Copy

Range(“ AK”&Rows.Count).End(xlUp).Offset(1).PasteSpecial xlValues

Next n

下一个我

结束子