gpt4 book ai didi

vba - 将一张纸上的变量范围复制到另一张纸上的下一个空行

转载 作者:行者123 更新时间:2023-12-04 20:12:31 24 4
gpt4 key购买 nike

我需要复制 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

最佳答案

当一个单元格包含一个公式时,它会有一个值,即使在检查工作表上的单元格时它看起来是空的。因此,如果您复制这些看似空的单元格并将它们粘贴到其他位置(即使只是作为值),粘贴到的单元格现在确实包含某些内容(即它们不再是空的;确切地说,它们是一个空字符串VBA 的空)。

然后 Range.End 将移动到最后一个空单元格,而不是移动到最后一个真正填充的单元格。

如果您在空白纸上手动执行此操作,您可以自己查看:在 A1:A5 中输入公式 =“”,然后将范围作为值复制到 B1:B5,然后选择 B10 并按 Ctrl-Up。

解决方法是使用 Range.End 方法,然后只检查向上的单元格内容。或使用 Range.Find,但请记住,这也会改变用户“查找”对话框中的设置。

关于vba - 将一张纸上的变量范围复制到另一张纸上的下一个空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34968949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com