Excel宏之插入行,日期操作,时间操作,周末判断

为了能拉到项目,在贿赂项目负责人员方面也是蛮拼的,直接帮忙减轻工作负担,用VB写了个宏处理对方的excel

需求:将一段请假的日期以天为单位拆分成一条一条记录,并且忽略节假日。(即周六周日包含在请假日期区域的话则不需要记录改行条目,ps这里有个五一假日需要过滤掉,对方主要是五月份的假期统计)

for instance:



考虑了一下,觉得判断第4、6列数据是否相等就行了,不等的话就增加一行,当前行当做4列当天数据,新增行的第4列为4列日期+1,如果是节假日则继续+1,直到不是节假日为止。但是更多的有可能的问题没有校验,只当做输入实例都没有问题来处理。


具体细节不多描述了,直接上代码。

Sub aa()


Dim i, j
i = 1
Do While (Cells(i, 1) <> "")
 If Cells(i, 4) <> Cells(i, 6) Then '这里似乎用CDate(Cells(i,4))<CDate(Cells(i),6)更好
    '插入行
    Rows(i + 1).Insert
    For j = 1 To 8
        Cells(i + 1, j) = Cells(i, j)
    Next
    'i行结束日期
    Cells(i, 6) = Cells(i, 4)
    Cells(i, 7) = "17:30:00"
    'i+1行开始日期
    Cells(i + 1, 4) = DateAdd("d", 1, CDate(Cells(i + 1, 4)))
    Cells(i + 1, 5) = "08:00:00"
    '节假日
    Do While (Application.Weekday(CDate(Cells(i + 1, 4)), 2) = 6) Or (Application.Weekday(CDate


(Cells(i + 1, 4)), 2) = 7) Or CDate(Cells(i + 1, 4)) = CDate("2015-05-01")
        Cells(i + 1, 4) = DateAdd("d", 1, CDate(Cells(i + 1, 4)))
    Loop
 End If
 '时间判断,注意格式转换问题,用TimeValue
 If Cells(i, 5) = TimeValue("13:30:00") Or Cells(i, 7) = TimeValue("12:00:00") Then
    Cells(i, 8) = "0.5"
 Else
    Cells(i, 8) = "1"
 End If
 i = i + 1
Loop


End Sub

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值