2017-08-07 51 views
0

我目前正在爲我們的報告創建一個模板。我想做一些自動化。獲取基於月的數據(姓名)excel vba

我有一個源表,我稱之爲「KPISource」(數據源是在共享點,因此這是一個表)。在第一列中,我想獲取當前月份和上個月的數據。

基本上,如果是當前月份,則會將數據放入「August」列。如果日期是上個月,那麼它也會將數據放入「7月」。

Below is the screenshot of our template:

在我的源代碼表,列日,門票解決(生產力),年初至今,票務重新打開率(質量),老化< 5天(質量),年初至今(老化< 5天)老化> 5天(質量),YTD(老化> 5天),客戶滿意度,YTD(客戶滿意度)

目前這裏是我的代碼,但沒有輸出顯示。這是我想要的代碼,如果第1列(KPISource)中存在前一個日期,那麼它將在KPI.Cells(6,4).Value(Tickets Solved「July」)中具有值。

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 
+0

您只是將信息放入一個單元格中,單元格引用(6,4),這是你想要的嗎? –

+0

是的,因爲我需要將Tickets Solved(第2列)數據放入(6,4),這是解決方案 - > 7月份。 – Sevpoint

+0

查看源電子表格中的日期列。它們是以文本形式保存爲月份名稱還是以單元格格式存儲的完整日期? –

回答

1

的問題,根據您的反饋意見,在該線路

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

mPrevious是包含在每月的名稱的字符串,如 「七月」,然而KPISource.Cells(X,1 )包含一個日期,所以兩者永遠不會相等。

行更改爲:

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

這將使這兩個項目的字符串與他們月份的名稱,如果應該找到匹配。

+0

我試過了,它完美地工作。謝謝!你走吧! – Sevpoint

+0

嗨,羅布,我只想問另一個問題。我試圖在07/01/2018的日期欄中添加一個日期。在這種情況下,他們是同一個月。因此它得到最後一行07/01/2018的值。我想得到的是當年的當前月份,因此該工具可用於明年。您能否提出建議可能的解決方案?謝謝。 – Sevpoint

+0

我想我只需在mPrevious = Format(DateAdd(「m」,-1,Date),「mmmm yyyy」)中添加「yyyy」 mCurrent =格式(日期,「mmmm yyyy」)和If mPrevious = Format (KPISource.Cells(x,1),「mmmm yyyy」) – Sevpoint