你可以看到我想在每次转到下一个值时重复它...有没有更简单的方法来做到这一点?
我已经尝试过循环功能,但我不知道如何使其工作,以便每次为同一行执行下一列。
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
答案 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