Vba 在宏中使用带MAX函数的自动填充

Vba 在宏中使用带MAX函数的自动填充,vba,excel,max,autofill,Vba,Excel,Max,Autofill,我知道你已经回答了类似的问题,我试着重复,但我是一个新手,显然需要为我详细说明答案!我试图将自动填充代码应用于宏中的MAX公式列,以便每次自动填充到不同的行计数 Range("AC2").Select ActiveCell.FormulaR1C1 = "=MAX(RC[-2],RC[-1])" Selection.AutoFill Destination:=Range("AC2:AC285") Range("AC2:AC285").Select 谢谢大家! 所以您有两个主要任务: 如何定义给

我知道你已经回答了类似的问题,我试着重复,但我是一个新手,显然需要为我详细说明答案!我试图将自动填充代码应用于宏中的MAX公式列,以便每次自动填充到不同的行计数

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

谢谢大家!

所以您有两个主要任务:

  • 如何定义给定列中的最后一行
  • 如何根据行和列定义范围
这是两个问题的答案:

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。列。

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

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

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

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

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