Excel精英培训网

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

[已解决]如何改为绝对引用sheet1中A列到sheet2中A列

[复制链接]
发表于 2017-7-6 08:44 | 显示全部楼层 |阅读模式
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then Sheets("sheet2").Range("a1") = Target
End Sub

求大神,如何改为绝对引用sheet1中A列到sheet2中A列,,在sheet1中A列删除行、插入行、修改内容,在sheet2中A列中都发生变化?
最佳答案
2017-7-6 10:55
删除行和插入行是不会触发工作表事件的,修改内容可以。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column = 1 Then Sheets("sheet2").Cells(Target.Row, 1) = Target
End Sub
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-7-6 09:33 | 显示全部楼层
为什么不在sheet2的A1写个公式=sheet1!a1
回复

使用道具 举报

 楼主| 发表于 2017-7-6 10:30 | 显示全部楼层
爱疯 发表于 2017-7-6 09:33
为什么不在sheet2的A1写个公式=sheet1!a1

是可以的,但是sheet1中删除行、或插入行后,必须在sheet2中重新下拉才行。
回复

使用道具 举报

发表于 2017-7-6 10:31 | 显示全部楼层
不明白,必须在sheet2中重新下拉才行,是什么情况
回复

使用道具 举报

 楼主| 发表于 2017-7-6 10:40 | 显示全部楼层
本帖最后由 SSRI 于 2017-7-6 10:45 编辑
爱疯 发表于 2017-7-6 10:31
不明白,必须在sheet2中重新下拉才行,是什么情况

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then Sheets("sheet2").Range("a1") = Target
End Sub


我想弄明白以上VBA代码中$A$1的绝对引用,是sheet1中的A1单元格,被引用到sheet2中的A1单元格,,但我的数据很多,想sheet1中的A列,引用到sheet2中的A列中去,在sheet1中的A列中删除、插入,sheet2中的A列都自动发生变化。怎么实现???


如果在sheet2中A1输入=Sheet1!A1并下拉,会显示引用的=Sheet1中A列所有内容数据,但是插入或删除时,SHEET2中不会改变
回复

使用道具 举报

发表于 2017-7-6 10:55 | 显示全部楼层    本楼为最佳答案   
删除行和插入行是不会触发工作表事件的,修改内容可以。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column = 1 Then Sheets("sheet2").Cells(Target.Row, 1) = Target
End Sub
回复

使用道具 举报

发表于 2017-7-6 10:56 | 显示全部楼层
或者
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then Sheets("sheet2").Columns(1) = Sheets("sheet1").Columns(1)
End Sub
回复

使用道具 举报

 楼主| 发表于 2017-7-6 11:06 | 显示全部楼层
大灰狼1976 发表于 2017-7-6 10:56
或者
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then Sheets("sheet2" ...

这个不行,引用为空值,什么都不显示
回复

使用道具 举报

发表于 2017-7-6 11:19 | 显示全部楼层
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then Sheets("sheet2").Columns(1) = Sheets("sheet1").Columns(1).value
End Sub
回复

使用道具 举报

 楼主| 发表于 2017-7-6 14:05 | 显示全部楼层
大灰狼1976 发表于 2017-7-6 11:19
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then Sheets("sheet2").Colu ...

谢谢,实现了,删除、插入都可以,再次感谢
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 10:28 , Processed in 0.197127 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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