2013-03-14 84 views
0

我是VBA的初學者。我有如下一個Excel追蹤:Excel宏用其他列的條件填充列

S.NO REGION ASSOCIATE DATE RECEIVED SLA TIME BUY DELIVERED DATE STATUS 
1 ME   7-Mar-13     ED 10-Mar-13    
2 ME   7-Mar-13     10-Mar-13  
3 AFRICA   7-Mar-13     9-Mar-13 
4 AFRICA   7-Mar-13     AE 12-Mar-13 
5 ASIA    8-Mar-13     11-Mar-13 
6 ASIA    9-Mar-13     QR 15-Mar-13 
7 AFRICA   10-Mar-13     14-Mar-13 
8 ASIA    10-Mar-13     16-Mar-13 
9 ME   10-Mar-13     14-Mar-13 
10 ASIA    10-Mar-13    DH 17-Mar-13 

我必須填充日期的基礎上接收區域列日期和時間的值SLZ列買column.The條件下面給出的。

條件

  1. 如果區域是ME,門票收到7日,這必須建立在3月9日交付,但是因爲ED被標記爲列FI得到多一天多來完成我的工作,現在如果我在10日發佈我的狀態消息,應該顯示WSLA。
  2. 如果7日收到機票,而且必須在9日發貨,F列中沒有數據,因此如果發貨日期是3月9日以後,我會收到msg O SLA。
  3. 如果該地區是非洲地區,則在7日收到機票,並且必須在9日發貨並且沒有在f欄標註的數據;因爲SLA和交付相匹配的評論必須是W SLA。 如果這個案件是在7日收到的,應該在9日但是由於專欄說AE多一天仍被視爲SLA;但仍然交付日是12月3日,這是兩天延遲我的專欄H必須說OSLA
  4. 這是一個亞洲I的情況;我有4天的時間來提供這個;然而我已經完成了一天b4我的分析H必須說W SLA

最後我的報告應該是這樣的。

S.NO REGION ASSOCIATE DATE RECEIVED SLA TIME BUY DELIVERED DATE STATUS 
1 ME  7-Mar-13 9-Mar-13    ED 10-Mar-13 W SLA 
2 ME  7-Mar-13 9-Mar-13     10-Mar-13   O SLA 
3 AFRICA  7-Mar-13 9-Mar-13     9-Mar-13   W SLA 
4 AFRICA  7-Mar-13 10-Mar-13    AE 12-Mar-13   O SLA 
5 ASIA  8-Mar-13 11-Mar-13    11-Mar-13   W SLA 
6 ASIA  9-Mar-13 14-Mar-13    QR 15-Mar-13  O SLA 
7 AFRICA  10-Mar-13 14-Mar-13    14-Mar-13   W SLA 
8 ASIA  10-Mar-13 16-Mar-13    16-Mar-13   W SLA 
9 ME  10-Mar-13 14-Mar-13    14-Mar-13   W SLA 
10 ASIA  10-Mar-13 17-Mar-13    DH 17-Mar-13 W SLA 

有人可以請幫我一個宏。如果我爲至少一個條件檢查獲得一個宏,我想我可以在其他條件下重新創建它。

+0

所以,你嘗試過什麼?任何代碼?任何錯誤消息? – 2013-03-14 13:21:15

+0

你不需要一個VBA宏來做到這一點,你可以把你的條件放在列中的公式中,例如** = IF(REGION =「ME,RESULT,NO_RESULT)** – 2013-03-14 13:53:31

+0

什麼是'SLZ'列,我可以只看到SLA – 2013-03-14 13:53:52

回答

0

所以你要沿着線的東西:

dim iCol as integer 
dim iRow as integer 
dim iRegionCol as integer, iTktReceivedDate as integer 
' 
' 
iRegionCol=2 ' column 2 = column B? 
iTktReceivedDate=4 ' column 4 = column D? 
' 
for iRow=2 to range("A1").end(xldown).row 
    select case cells(irow,iregioncol).text 
     case "ME" 
     ' do something like IF cells(irow, iTktReceivedDate) = today() then... 
     case "Africa" 
     ' do Africa something 
     case "Asia" 
     ' do something for Asia 
    end select 
next 

我希望幫助您開始

菲利普