Vba Excel不雅代码,需要帮助优化

Vba Excel不雅代码,需要帮助优化,vba,excel,optimization,Vba,Excel,Optimization,我有一些功能完善的代码,但对我来说似乎太臃肿了。如何简化此代码 Sub RowDiv1() Dim R1 As Range Dim R2 As Range Dim R3 As Range Dim R4 As Range Dim R5 As Range Dim R6 As Range Dim R7 As Range Dim R8 As Range With Worksheets("Working Sheet 1") Set R1 = .Range(.Range("G60

我有一些功能完善的代码,但对我来说似乎太臃肿了。如何简化此代码

Sub RowDiv1()

Dim R1 As Range
Dim R2 As Range
Dim R3 As Range
Dim R4 As Range
Dim R5 As Range
Dim R6 As Range
Dim R7 As Range
Dim R8 As Range

    With Worksheets("Working Sheet 1")
        Set R1 = .Range(.Range("G6000").End(xlUp), .Range("AH6000").End(xlUp))
        With R1
            .Cells(1).Offset(1, -4).Resize(.Rows.Count, .Columns.Count) = .Value
            .ClearContents
        End With

        Set R2 = .Range(.Range("G6000").End(xlUp), .Range("AD6000").End(xlUp))
        With R2
            .Cells(1).Offset(1, -4).Resize(.Rows.Count, .Columns.Count) = .Value
            .ClearContents
        End With

        Set R3 = .Range(.Range("G6000").End(xlUp), .Range("Z6000").End(xlUp))
        With R3
            .Cells(1).Offset(1, -4).Resize(.Rows.Count, .Columns.Count) = .Value
            .ClearContents
        End With

        Set R4 = .Range(.Range("G6000").End(xlUp), .Range("V6000").End(xlUp))
        With R4
            .Cells(1).Offset(1, -4).Resize(.Rows.Count, .Columns.Count) = .Value
            .ClearContents
        End With

        Set R5 = .Range(.Range("G6000").End(xlUp), .Range("R6000").End(xlUp))
        With R5
            .Cells(1).Offset(1, -4).Resize(.Rows.Count, .Columns.Count) = .Value
            .ClearContents
        End With

        Set R6 = .Range(.Range("G6000").End(xlUp), .Range("N6000").End(xlUp))
        With R6
            .Cells(1).Offset(1, -4).Resize(.Rows.Count, .Columns.Count) = .Value
            .ClearContents
        End With

        Set R7 = .Range(.Range("G6000").End(xlUp), .Range("J6000").End(xlUp))
        With R7
            .Cells(1).Offset(1, -4).Resize(.Rows.Count, .Columns.Count) = .Value
            .ClearContents
        End With

    End With


End Sub

正如我所说的,这段代码运行得很好,但对于我所要实现的目标来说似乎太长了。

如果您只是将最后一行拆分为4列,则应该执行相同的操作:

Sub SplitRowBy4Cols()
    Dim j As Long
    With Worksheets("Sheet1").Range("G60000").End(xlUp).Resize(, 28)  ' G:AH last row
        For j = 1 To .Columns.Count Step 4
            .Offset(1 + CLng(j / 4), -4).Resize(, 4).Value = .Cells(1, j).Resize(, 4).Value
        Next
        .ClearContents
    End With
End Sub

如果不声明太多的范围,只需要一个区域,然后一个接一个地分配不同的单元格集合,就可以实现更高的优雅度


至于代码的其余部分,它更像是一个谜,而不是一个编码任务。当任务是把一个想法表达成代码时,你知道这个想法。在一个谜题中,你试图从描述中确定你的想法,你已经描述为需要改进。这个网站是关于编码的。我们不做谜题。

告诉我们您的代码应该做什么,这样我们就可以告诉您一种您认为可以改进的工作代码的替代方法,请参阅。您可以在这里找到一些提示:第6000行的意义是什么?@RobinMackenzie,没有意义。当我开始时,我选择它作为一个任意数字。当我开始这项工作时,我从未超出录制宏的范围,所以我做了很多愚蠢的决定和错误。我真的不明白你的意思,编码的所有方面都与解决问题有关,不是吗?我提出了这个问题,因为潜艇是一个较长过程的一部分,这个过程非常庞大。我试图优化它。此外,我还试图改进我的编码,目前我的编码相当糟糕。谢谢你的“帮助”。