我有以下代码,我需要修改一些帮助。
Sub CopyDataBasedOnTimeRangeMonth()
Dim i, LastRow
Dim Cell As Range
LastRow = Sheets("OPA").Range("A" & Rows.Count).End(xlUp).Row
Sheets("Sheet2").Range("A3:U500").ClearContents
For i = 2 To LastRow
If Sheets("OPA").Cells(i, "G").Value >= Range("U1") And Sheets("OPA").Cells(i, "G").Value < Range("AC1") Then
Sheets("OPA").Cells(i, "R").EntireRow.Copy Destination:=Sheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Offset(1)
End If
Next i
End Sub
对于“G”的计算,我想使用所计算值的“MMMM”格式。在excel公式中,我可以使用Text(“G12”,“MMMM”)之类的东西然后继续使用公式,但我不知道如何修改about代码只是为了使用仅月值“G”。
提前感谢您提供的任何帮助。
答案 0 :(得分:2)
最好将[U1]作为日期,然后格式化为月
If Month(Sheets("OPA").Cells(i, "G")) >= Month(Range("U1"))
答案 1 :(得分:1)
您可以在下面看到代码的变体,它已使用Davesexcel
(+1)提供的变体进行了更新,并且还有一些来自我方的更正,只是为了简化可读性:
1)绝对引用Range()
替换为[]
速记方法;
2)将Destination:=
删除为过多,同时将目标范围替换为行,因为当您复制行时,目标应为行;
3)应用with (object)
方法;
4)添加的变量类型,例如i
替换为i&
(意为i as long
)
Sub CopyDataBasedOnTimeRangeMonth()
Dim i&, LastRow&, Cl As Range
LastRow = Sheets("OPA").Range("A" & Rows.Count).End(xlUp).Row
Sheets("Sheet2").[A3:U500].ClearContents
With Sheets("OPA")
For i = 2 To LastRow
If Month(.Cells(i, "G")) >= Month(.[U1]) And _
Month(.Cells(i, "G")) < Month(.[AC1]) Then
.Rows(i).Copy Sheets("Sheet2").Rows(Sheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Row + 1)
End If
Next i
End With
End Sub
测试,工作正常。
源:
目的地: