【发布时间】:2015-03-19 22:04:23
【问题描述】:
我是 VBA 新手,所以我不确定我的代码有什么问题,或者这是否是做我想做的最好的方法。我有一个巨大的原始数据表,标题为“数据”,其中有很多列,其中之一是日期。首先,我希望宏创建四个标题为春季、夏季、秋季和冬季的新工作表,并将它们放在工作表计数的末尾。然后我想通过“数据”中的日期列搜索一个月,并将相应的行复制到与该月对应的季节工作表中。这就是我目前所拥有的——我的 if then 语句出现错误。我将日期列定义为一个数组,但我不确定是否需要定义它。但是,当使用此宏时,“数据”中的行数将不是恒定的。谢谢。
Sub Copy_Sorted_Data()
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Spring"
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Summer"
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Fall"
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Winter"
Dim Data As Worksheet
Dim Spring As Worksheet
Dim Summer As Worksheet
Dim Fall As Worksheet
Dim Winter As Worksheet
Dim Entered() As Date
Dim size As Integer
Dim i As Integer
size = WorksheetFunction.CountA(Worksheets("Data").Columns(1))
ReDim numbers(size)
For i = 1 To size
numbers(i) = Cells(i, 9).Value
Next i
If Entered = March Or April Or May Then ActiveSheet.Row.Value.Copy Destination:=Worksheets("Spring")
If Entered = June Or July Or August Then ActiveSheet.Row.Value.Copy Destination:=Worksheets("Summer")
If Entered = September Or October Or November Then ActiveSheet.Row.Value.Copy Destination:=Worksheets("Fall")
If Entered = December Or January Or February Then ActiveSheet.Row.Value.Copy Destination:=Worksheets("Winter")
End If
End If
End If
End If
End Sub
【问题讨论】:
-
如果您在
then中的if语句之后设置命令,他们不需要End If,所以我认为您应该编辑您的代码。 -
好的,我会改变的。但是我收到类型不匹配错误,所以我认为这可能与我的“输入”变量被定义为日期有关。
-
您如何从
Data表中读取entered?你刚刚读到numbers -
好的.. 所以我将 if 语句更改为“if numbers =”,但我仍然收到类型不匹配错误。
-
查看我的答案了解更多详情