Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何复制包含包含公式的空白单元格的列中的最后一个非空白单元格_Excel_Vba - Fatal编程技术网

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

Excel 如何复制包含包含公式的空白单元格的列中的最后一个非空白单元格,excel,vba,Excel,Vba,我希望复制列中具有值的最后一个单元格(这是一个返回值的公式)。唯一的问题是,在特定列中的最后一个值之后,有更多的公式返回空白值 当我使用此代码时: LastRow = Cells(Rows.Count, "C").End(xlUp).Row Cells(LastRow, "C").Copy 它复制包含公式的最后一个单元格,以便复制空白单元格。。我希望它复制显示值的最后一个单元格 谢谢你的帮助 在这种情况下,您可以使用Range类的SpecialCells功能。有点棘手,但会有效地完成工作 试

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

当我使用此代码时:

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

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


谢谢你的帮助

在这种情况下,您可以使用Range类的
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

更新:

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

@米库-谢谢你的回答!现在唯一的一件事是我在工作表中的列之间循环。我的代码实际上是:

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

那么,我如何在循环中插入您的代码呢


谢谢

我想这就是你想要的(也包括你问题中的代码):


最后一行是真“值”,还是一个生成值而不是空的公式?最后一行是一个返回空的公式,最后一个“值”也是一个生成值的公式。@TristB,使用更新的答案是,但您需要另一种方法。仅供参考
Range(c&lastRow)
不是有效的构造。您可能希望拆分
单元格(lastRow,c).
为了澄清,单元格中有一个公式,但公式返回一个空白。然后您希望继续增加行数(从第20行到第19行到第18行等等),直到公式返回非空值。那你想把公式抄下来吗?没错!我想复制返回一个值的列的最后一个单元格思考一下--公式在所有行中都是一样的吗?或者非常清楚地说,是否要将值而不是公式复制到30行中?公式在一列的所有行中都相同,但在每列中都不同。我想复制公式,而不是值。这行吗特殊单元格(类型:=xlCellTypeConstants,值:=xlTextValues)太棒了!它工作得很好!谢谢你的帮助!