2016-01-24 75 views
0

我有下面的代码,我需要一些帮助修改。使用excel将单元格值格式化为“MMMM”

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”)之类的东西,然后继续使用公式,但我不知道如何修改关于代码以仅使用月份“G”的值。

在此先感谢您提供的任何帮助。

+0

所以,你想'如果一个月> =范围( “U1”)'...一个月是一个月吗? ,'cell(i,“G”)' – Davesexcel

+0

是的,这是正确的 - 我想计算在单元格中的月份(我,“G”) – rasmac

回答

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 

测试,工作正常。

来源:

enter image description here

目的地:

enter image description here

+0

感谢您的帮助,但我也得到了相同的运行时错误 - 类型与此代码不匹配 – rasmac

+0

我测试了代码,它适用于我,因此,要了解错误背后的问题,您应提供数据样品。 – Vasily

+0

感谢瓦西里代码的工作原因 - 我得到的不匹配是由于我在一列中使用的月份公式 – rasmac

2

这将是最好有[U1]的为好,然后格式化为一个月的日期

If Month(Sheets("OPA").Cells(i, "G")) >= Month(Range("U1"))

+0

我修改代码为Sub CopyDataBasedOnTimeRangeMonth() Dim i,LastRow Dim Cell As Range LastRow = Sheets(“OPA”)。Range(“A”&Rows.Count).End(xlUp).Row Sheet(“Sheet2”)。Range(“A3:U500”) .ClearContents 对于i = 2到LastRow 如果Month(表格(“OPA”)。Cells(i,“G”))> = Month(Range(“U1”))和Month(表格(“OPA”)。单元(i,“G”)) rasmac

+0

您可以编辑您的原始问题添加新代码,并将其置于评论中难以阅读 – Davesexcel

+0

感谢您的帮助Davesexcel - 导致不匹配的原因是由于我在一列中使用了一个月公式 – rasmac

相关问题