【发布时间】:2015-07-23 09:20:36
【问题描述】:
我需要编写一个宏将主机名和日期复制到另一个工作簿,需要复制的日期在 B 列和 AJ 中分别作为主机名和日期:
它应该复制的方式是,如果日期是 2015 年 1 月,那么我需要将主机名和日期复制到另一个工作簿上 5 次(意味着有 5 行相同的数据),自 6 月 (6)减去 Jan(1) 是 5。如果日期是 2014 年 12 月,那么我需要复制 6 行主机名和日期,因为从 12 月到 6 月有 6 个月。
现在我用 VBA 做的事情放在下面,这是非常无效的,我无法让宏按预期放置每个日期的行,而且我意识到我必须每年都做 if 语句,所以我想知道如何让它更有效,让宏运行得更快。
With wSheet1
'// Here lets Find the last row of data
wSlastRow = .Rows(.Range("B:B").Rows.Count).End(xlUp).Row
'// Now Loop through each row
For X = 2 To wSlastRow
'insert wSlastRow no of rows to worksheet Summary
'wSheet1.Rows(wSlastRow).Insert Shift:=xlDown
If Not IsError(.Range("AJ" & X).Value) Then
If IsDate(.Range("AJ" & X)) Then
If Year(.Range("AJ" & X)) = 2015 Then
Do While Month(.Range("AJ" & X).Value) > 7
.Range("B" & X).Copy Destination:=wSheet2.Range("B" & X)
.Range("AJ" & X).Copy Destination:=wSheet2.Range("J" & X)
Loop
End If
End If
End If
Next X
End With
【问题讨论】: