如何复制包含空白单元格中包含公式的列中的最后一个非空白单元格

时间:2019-08-02 14:26:01

标签: excel vba

我正在寻找在列中复制带有值的最后一个单元格(这是一个返回值的公式)。唯一的问题是,在特定列中的最后一个值之后,有更多的公式返回空白值。

当我使用此代码时:

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

它复制了包含公式的最后一个单元格,因此它复制了一个空白单元格。我希望它复制显示一个值的最后一个单元格。

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

我认为这就是您要寻找的内容(还包含来自previous问题的代码):

For col = 1 To lastCol
    If .Cells(1, col).Value = "F" Then
        'lastRow = .Cells(.Rows.Count, col).End(xlUp).Row
        lastRow = .Columns(col).Find("*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows, LookIn:=xlValues).Row
        .Range(.Cells(lastRow, col), .Cells(lastRow + copyRowAmt, col)).Formula = _
            .Cells(lastRow, col).Formula
    End If
Next col

答案 1 :(得分:0)

在这种情况下,您可以使用Range Class的SpecialCells功能。有点棘手,但可以高效地完成工作。

尝试:

LastRow = Cells(Rows.Count, "C").End(xlUp).row
LastRow = Split(Range("C1:C" & LastRow).SpecialCells(xlCellTypeConstants).Address, "$")(4)
Cells(LastRow, "C").Copy

已更新:

For c = 1 To 20

    LastRow = Cells(Rows.Count, c).End(xlUp).row
    LastRow = Split(Range(Cells(1, c), Cells(LastRow, c)).SpecialCells(xlCellTypeConstants).Address, "$")(4)
    Cells(LastRow, c).Copy

Next c

答案 2 :(得分:0)

@Mikku-谢谢您的回答!现在唯一的是,我正在工作表中的各列中循环。我的代码确实是:

For c = 1 To 20
    LastRow = Cells(Rows.Count, c).End(xlUp).Row
    LastRow = Split(Range(c & LastRow).SpecialCells(xlCellTypeConstants).Address, "$")(4)
    Cells(LastRow, c).Copy

Next c

那么我该如何在循环中插入您的代码?

谢谢!