我有一个相当直接的代码行,它循环遍历数据集中的行。但是我意识到我在循环中重复这个代码10次,因为我需要在每隔一列做同样的事情。
如何循环遍历列,以便此代码从Y到AA到AC列等工作,而不是为循环中的每个列手动重新计算?
For i = 1 To Count
ActiveSheet.Range("Y" & i + 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next i
答案 0 :(得分:1)
在Step 2
循环中尝试For
。
For i = 1 To Count Step 2
ActiveSheet.Range("Y" & i).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Next i
如果要遍历列,则需要类似下面的代码:
Dim Row As Long
Dim col As Long
For col = 25 To Count Step 2
ActiveSheet.Cells(Row, col).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Next col
答案 1 :(得分:1)
如果您需要在多个列中粘贴某些内容,请尝试嵌套循环,遍历列和行:
Public Sub TestMe()
Dim lngRow As Long
Dim lngCol As Long
For lngRow = 1 To 10
For lngCol = 25 To 29
With ActiveSheet
.Cells(lngRow, lngCol) = "here we paste"
End With
Next lngCol
Next lngRow
End Sub
你会得到这样的东西:
答案 2 :(得分:0)
切换到Cells
而不是Range
并添加一个带有Step 2
的外部循环:
For j = 25 To 31 Step 2 ' Every other col from col Y to col ACC
For i = 1 To Count
ActiveSheet.Cells(i + 1, j).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Next i
Next j
答案 3 :(得分:0)
Dim currCol As Integer, currRow As Integer
rowsToLoop = 4
For currCol = Columns("Y").Column To Columns("AR").Column Step 2
For currRow = 1 To rowsToLoop
Debug.Print "Current Cell: " & ActiveSheet.Cells(currRow + 1, currCol).Address
ActiveSheet.Cells(currRow + 1, currCol).PasteSpecial Paste:=xlPasteValues
Next currRow
Next currCol
我会在您的代码运行之前手动或以编程方式收集复制单元格或范围...如果您是手动执行此操作,请注意有Copy
范围方法。例如,要复制单元格T5,您可以使用:
Range("T5").Copy
另请注意,我将变量的名称从“Count
更改为myCount
”,因为Count
是保留字,不应使用作为变量名。