【问题标题】:Using autofill with a MAX function within a macro在宏中使用自动填充和 MAX 函数
【发布时间】:2018-09-04 18:37:31
【问题描述】:

我知道您已经回答了我试图复制的类似主题,但我是新手,显然需要为我拼出答案!我正在尝试将自动填充代码应用于宏中的 MAX 公式列,以便每次自动填充到不同的行数。

Range("AC2").Select
ActiveCell.FormulaR1C1 = "=MAX(RC[-2],RC[-1])"
Selection.AutoFill Destination:=Range("AC2:AC285")
Range("AC2:AC285").Select

谢谢!

【问题讨论】:

  • 上面的代码有效。你想做什么?
  • 我正在尝试更改它,以便宏将自动填充应用到该 MAX 列以达到正确的行数,因为每次运行它时我都会有不同的行数。

标签: vba excel max autofill


【解决方案1】:

只需将公式填充到公式中引用的列中的最后一个值即可。

dim lr as long
with worksheets("sheet1")
    lr = application.max(.cells(.rows.count, "AA").end(xlup).row, _
                         .cells(.rows.count, "AB").end(xlup).row)
    .Range("AC2:AC" & lr).FormulaR1C1 = "=MAX(RC[-2],RC[-1])"
end with

【讨论】:

    【解决方案2】:

    假设 AC 列的第一行和最后一行之间没有空格,这将起作用,您甚至不需要 AutoFill

    With Range(Range("AC2"),Range("AC2").End(xlDown))
         .FormulaR1C1 = "=MAX(RC[-2],RC[-1])"
    End With
    

    这特别有效,因为您使用的是可以应用于所有单元格的 R1C1 表示法。

    如果可能有空格,您可以像下面这样找到最后一行并以相同的方式填写公式:

    Dim lastRow as Long
    lastRow = Range("AC" & Rows.Count).End(xlUp).Row
    
    With Range("AC2:AC" & lastRow)
        .FormulaR1C1 = "=MAX(RC[-2],RC[-1])"
    End With
    

    【讨论】:

      【解决方案3】:

      所以你有两个主要任务:

      • 如何定义给定列中的最后一行;
      • 如何根据行和列定义范围;

      这两个都是答案:

      Option Explicit
      
      Sub TestMe()
      
          Dim currLastRow As Long
          currLastRow = lastRow(columnToCheck:=4)
      
          With Worksheets(1)
             .Range("D1").FormulaR1C1 = "=MAX(RC[-2],RC[-1])"
             .Range("D1").AutoFill Destination:=.Range(.Cells(1, "D"), .Cells(currLastRow, "D"))
          End With
      
      End Sub
      
      Function lastRow(Optional wsName As String, Optional columnToCheck As Long = 1) As Long
      
          Dim ws As Worksheet
      
          If wsName = vbNullString Then
              Set ws = ActiveSheet
          Else
              Set ws = Worksheets(wsName)
          End If
      
          lastRow = ws.Cells(ws.Rows.Count, columnToCheck).End(xlUp).Row
      
      End Function
      

      lastRow 函数给出每列的最后一行。在您的情况下,您需要列D,例如4. 栏目。

      【讨论】:

        猜你喜欢
        • 2016-02-20
        • 1970-01-01
        • 1970-01-01
        • 2022-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多