看看我的需求:日期区限               折旧率            
~1980.7               4.8%
1980.7~1987.1         5.3%
1987.1~1991.1         5.0%
1991.1~1993.7         6.25%
1993.7~2003.12        5.56%要求:成批输入(从EXCEL输入)资产金额和日期,能按上述日期和对应折旧率成批输出对应折旧值,并在EXCEK表格中列表显示。
在EXCEL里面直接实现,用VBA或者宏求源代码发送到[email protected]

解决方案 »

  1.   

    将折旧表中的时间间隔分成两个字段:(DATE1),(DATE2)与折旧率保存在一数据表中.
    然后...取某机器买入时间(INDATE)和停用时间(STOPDATE),金额(AMO),例如:1984/7---1998/3,30405元.1.取在折旧表中的时间间隔(有两个,分前区间和后区间).
    A.第一个日期:D1
    STRSQL="SELECT MAX(DATE1) FROM (SELECT * FROM [折旧表] WHERE DATE1<'1984/7' ORDER BY DATE1 DESC)"
    B.第二个日期:D2
    STRSQL="SELECT MIN(DATE1) FROM (SELECT * FROM [折旧表] WHERE DATE2>'1998/3' ORDER BY DATE1 DESC)"然后.
    这样,就可以取取在节旧表中的时间区间.
    然后,再用时间区间分步按折旧方式来计算折旧率.我也是大体说说,可能表述不是很清楚,大概就是这样.
      

  2.   

    最近正在翻译本厚厚的vba5开发人员指南
    记下来练练手
    不是很急吧?最近很忙的哦
      

  3.   

    是不是有update 表 set 折旧率=折旧率*4.8% where 日期 between #1980.7# and #1987.1#有这样吗?VBA我几乎没玩过..
      

  4.   

    用if函数也可以实现
    假如a列是日期,b列是金额
    c列可以这样写=if(and(a1>34151,a1<37956),b1*0.0556,if(and(a1>33239,a1<34151)b1*0.0625,
     if(and(a1>31959,a1<33239),b1*0.05,if(and(a1>29403,a1<31959),b1*0.053,b1*0.048))))
    说明一下:
      34151 是日期1993-7-1的数字表示 37956 是日期2003-12-1的数字表示
     其他的与其他日期对应。
      

  5.   

    如果你是固定的折旧率,excel直接就能搞定,就是不知道你能不能忍受每次折旧率的变化要重复一次同样的工作。
      

  6.   

    =if(and(a1>34151,a1<37956),b1*0.0556,if(and(a1>33239,a1<34151),b1*0.0625,
     if(and(a1>31959,a1<33239),b1*0.05,if(and(a1>29403,a1<31959),b1*0.053,b1*0.048))))
    掉了个,