Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: zhengyixin

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

[复制链接]
发表于 2017-8-4 11:27 | 显示全部楼层
e3到az2 3?是指e3到az2还是az3还是az23?如果是e3到az3的话
[e3:az3].clearcontents,注意直接clear会连格式一起清除。
还有,红线不在清除对象内吧,清除红线要用其他方式实现。
回复

使用道具 举报

 楼主| 发表于 2017-8-4 11:31 | 显示全部楼层
大灰狼1976 发表于 2017-8-4 11:27
e3到az2 3?是指e3到az2还是az3还是az23?如果是e3到az3的话
[e3:az3].clearcontents,注意直接clear会连 ...

444.png 是az2列,又得怎么写
回复

使用道具 举报

 楼主| 发表于 2017-8-4 11:32 | 显示全部楼层
大灰狼1976 发表于 2017-8-4 11:27
e3到az2 3?是指e3到az2还是az3还是az23?如果是e3到az3的话
[e3:az3].clearcontents,注意直接clear会连 ...

红线不清除,只要清除单元格数据
回复

使用道具 举报

 楼主| 发表于 2017-8-4 11:35 | 显示全部楼层
大灰狼1976 发表于 2017-8-4 11:27
e3到az2 3?是指e3到az2还是az3还是az23?如果是e3到az3的话
[e3:az3].clearcontents,注意直接clear会连 ...

没事了,我弄错了,看错列名了
回复

使用道具 举报

发表于 2017-8-4 11:36 | 显示全部楼层
本帖最后由 大灰狼1976 于 2017-8-4 11:37 编辑

没有AZ2这个列的,应该是AZ列。你随便选择哪列,后面都会跟一个数字。
回复

使用道具 举报

 楼主| 发表于 2017-8-4 11:38 | 显示全部楼层
大灰狼1976 发表于 2017-8-4 11:27
e3到az2 3?是指e3到az2还是az3还是az23?如果是e3到az3的话
[e3:az3].clearcontents,注意直接clear会连 ...

rowR = CStr(Target.Row)
rowA = "e" & rowR
rowB = "az" & rowR
[rowA:rowB].ClearContents '删除指定行数据

我这么写为什么会出错

回复

使用道具 举报

发表于 2017-8-4 11:41 | 显示全部楼层
首先[]符号内不能用变量,其次,即使可以用变量,中间的“:”要用连接符,它是字符常量。
解决方法range(rowA & ":" & rowB).clearcontents,注意rowA和rowB应该为字符型变量或变体型变量,其他会出错。
回复

使用道具 举报

 楼主| 发表于 2017-8-4 11:59 | 显示全部楼层
大灰狼1976 发表于 2017-8-4 11:41
首先[]符号内不能用变量,其次,即使可以用变量,中间的“:”要用连接符,它是字符常量。
解决方法range(r ...

你帮我看看,我的数据计算出错了,我找不出问题在哪里,主要测试第三行。
我测试后第三行2014.1.1到2014.4.30的数据是正确的,但我更改日期后数据就出错了
数据计算公式是总工程量除以工期再乘以某个月的天数

test.zip

27.66 KB, 下载次数: 17

回复

使用道具 举报

发表于 2017-8-4 12:40 | 显示全部楼层
工期计算要加1天,比如1号到2号,2-1=1,实际上是两天。
回复

使用道具 举报

 楼主| 发表于 2017-8-4 14:36 | 显示全部楼层
大灰狼1976 发表于 2017-8-4 12:40
工期计算要加1天,比如1号到2号,2-1=1,实际上是两天。

If i = columnS Then
            Cells(Target.Row, i).Value = (Day(DateSerial(yearA, monthA + 1, 0)) - Day(Cells(Target.Row, 3)) + 1) * Cells(Target.Row, 2).Value/Cells(Target.Row, 1).Value'开始时间月份工程量
        ElseIf i = columnE Then
            Cells(Target.Row, i).Value = (Day(Cells(Target.Row, 4))) * Cells(Target.Row, 2).Value / Cells(Target.Row, 1).Value
        Else'结束时间月份工程量
            Cells(Target.Row, i).Value = (Day(DateSerial(yearF, monthF + 1, 0))) * Cells(Target.Row, 2).Value / Cells(Target.Row, 1).Value
        End If'中间工程量

我这个计算是对的吧,不知道哪里出错,你帮我看看

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 07:32 , Processed in 0.386260 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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