【问题标题】:How to populate formula in rows dynamically?如何动态地在行中填充公式
【发布时间】:2022-11-16 18:41:24
【问题描述】:

对于任何了解 VBA 世界的人来说,这可能是一个非常简单的问题,但我是一个完全的初学者,几天来我一直在处理以下(尽管微不足道的)问题,但我无法解决它

我正在从另一个 excel 中绘制数据集,所以我永远不知道结果表有多大。我需要将列中的值汇总到一行中,并将行中求和的公式动态扩展到最后一个填充的列。我能够找到黄色字段,但我不知道如何使用 VBA 将公式动态填充到红色字段中。

我知道我在下面自动填充的尝试没有也不会奏效,但我想不出其他任何东西。

感谢您的任何提示

Sub IN7()

lr = Cells.Find("*", Cells(1, 1), xlFormulas, xlPart, xlByRows, xlPrevious, False).Row
lc = Cells.Find("*", Cells(1, 1), xlFormulas, xlPart, xlByColumns, xlPrevious, False).Column

Range("B" & (lr + 2)).Value = "=sum(B2:B" & lr & ")"
Range("B" & (lr + 2)").AutoFill Range("B" & (lr + 2)" & lc)

End Sub

Example

【问题讨论】:

    标签: excel vba excel-formula


    【解决方案1】:

    绝对不是专业人士,但这可能会解决您的问题。

    Sub SumAllColumns()
    
      Dim a As Integer
    
      Range("B7").Select
      ActiveCell.FormulaR1C1 = "=+SUM(R[-5]C:R[-2]C)"
      Range("B7").Select
    
      a = Sheet1.UsedRange.Columns.Count
    
      Selection.AutoFill Destination:=Selection.Resize(1, a - 1)
    
    End Sub
    

    这假设您有 4 行,并且您的第一个总和必须在单元格 B7 中,按照您的示例。如果行数也是可变的,请告诉我,我会尝试更改它。

    【讨论】:

      【解决方案2】:

      那么您要尝试的是创建一个自动检测表的最后一行和最后一列的值,对吗?如果是这种情况,请使用:

      lr = Cells(Rows.Count, 1).End(xlUp).Row 'goes to the last row and then goes up to the last row with any value
      lc = Cells(1, Columns.Count).End(xltoLeft).Column 'goes to the last column and then goes left to the last column with any value
      

      希望以前有人教过我这个。

      关于总和部分,我不太明白你想做什么。我认为您要做的是将第二行的总和扩展到其余道路,对吗?为什么不使用循环?

      for i = 2 to lr
       cells(i, lc + 2).Value = WorksheetFunction.Sum(Range(Cells(i, 1), Cells(i, lc)))
      next i
      

      希望能帮助到你!!

      【讨论】:

        猜你喜欢
        • 2019-05-05
        • 1970-01-01
        • 1970-01-01
        • 2016-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-11
        相关资源
        最近更新 更多