在宏中使用带有 MAX 函数的自动填充
Using autofill with a MAX function within a macro
我知道您已经回答了我试图复制的类似主题,但我是新手,显然需要为我拼写出答案!我正在尝试将自动填充代码应用于宏中的 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 列的第一行和最后一行之间没有空格,这将有效,您甚至不需要 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
唯一重要的是将公式填写到公式中引用的列中的最后一个值。
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 公式列,以便它每次都会自动填充到不同的行数。
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 列的第一行和最后一行之间没有空格,这将有效,您甚至不需要 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
唯一重要的是将公式填写到公式中引用的列中的最后一个值。
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