我需要复制P:Y列中的所有数据并将其粘贴到A列的下一个空白单元格中。
我已经编写了下面的代码,它工作正常,除了它复制的数据(P:Y)包含整个列的公式,虽然我粘贴值只是为了得到返回的值,它将所有单元格都计为包含数据。
我的意思是,当我第一次运行宏时,它可以工作。但是当我第二次运行它时(我需要这样做),当它找到最后一个空行时。这不是最后一排空行!它选择的行远远低于我可以看到数据的实际最后一行。
空行中没有数据,其中没有公式,但由于某种原因,我认为这些行不是空的。
公式列P:Y中返回的数据每个月都会更改,因此我无法定义特定范围。
如何修改代码以纠正这个问题 - 或者有更好的方法可以解决这个问题吗?
Sub SelectRangea()
Sheets("Set Up Data").Select
Range("P2:Y10000").Select
Application.CutCopyMode = False
Selection.Copy
With Sheets("Pasted Report")
lst = .Range("A" & Rows.Count).End(xlUp).Row + 1
.Range("A" & lst).PasteSpecial xlPasteColumnWidths
.Range("A" & lst).PasteSpecial xlPasteValues
End With
End Sub
答案 0 :(得分:2)
当单元格包含公式时,它将具有一个值,即使在检查工作表上的单元格时它看起来是空的。因此,如果你复制这些看似空的单元格并将它们粘贴到其他地方(即使只作为值),粘贴的单元格现在包含一些东西(即它们不再是空的;它们是一个空字符串准确而不是VBA的空。)
然后Range.End将移动到最后的空单元格,而不是移动到最后一个真正的填充单元格。
如果您在空白纸上手动执行此操作,您可以自己看到:输入A1:A5公式="",然后将范围作为值复制到B1:B5,然后选择B10并按Ctrl-Up。
修复将使用Range.End方法,然后只检查向上的单元格内容。或者使用Range.Find,但请记住,这也会改变用户“查找”对话框中的设置。