我有一个看起来像这样的Excel文件:
我想制作一个VBA代码,每隔第31行移动到第60行。这意味着应该保留1到30行,第31行到第60行应该移动第61行到第90行应该再次移动91到120应该移动等等。
所以最后的结果应该是:
我尝试自己制作它,但这是一个问题,我已经在行中有一些东西而且我不知道如何制作它。
Public Sub s()
Dim position As Long
Dim counter As Long
Dim updater As Long
updater = 30
position = updater
For counter = updater + 1 To Rows.Count
Next counter
If counter <= position + updater Then
Cells(i, 1).Font.Color = vbRed
Else
position = position + updater
End If
End Sub
我正在改变它的颜色来展示它,但不知道如何让它移动。
答案 0 :(得分:0)
您应该始终记住,您可以在Excel中记录您的操作,而不是重新创建记录的marko以满足您的需求。这是宏的一个完整的例子,可以这样的方式完成并用作学习练习。
我认为你通过使用“For”开始很好,但在我看来,第30行并不是最好的起点,因为你想要每下一轮转30行以进入下一部分细胞。它是可爱的简单代码,所以我已经为你准备了工作宏,所以你可以尝试一下并学习它:
Public Sub create_second_column()
Dim counter As Long
Dim starting_cell As Integer
Dim seleceted_space As Integer
Dim go_back As Integer
starting_cell = 1
seleceted_space = 29
go_back = 30
For counter = starting_cell To Rows.Count
counter = counter + 30
ActiveSheet.Range(Cells(counter, 1), Cells(counter + seleceted_space, 2)).Copy
ActiveSheet.Range(Cells(counter - go_back, 4), Cells(counter - go_back, 4)).PasteSpecial xlPasteValues
ActiveSheet.Range(Cells(counter, 1), Cells(counter + seleceted_space, 2)).ClearContents
ActiveSheet.Range(Cells(counter, 1), Cells(counter + seleceted_space, 2)).Delete Shift:=xlUp
ActiveSheet.Rows(counter).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Next counter
End Sub