使用动态单元格引用将单元格向下复制到最后一行

Copy Cell Down to Last Row with Dynamic Cell References

我正在使用 Find 方法来识别已使用 headers 填充的列。然后将我的选择向下偏移一行并输入字符串或公式。然后我想将我的选择粘贴到列中的最后填充行。这实际上只是我要修复的代码最后一行的语法。

Dim i As Integer
Dim g As Integer
i = 0
g = 0
Dim Rtitles(3) As String

Rtitles(0) = "NAME OF M4"
Rtitles(1) = "M4 NUMBER"
Rtitles(2) = "X-Ref ID"
Rtitles(3) = "ADDRESS ID"

Range("A1").Select

Do Until i = 17
    If ActiveCell <> "" Then
        ActiveCell.Offset(0, 1).Activate
        i = i + 1
    Else
        ActiveCell = Rtitles(g)
        g = g + 1
    End If
Loop

'Determines Last Row
Dim LastRow As Long
LastRow = ActiveSheet.Cells(1048575, 3).End(xlUp).Row


'This section Populates the Four newly titled columns
i = 0
Do Until i = 4

Cells.Find(What:=Rtitles(i), After:=ActiveCell, LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Offset(1, 0).Activate
[...]
If i = 2 Then ActiveCell.FormulaR1C1 = _
    "=IF(ISERROR(FIND(""_"",RC[-1])),RC[-1],LEFT(RC[-1],LEN(RC[-1])-3))"
Range(ActiveCell).AutoFill Destination:=Range(ActiveCell, Cells(LastRow,activecolumn))

要获取第 3 列 ("C") 的最后一行,请使用:

LastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "C").End(xlUp).Row

It's really just the syntax of the last line of the code I'm looking to repair.

无需使用自动填充。您可以一次性输入整个范围内的公式。

替换

Range(ActiveCell).AutoFill Destination:=Range(ActiveCell, Cells(LastRow,activecolumn))

Dim ColName As String

'~~> Gets the Column Letter of active cell
ColName = Split(Cells(, ActiveCell.Column).Address, "$")(1)

Range(ActiveCell.Address & ":" & ColName & lastrow).Formula = _
Range(ActiveCell.Address).Formula

编辑

顺便说一句,不要使用 LastRow = ActiveSheet.Cells(1048575, 3).End(xlUp).Row 来查找最后一行。永远不要对值进行硬编码。您可能想查看 THIS 如何查找最后一行。