打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
线表计划倒推日期,这个技能你可以会!


 前言

有了计划日期,利用条件格式就很轻松的就能作出带单元格填充的线表计划,如果要划线,也可以用VBA快速生成线条计划,前面有讲,大家可以翻一番前面的文章.

条件格式在计划表中的应用

线表计划进阶-精确定位直线位置

今天讲的是反向操作,如上图所示,计划员偷懒只在单元格填充了颜色,没有给出计划日期,并且这样的计划弄了几百条,我只想要我的计划日期,如何去做?

 解题思路

当然我们还是先用肉眼观察一下,看看有什么发现:

这个表中,一个单元格代表一周

计划日期所在单元格的填充颜色为黄色,其它为非黄色

有着两条就够了,这就是规律,有了规律就好办事

打开vba

调出立即窗口:视图-立即窗口

首先选择一个黄色的单元格,我们来看看这个颜色在VBA中的颜色代码是什么?

在立即窗口中输入

? SELECTION.INTERIOR.COLORINDEX 回车

返回值为6

意思是单元格填充的颜色代码为6

因此我们可以这样认为:

每一条任务所在的行第一次出现黄色,则这个单元格对应的同一列的第一行的日期即为开始日期

每一条任务所在的行最后一次出现黄色,则这个单元格对应的同一列的第一行的日期+6,即为结束日期

:

任务A的开始日期为11,结束日期为17(11+6)

任务B的开始日期为18,结束日期为128(122+6)

 实操

我们先插入两列,命名为开始和结束,以便存放我们的日期信息,如下图所示

新建模块,写入下列代码:

Sub writedate()

'行的循环范围

For i = 2 To 6

'列的循环范围

For j = 4 To Range("l1"). Column

'获取开始日期

'判断该单元格的左边单元格的颜色值不为6,并且该单元格的颜色值为6,则说明为第一次出现黄色的单元格

If Cells(i, j).Offset(0, -1).Interior.ColorIndex <> 6And Cells(i, j).Interior.ColorIndex = 6 Then

'将该单元对应列的第一行的单元格日期写入第二列

Cells(i, 2) = Cells(1, j)

End If

'获取结束日期

'判断该单元格的颜色值为6,并且该单元格右边单元格的颜色值不为6,则说明为最后一次出现黄色的单元格

If Cells(i, j).Interior.ColorIndex = 6 And Cells(i,j).Offset(0, 1).Interior.ColorIndex <> 6 Then

'将该单元格对应列的第一行的单元格日期+6写入第三列

Cells(i, 3) = Cells(1, j) + 6

End If

'循环结束

Next

'循环结束

Next

End Sub

运行该程序,如下图所示:

有同学说,不对啊,为什么是数字乱码,那你就是没有好好听课,快点去复习一下前面关于日期的内容吧,会的同学请略过.

关于日期和时间的概念

B\C列的数据格式改成日期格式,或自定义格式,我习惯上用自定义格式,”YYYY-MM-DD”,这样比较工整,看起来比较爽.

设置如下:

选择开始和结束两列,CTRL+1,设置单元格格式

最后,结果如下:

学会这个方法,纵使有千万行,也是瞬间完成,不信就试一下吧!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
excel如何使用VBA代码判断单元格是什么颜色
别怕,VBA入门级教程来了,条件语句很简单!
excel vba 高亮显示当前行代码
高亮颜色标记单元格、行、列、行列实例
Excel让选定单元格所在行和列颜色突出高亮显示
excel按筛选颜色的VBA代码
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服