Excel 如何将特定数量的行从一个ss复制到另一个ss
我有两个主ssExcel 如何将特定数量的行从一个ss复制到另一个ss,excel,vba,Excel,Vba,我有两个主ssaccNo和output。 我正在尝试将x行数从AccNo复制到输出。 x是一个变量,由用户确定,它从一个称为“输入”的不同ss输入到单元格B5。 我是否有办法循环代码,将行A1、A2、A3、A4等从AccNo复制到输出(从输出中的A4开始) 我试着把它作为一个带有按钮的宏,我一次只能做一个,这只是我正在努力处理的循环。例如,我需要它循环x次数。如果x=5我希望它将accNo中的5行以上数据复制到输出 Sub TradingAccount() Set accNo = Th
accNo
和output
。
我正在尝试将x
行数从AccNo
复制到输出。
x
是一个变量,由用户确定,它从一个称为“输入”的不同ss输入到单元格B5
。
我是否有办法循环代码,将行A1、A2、A3、A4
等从AccNo
复制到输出(从输出中的A4
开始)
我试着把它作为一个带有按钮的宏,我一次只能做一个,这只是我正在努力处理的循环。例如,我需要它循环x
次数。如果x=5
我希望它将accNo
中的5行以上数据复制到输出
Sub TradingAccount()
Set accNo = ThisWorkbook.Worksheets("AccountNo")
Set output = ThisWorkbook.Worksheets("Format")
Set input = ThisWorkbook.Worksheets("input")
i = 1
e = 4
Do loop x amount of times = True
accNo.Range("A" & i).EntireRow.Copy
output.Cells(e, 1).PasteSpecial xlPasteValues '(e,1) is A4?
ActiveCell.Offset(1, 0).Select
i = i + 1
e = e + 1
Loop
End Sub
宏将从一个电子表格向另一个电子表格复制
x
行数。如果使用的是连续范围,则无需循环。此外,您只使用值,因此我们可以使用.value=.value
使这一点变得更容易,这样:
dim cnt as long, lrd as long, src as worksheet, dst as worksheet
cnt = sheets("input").cells(5,2).value 'count of rows from B5 on input
set src = sheets("AccNo") 'source sheet
set dst = sheets("output") 'destination sheet
With dst
lrd = .cells(.rows.count,1).end(xlup).row 'lastrow of destination
.range(.rows(lrd+1),.rows(lrd+1+cnt-1)).value = src.range(src.rows(1),src.rows(cnt)).value 'FIXED "-1" IN SRC FINAL ROW; SEE COMMENTS
end with
未经测试的代码,但应给出总体思路。请注意,使用了
cnt-1
,因为您有一个起始行(1),并且希望总共有5行(1、2、3、4、5),但将cnt
添加到起始行将使您进入第6行。Hi,感谢上面的问题-唯一的问题是它复制到dst单元格a26而不是a4,您知道为什么吗?@NewUser342当前设置为将数据粘贴到最后一行下方(lrd+1
用于目标工作表的最后一行)。这是不替换/覆盖旧数据的标准,但如果您只需要新数据,您可能需要在工作表上添加.ClearContents
,这样您就不会试图用5行范围覆盖30行范围。非常感谢,唯一的问题是,例如,如果B5为10,它将复制9行以上,并将第10行保留为#N/a,这是为什么?@NewUser342刚刚在源代码和目标代码中都实现了icnt-1
。。。源不应具有-1。。。只有目的地应该是。那是我的错。值lrd+1
添加了cnt,但添加时需要根据我在帖子中的评论减去1
;对于源数据,行号是精确的,不应该是-
,而应该是src.rows(cnt)
。