需要一个循环来重新表示相同的公式但是对于下一列

时间:2016-04-04 10:32:20

标签: excel vba excel-vba

你可以看到我想在每次转到下一个值时重复它...有没有更简单的方法来做到这一点?

我已经尝试过循环功能,但我不知道如何使其工作,以便每次为同一行执行下一列。

Sub rebuild()
If D28 > 2600000 Then
Range("E$110:I$120").Select
Selection.Copy

Range("E18:Il28").Select
ActiveSheet.Paste
End If

If E28 > 2600000 Then
Range("E$110:I$120").Select
Selection.Copy

Range("F18:Jl28").Select
ActiveSheet.Paste

End If

If F28 > 2600000 Then
Range("E$110:I$120").Select
Selection.Copy

Range("G18:Kl28").Select
ActiveSheet.Paste

End If


If G28 > 2600000 Then
Range("E$110:I$120").Select
Selection.Copy

Range("H18:Ll28").Select
ActiveSheet.Paste

End If


End sub

2 个答案:

答案 0 :(得分:1)

这真的很简单。我已对代码进行了评论。

此外,您无需选择要复制/粘贴的范围。您可能希望看到THIS

Sub rebuild()
    With Sheet1 '~~> Change this to the relevant sheet
        For i = 4 To 6 '<~~ Col 4 (D) to Col 6 (F)
            If .Cells(28, i).Value > 2600000 Then
                '~~> Increment the range wgere you want to paste
                .Range("E$110:I$120").Copy .Range(.Cells(18, i + 1), .Cells(128, i + 5))
            End If
        Next i
    End With
End Sub

答案 1 :(得分:0)

解决方案可能是将变量放入数组中,然后进行简单的for循环。

Dim MyArray(4, 2) as Variant
MyArray(0,0) = D28
MyArray(0,1) = Range("E18:Il28")
MyArray(1,0) = E28
MyArray(1,1) = Range("F18:Jl28")
MyArray(2,0) = F28
MyArray(2,1) = Range("G18:Kl28")
MyArray(3,0) = G28
MyArray(3,1) = Range("H18:Ll28")

For i = LBound(MyArray) to UBound(MyArray)
    If MyArray(i,0) > 2600000 then
        Range("E$110:I$120").Copy
        MyArray(i,1).Paste
    End If
Next