2013-03-14 65 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 

我希望帮助您开始

菲利普