根据月份(名称)excel vba获取数据

时间:2017-08-07 06:56:00

标签: excel vba date

我正在为报告创建模板。我想做一些自动化。

我有一个源代码表,我称之为“KPISource”(数据源在sharepoint中,因此这是一个表)。在第一列中,我想获得具有当前月份和上个月的数据。

基本上,如果它是当前月份,它会将数据放在“八月”列中。如果日期是上个月,那么它也会将数据放在“七月”中。

Below is the screenshot of our template:

在我的资料单中,列是日期,解决的门票(生产力),YTD,票证重新开放率(质量),老化<5天(质量),YTD(老化&lt; 5天)老化&gt; 5天(质量),年初至今(老化> 5天),客户满意度,年初至今(客户满意度)

目前这是我的代码,但没有输出。这是我正在尝试的代码,如果第1列(KPISource)中有前一个日期,那么它将具有KPI.Cells(6,4)中的值.Value(门票解决了“7月”)。

Sub OperationalKPI()

Dim KPI As Worksheet
Set KPI = Sheets("OperationalKPI")
Dim KPISource As Worksheet
Set KPISource = Sheets("KPISource")


mPrevious = Format(DateAdd("m", -1, Date), "mmmm")
mCurrent = Format(Date, "mmmm")


lastrow = KPISource.Cells(Rows.Count, 1).End(xlUp).Row

For x = 2 To lastrow

If mPrevious = KPISource.Cells(x, 1) Then

   KPI.Cells(6, 4).Value = KPISource.Cells(x, 2).Value

End If

Next x


End Sub

1 个答案:

答案 0 :(得分:1)

根据您的反馈,问题在于

If mPrevious = KPISource.Cells(x, 1) Then

mPrevious是一个包含月份名称的字符串,例如“July”,但KPISource.Cells(x,1)包含一个日期,因此两者永远不会相等。

将行更改为:

If mPrevious = Format(KPISource.Cells(x, 1),"mmmm") Then

这将使两个项目字符串中包含月份名称,而If应该找到匹配项。