用值

问题描述 投票:0回答:1

亲爱的, 我正在尝试使用值/公式自动填充列中的单元格范围。 主要目的是让宏适用于每月行数不同的类似报告。

已经录制了一个宏,我在其中创建了一个单独的列。在第一个单元格中放置一个值。并通过双击填充句柄自动填充整列。 在宏中创建了以下字符串,其中“495”是测试表中最后填充行的编号。

Selection.AutoFill Destination:=Range("M2:M495")

但是,在这种情况下,当行数大于 495 时,宏将无法正常工作。 为了使其更具动态性,我尝试使用以下内容:

Selection.AutoFill Destination:=Range(Selection, Selection.End(xlDown))
在这种情况下,宏处理整列并将其填充到最后一个单元格 (1048576)。不是最好的解决方案。

您能否提出建议,在宏中放入什么而不是“M495”或“Selection.End(xlDown)”以便将列填充到表中最后填充的行?

下面是最后一版的宏:

Sub Test6()

    Range("E8").Select
    ActiveSheet.ListObjects("report_2023_2_21_143341").Unlist
    Columns("M:M").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("M1").Select
    ActiveCell.FormulaR1C1 = "Count"
    Range("M2").Select
    ActiveCell.FormulaR1C1 = "=RC[-1]-1"
    Range("M2").Select
    Selection.AutoFill Destination:=Range(Selection, Selection.End(xlDown))
    Range(Selection, ActiveCell.End(xlDown)).Select
    Columns("D:D").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "Data"
    Range("D2").Select
    ActiveCell.FormulaR1C1 = "=RC[-2]+RC[10]"
    Range("D2").Select
    Selection.AutoFill Destination:=Range(Selection, Selection.End(xlDown))
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Font.Bold = True
    Selection.NumberFormat = "dd/mm/yyyy;@"

End Sub
excel vba dynamic range autofill
1个回答
0
投票

您可以尝试使用 Cells(Rows.Count,"A").End(xlUp).Row 获取最后一个非空行,然后开始粘贴

LastLine = Cells(Rows.Count,"A").End(xlUp).Row
© www.soinside.com 2019 - 2024. All rights reserved.