在我的电子表格的G栏中,我想从另一列中提取数据。但不是每排,只有每三排。如何编写一个For Until循环,它接受每三行,以及如何结束循环?
这是我需要在G列中每第三行循环的代码,直到第350行。
ActiveCell.FormulaR1C1 = "=RC[-1]"
Range("G10").Select
ActiveCell.FormulaR1C1 = "=RC[-1]"
Range("G13").Select
ActiveCell.FormulaR1C1 = "=RC[-1]"
Range("G16").Select
ActiveCell.FormulaR1C1 = "=RC[-1]"
此外,是否有人可以推荐在线资源来学习excel中的VBA宏?
答案 0 :(得分:1)
为了给你一个起点,试试
Sub Test()
Dim MyRange As Range, Idx As Integer
Set MyRange = [G10] ' define a range object
Idx = 1 ' row index
Do While True ' see note
MyRange(Idx, 1).FormulaR1C1 = "=RC[-1]"
Idx = Idx + 3 ' advance by 3 rows
Loop
End Sub
这里使用的是Range对象,而不是选择和激活单元格。
重要:将Do While True
替换为更合适的终止条件......就像这样,您创建了一个无限循环,这对于在调试器中进行测试很有用,但不适用于& #34;无人值守"执行。
合适的终止条件可能是
Do While MyRange(Idx, 1) <> "" ' as long as G is not empty
Do While MyRange(Idx, 0) <> "" ' as long as F is not empty
DO While Idx < 200 ' until a certain position is reached
答案 1 :(得分:0)
您可以使用如下所示的Step 3
Sub loopThroughColumn()
Dim i As Integer
Dim LastRow As Integer
LastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "G").End(xlUp).Row
For i = 1 To LastRow Step 3
Range("G" & i).FormulaR1C1 = "=RC[-1]"
MsgBox Range("G" & i).Value
Next
End Sub
您可以找到用于学习VBA here
的在线资源