【问题标题】:VBA Macro to search for value then incrementVBA宏搜索值然后递增
【发布时间】:2013-08-08 15:29:03
【问题描述】:

我这周刚刚了解了宏,正在寻求帮助(如果我的问题可能的话)..我想做的是运行一个宏,在 C 列中搜索 #1..then 在每个它下面的单元格增加数字直到它达到一个完整的单元格(下一部分)..然后找到下一个#1,依此类推,直到最后。如果这样的事情是可能的任何指导和专业知识表示赞赏!我在下面添加了一个模型。另外请记住,我在示例中使用了小数字。

前宏

后宏

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    通过 ol' 宏记录器回答:

    Sub Macro1()
      Range("C1:C10").Select
      Selection.SpecialCells(xlCellTypeBlanks).Select
      Selection.FormulaR1C1 = "=R[-1]C+1"
    End Sub
    

    编辑:更新以根据 cmets 在基于完全填充的 B 列的连续区域内填充。

    Sub Macro2()
      Range("B1").Select
      Selection.CurrentRegion.Select
      Selection.Offset(0, 1).Resize(, 1).Select
      Selection.SpecialCells(xlCellTypeBlanks).Select
      Selection.FormulaR1C1 = "=R[-1]C+1"
    End Sub
    

    或者,如果不是连续的,但希望填充到 B 列中填充的最后一行

    Sub Macro3()
      Range("B1", Range("B1048576").End(xlUp)).Select
      Selection.Offset(0, 1).Resize(, 1).Select
      Selection.SpecialCells(xlCellTypeBlanks).Select
      Selection.FormulaR1C1 = "=R[-1]C+1"
    End Sub
    

    【讨论】:

    • 宏刻录机是你的朋友。要手动执行此操作,请选择所需的范围。 F5|Special... 选择空白单元格。输入您的公式并按 Ctrl-Enter 填充所有选定的(空白)单元格。
    • 看看这就是困扰我的地方。范围是未知的,因为您永远不知道工作表的大小。
    • 几个选项:(1)如果有其他数据使该区域连续,您可以扩展到CurrentRegion。 (2) 如果区域不连续(整个空白行分开),则转到工作表上最后一个可能的单元格,例如Range("C1048576").Select 用于 Excel 2010。然后Selection.End(xlUp).Select 以到达最后填充的单元格。
    • @Golf_pro90 据我所知,您的目标存在问题。可以构建一个对第一部分工作得很好的宏,但在第一部分之后,宏将继续增加单元格值,直到工作表结束(> 百万行)。工作表上是否还有其他数据可供宏参考以告诉它何时停止?
    • +1 @ARich OP 需要包含一些逻辑来告诉宏何时停止,否则它不会停止。在该示例中,最后 (S2) 组数据在“3”处停止。宏如何知道停在 3 而不是 4、409 或 1,048,576?
    猜你喜欢
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多