gpt4 book ai didi

excel - 如何将选定的范围(作为 rng 传递)粘贴到工作表的末尾?

转载 作者:行者123 更新时间:2023-12-01 20:20:06 25 4
gpt4 key购买 nike

下面的代码尝试将选定范围(作为 rng 传递)粘贴到工作表的末尾。

如果已经存在两行(A1、A2),则该方法有效。

Sub copyRow(rng As Range, ws As Worksheet)
Dim newRange As Range
Set newRange = ws.Range("A1").End(xlDown).Offset(1, 0)
rng.Copy
newRange.PasteSpecial (xlPasteAll)
End Sub

如果 A1 和 A2 存在并且您调用此方法 100 次,它将在它们后面插入 100 行。

如果没有行或只有 A1,它只会覆盖 A2。我可以看到 Excel 在同一行上写入(覆盖)。

如果行数少于 2 行,这似乎与 xlDown 的计算方式有关。

最佳答案

抱歉,我不同意迈克尔的回答。

End(xlDown) 相当于单击 Ctrl+Down

尝试Ctrl+向下

  • 空列
  • 第 1 行中有值但没有其他值的列
  • 第 1 行和第 2 行中的值
  • 第 1、2、3、7、8、9、13、14 和 15 行中的值

这将使您了解所有不同的行,Ctrl+Down 可能会带您到。

Set newRange = ws.Range("A1").End(xlDown).End(xlDown).End(xlUp).Offset(1, 0) 并不一定会将您带到最后使用的行加 1。

我很惊讶 Set newRange = ws.Range("A1").End(xlDown).Offset(1, 0) 可以使用空列。 Range("A1").End(xlDown) 会将您带到工作表的底行,然后 .Offset(1, 0) 会尝试让您离开工作表片材。

考虑:

Dim RowLast As Long

RowLast = ws.Cells(Rows.Count, "A").End(xlUp).Row
  • 如果 A 列为空,RowLast 将设置为 1。
  • 如果 A1 有值,但其他单元格没有值,则 RowLast 将设置为 1。
  • 如果 A 列中的多个单元格都有值,则 RowLast 将设置为具有值的底行。
  • 如果最后一行有值,它将被忽略。
  • 如果最后两行有值,RowLast 将设置为 Rows.Count - 1。

我假设您在 borrom 行中没有值。如果您不关心第 1 行是否留空且列为空,则:

RowLast = ws.Cells(Rows.Count, "A").End(xlUp).Row
Set NewRange = ws.Cells(RowLast + 1, "A")
无论工作表 ws 的当前内容如何,​​

都应该给出所需的结果。

如果您确实关心第 1 行留空,请尝试使用 Ctrl+DownCtrl+Up 将使您了解不同值组合的效果。

关于excel - 如何将选定的范围(作为 rng 传递)粘贴到工作表的末尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9404654/

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