【问题标题】:How can I loop this code until row x is reached?如何循环此代码直到到达第 x 行?
【发布时间】:2015-11-12 12:42:23
【问题描述】:

在我的电子表格的 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 宏?

【问题讨论】:

  • 您可以使用“步骤 3”循环您的单元格,如果您发布您的代码,我们可以帮助您
  • F 列中是否有标题?循环应该从哪一行开始?

标签: vba excel loops


【解决方案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 替换为更合适的终止条件……这样您将创建一个无限循环,该循环有利于在调试器中进行测试,但不适用于“无人值守”执行。

合适的终止条件可以是

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

【讨论】:

  • 这非常有效,谢谢。 :) 最后一个问题,有没有办法可以使用相同的循环来做其他事情:我有一个包含字符串和整数的列。 ex AB 14:25 有没有办法可以删除字符串字符并将 14:25 拆分为列?
  • 当然 ...这是一个非常通用的循环通过 exel 表的概念(因此应该成为您的面包和黄油)...定义范围/行索引/终止条件...然后在循环内做任何必须做的事情......例如将时间分成分钟和秒/删除或插入一些东西......等等。
【解决方案2】:

您可以使用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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-20
    • 2016-06-18
    • 1970-01-01
    • 2017-02-24
    相关资源
    最近更新 更多