我是vba的新手,需要一些帮助。我有一个名为“存档”的工作表,它将以某种表格格式显示/构建12组数据。我的目标是从同一工作簿中的其他工作表中提取数据,并将其粘贴到与该数据的相应“表”对应的特定范围内。以下是我从名为“Daily DB”的工作表中提取的数据代码,并粘贴到“存档”工作表中。
Sub GetDailyDataByWeek()
Dim cw As Integer ' current week
Dim lr As Long 'last row of data
Dim i As Long ' row counter
'Clear exsisting contents
Worksheets("Archive").Range("A5:E11").ClearContents
'Get week number and year of current date
cw = Format(Date, "ww")
With Worksheets("Daily DB")
' Find last row of data
lr = .Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
For i = 2 To lr
If Format(.Cells(i, 1).Value, "ww") = cw Then
.Range(.Cells(i, 1), .Cells(i, 5)).Copy
Worksheets("Archive").Range("a" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteFormulasAndNumberFormats
End If
Next i
End With
Application.CutCopyMode = False
End Sub
此代码执行我想要的操作。我需要帮助解决的问题是:
Worksheets("Archive").Range("a" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteFormulasAndNumberFormats
当这一行查找最后一行数据时,在我的情况下,这将是第12个表的标题行。但是,我希望这个特定的数据进入第一个表,在标题行开始于“A5”之后,但我不知道如何去做。非常感谢任何和所有的帮助。
答案 0 :(得分:0)
如果你想将来自另一个单元格或范围的数据复制到同一个工作簿中,我会使用" Value" Range对象的方法,如下所示:
Worksheets("Archive").Range("A" & i).Value = Worksheets("XXX").Range("Z" & j).Value
通过这样做,您将避免执行所有复制和粘贴操作。
如果你不想为每个值指定一个范围,你可以激活第一行的第一个单元格然后"偏移"你的方式,像这样:
Worksheets("Archive").Range("A" & i).Activate
ActiveCell.Value = blah blah blah
ActiveCell.Offset(1, 0).Activate 'If you want to move to the next row (same column)
ActiveCell.Offset(0, 1).Activate 'If you want to move to the next column (Same row)