Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 7416|回复: 39

通过vba根据日期实时更新数据

[复制链接]
发表于 2017-8-3 10:13 | 显示全部楼层 |阅读模式
QQ截图20170803091528.png 对应表格在附件的sheet2表。
我想要的效果是出现红线的单位格上面有9号字体并顶部居中生成实时数据,这个数据是由工程量除以工期再乘以这个月的工期得出的每个月的工期量,红线代表着开始日期到结束日期,所以只有红线上面的每个月对应有相应每个月的工期量。一旦我改变开始日期或结束日期,这个数据就会跟着变。求解答,谢谢

test.zip

13.72 KB, 下载次数: 25

发表于 2017-8-3 11:25 | 显示全部楼层
这个工程比较大。
我完成的画线单纯是以每月30天计算的,现在你要判断每个月的天数
回复

使用道具 举报

 楼主| 发表于 2017-8-3 11:37 | 显示全部楼层
大灰狼1976 发表于 2017-8-3 11:25
这个工程比较大。
我完成的画线单纯是以每月30天计算的,现在你要判断每个月的天数

我现在的问题是如何确定这个数据应该是如何对应到相应的单元格,也就是2014/1/15如何对应到2014单元格下的1月份那个单位格
回复

使用道具 举报

发表于 2017-8-3 13:30 | 显示全部楼层
用find找到第一行2014所对应的列,然后加上月份-1就是2014单元格下的1月份所在的列。
比如2014所对应的列为第10列,那么加上月份1就是第11列,再减去1,还是第10列,判断第10列就是2014年1月份所对应的列,行的判断根据你改动单元格的行。
回复

使用道具 举报

 楼主| 发表于 2017-8-3 15:33 | 显示全部楼层
大灰狼1976 发表于 2017-8-3 13:30
用find找到第一行2014所对应的列,然后加上月份-1就是2014单元格下的1月份所在的列。
比如2014所对应的列 ...

大哥你有空吗,可以做一个给我参考嘛?
回复

使用道具 举报

 楼主| 发表于 2017-8-3 16:48 | 显示全部楼层
大灰狼1976 发表于 2017-8-3 13:30
用find找到第一行2014所对应的列,然后加上月份-1就是2014单元格下的1月份所在的列。
比如2014所对应的列 ...

这个确实有点复杂,以我目前是做不出来,想了几种思路但感觉都不严谨。要不写成一个函数?
回复

使用道具 举报

发表于 2017-8-3 16:51 | 显示全部楼层
你参考我画线的代码就明白了,画线位置我也是通过同样的方法进行计算来得到单元格地址的。
回复

使用道具 举报

 楼主| 发表于 2017-8-3 17:00 | 显示全部楼层
大灰狼1976 发表于 2017-8-3 16:51
你参考我画线的代码就明白了,画线位置我也是通过同样的方法进行计算来得到单元格地址的。

我知道,我能算出来,但是不够灵活也很麻烦。
我根据你的代码知道开始时间和结束时间相对应的单元格地址,可是中间的月份怎么办?而且如果跨年了应该怎么办?还有就是每个月份天数不一样?或者你给我提供一个思路框架,怎么作条件怎么做循环?
回复

使用道具 举报

发表于 2017-8-3 17:15 | 显示全部楼层
先取得开始月份的列号,再用同样的方法取得结束月份的列号,再从开始月份列循环至结束月份列,写入每个月的数据。
至于每个月的天数,要用日期格式数据来判断了。比如Day(DateSerial(2017, 7, 0))表示2017年6月份的天数。
回复

使用道具 举报

 楼主| 发表于 2017-8-4 09:09 | 显示全部楼层
大灰狼1976 发表于 2017-8-3 17:15
先取得开始月份的列号,再用同样的方法取得结束月份的列号,再从开始月份列循环至结束月份列,写入每个月的 ...

我想问一下,有一个数值数组是5到16,我有一个变量a=7,我想判断a是否在数组中有对应的值,请问vba语句怎么写
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-23 21:42 , Processed in 0.262567 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表