我有此代码,它在工作簿中的所有工作表之间循环,并复制每张工作表的F9中的值,并将其粘贴到“摘要”工作表列A中。如何在B列中打印工作表名称?因此,该值位于“摘要”工作表中工作表名称的旁边。
代码:
Sub loopsheet()
Dim wks As Worksheet
For Each wks In ThisWorkbook.Worksheets
If Not wks.Name = "Summary" Then
wks.Range("F9:F" & wks.Cells(Rows.Count, "F").End(xlUp).Row).Copy _
Destination:=Worksheets("Summary").Cells(Rows.Count, "A").End(xlUp).Offset(1)
End If
Next
End Sub
谢谢
答案 0 :(得分:1)
创建两个变量以在循环时跟踪工作表的最后一行。这将有助于代码的可读性。这两个变量的组合还可以帮助您推断需要删除工作表名称的范围的大小。
我相信cLR + pLR - 11
是范围的大小。该偏移量是由于标题,LR偏移量以及您从第9行开始复制而造成的。运行此命令后,如果我错了,可能需要对其进行调整。
Option Explicit
Sub LoopSheet()
Dim ws As Worksheet
Dim Summary As Worksheet: Set Summary = ThisWorkbook.Sheets("Summary")
Dim cLR As Long, pLR As Long
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> Summary.Name Then
cLR = ws.Range("F" & ws.Rows.Count).End(xlUp).Row
pLR = Summary.Range("A" & Summary.Rows.Count).End(xlUp).Offset(1).Row
ws.Range("F9:F" & cLR).Copy Summary.Range("A" & pLR)
Summary.Range(Summary.Cells(pLR, 2), Summary.Cells(cLR + pLR - 11, 2)).Value = ws.Name
End If
Next ws
End Sub