Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: 清华

[已解决][求助] 求助:修改完善代码

  [复制链接]
发表于 2012-3-11 10:22 | 显示全部楼层
原来是要达到这样的效果:
A.gif
回复

使用道具 举报

 楼主| 发表于 2012-3-11 10:27 | 显示全部楼层
TTTTT 发表于 2012-3-11 10:22
原来是要达到这样的效果:

完全正确,就是我要的效果
回复

使用道具 举报

发表于 2012-3-11 10:39 | 显示全部楼层    本楼为最佳答案   
如果是那样的效果,你原来的程序只要把
if Target = Cells(Rows.Count, "B").End(xlUp) Then
改为
If Target.Column = 2 Then
就能达到效果
回复

使用道具 举报

发表于 2012-3-11 10:44 | 显示全部楼层
你原来附件按13楼修改了一句

求助:修改完善代码.zip

14.53 KB, 下载次数: 8

回复

使用道具 举报

发表于 2012-3-11 11:08 | 显示全部楼层
本帖最后由 TTTTT 于 2012-3-11 11:10 编辑

你原来程序发生错误的原因简单分析如下:
因为你在B列已经输入了5,
Cells(Rows.Count, "B").End(xlUp)的缺省属性是B列数据最后行单元格的value——5
现在A6的target输入5以后,Target的缺省属性value——5
If Target = Cells(Rows.Count, "B").End(xlUp) Then——满足条件就执行程序
A6输入5,target的range属性就是A6,回车后Cells(Rows.Count, "A").End(xlUp)实际就是指A6,再加一个 .Offset(0, 1),指B6,
Destination:=Range(Target, Cells(Rows.Count, "A").End(xlUp).Offset(0, 1))实际就是指A6:B6——全部自动填充5
如果你一开始B列输入的是其它数字,如8
当A列输入8后也会产生一样的问题

If Target = Cells(Rows.Count, "B").End(xlUp) Then
改为
If Target .column= 2 Then
后就与A列不相干,只看B列了
target在B列,Cells(Rows.Count, "A").End(xlUp).Offset(0, 1)也是指B列
Destination:=Range(Target, Cells(Rows.Count, "A").End(xlUp).Offset(0, 1))指B列target的range位置到A列最后数据行对应的B列单元格位置全部填充target缺省value了
回复

使用道具 举报

 楼主| 发表于 2012-3-11 11:02 | 显示全部楼层
TTTTT 发表于 2012-3-11 10:44
你原来附件按13楼修改了一句

万分感谢,这样就十分完美了。
回复

使用道具 举报

 楼主| 发表于 2012-3-11 11:59 | 显示全部楼层
TTTTT 发表于 2012-3-11 11:08
你原来程序发生错误的原因简单分析如下:
因为你在B列已经输入了5,
Cells(Rows.Count, "B").End(xlUp)的 ...

太厉害了十分精准
回复

使用道具 举报

发表于 2012-3-11 17:07 | 显示全部楼层
清华 发表于 2012-3-11 11:59
太厉害了十分精准

那就给他个最佳吧~~

隔行如隔山,现在我还是没明白意思~~

{:4812:}{:1112:}
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-16 21:45 , Processed in 0.870246 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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