我正在尝试编写一个Excel宏,它将查看A列中的日期并打印列F中列出的每个月。我正在尝试使用for循环和If / Else语句,但我似乎无法让它正常运作。
y = 2
Range("F2").Formula = "=MONTH(A3)"
For x = 4 To RowLast - 1
If Range("A" & x).Month = Range("F" & y) Then
Else
y = y + 1
Range("F" & y).Formula = "=MONTH(A" & x & ")"
End If
Next
这就是我到目前为止所做的,它应该将Cell A3中发现的第一个月打印到Cell F2(有效),然后每隔一个日期打印一次直到它击中最后一行。 if语句应该检查以确保它是一个新月,如果它打印月份到F列中的下一个单元格。
如果您有任何疑问,请与我们联系。谢谢。
答案 0 :(得分:0)
我认为你的if语句导致了问题。如果你只打印这个月,你甚至需要一个if语句吗?
答案 1 :(得分:0)
RowLast = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
y = 2
Range("F2").Formula = "=MONTH(A3)"
For x = 4 To RowLast - 1
Range("Z2").Formula = "=MONTH(A" & x & ")"
If Range("Z2").Value = Range("F" & y).Value Then
Else
y = y + 1
Range("F" & y).Formula = "=MONTH(A" & x & ")"
End If
Next
答案 2 :(得分:0)
要回答您的具体问题:ListView
是一个函数,它返回与date参数的月份相对应的整数。例如,VIEW.VISIBLE
将返回3。
Month(date)
不是。Month(Now)
对象的属性,因此您的代码会抛出错误("对象不支持此属性或方法")。下面的代码显示了如何以您希望的方式使用.Month
函数。
但是,您的代码提出了一个更广泛的问题。您是否仅仅使用VBA来自动化您的公式写作?如果你是,那么一切都很好。但实际上,VBA可能会更好地为您提供服务吗?例如,您是否有理由使用VBA识别目标月份,仅通过Excel公式将这些目标月份写入工作表?
我提到它是因为最近有很多帖子将其范围限制在如何自动化Excel功能(可能是录制宏的结果),而VBA可能比他们的想象力更强大。
无论如何,这是同一个任务的两个非常相似的版本:第一个写公式,第二个写月。我希望它会引起一些关于哪种自动化类型适合您需求的想法:
编写公式的代码:
Range
将月份写为整数的代码:
Month()