在不同的工作表上填充序列号

时间:2013-09-10 18:45:12

标签: excel vba excel-vba serial-number

我有一个宏可以将一个Excel工作表(ExcelA)中的所有已用行复制到另一个(ExcelB):

Sub CopyFromOneXL()
Dim myBook As Workbook, newBook As Workbook

Set myBook = ThisWorkbook
Set lRowMyBook = Range("A1").SpecialCells(xlCellTypeLastCell)
Set newBook = Workbooks.Open("C:\Users\user\Desktop\EXCEL\ExcelB.xlsx")

newBook.Activate

Set lRowNewBook = Sheets("Sheet1").Range("A1").SpecialCells(xlCellTypeLastCell)
lastRowNewBook = lRowNewBook.Row
lastRowMyBook = lRowMyBook.Row
lastRowNewBook = lastRowNewBook + 1

    With newBook
    myBook.Sheets("Sheet1").Rows("1:" & lastRowMyBook).Copy .Sheets("Sheet1").Rows(lastRowNewBook)
    .Close savechanges:=True
    End With
End Sub

ExcelB已经使用了十行(1-10中的序列号),我正在使用上面的宏添加另外三行数据(在ExcelA中)。有没有办法为ExcelB中的三个新添加的行添加序列号,从11开始?

两张表中的行数可能会有所不同,但最终我想从ExcelB停止的位置向ExcelB添加序列号。

2 个答案:

答案 0 :(得分:0)

当我添加以下代码时,它有效。

With newBook
myBook.Sheets("Sheet1").Rows("1:" & lastRowMyBook).Copy .Sheets("Sheet1").Rows(lastRowNewBook)
    Set newLRowNewBook = Sheets("Sheet1").Range("A1").SpecialCells(xlCellTypeLastCell)
newLastRowNB = newLRowNewBook.Row
'MsgBox newLastRowNB
For i = lastRowNewBook To newLastRowNB
    Cells(i, 1).Formula = "=Row()"
Next
.Close savechanges:=True
End With

虽然如果有1000行,宏需要一些时间才能运行。只是想知道是否有任何其他方法可以实现这一点而不使用For循环。

感谢。

答案 1 :(得分:0)

OP希望索引增量条目,方便地,索引号与使用不同工作表中的代码复制的条目的行号匹配。不是在代码中添加带有循环的索引来复制增量,而是将一个公式(=ROW())添加到源表中,然后使用现有代码自动复制。