excel VBA解决,高手请进!

我问一个问题,就是sheet1,用VLOOKUP查找引用了SHEET2中的数据。如果SHEET2中有的话,当然不成问题。如果没有(或者不全)的话,能不能自动添加上(完全没有,信息全加到SHEET2最后一行;如果有但信息不全的话,能不能自动补全或做修改,当然所有操作都在SHEET1录入时自动完成)?我是从SHEET2引用数据的。
谢谢四楼这位高手的耐心、细致的讲解!我再补充一下,首先,SHEET1是流水帐式的记录,有很多品种(品名)有重复,我为了在最近的日期录入数据时从SHEET2中读取最新数据例如(单价),这样我以前用复制粘贴(或=)方式给SHEET2做了如同“数据库”资料,现在数据库的数量越来越大(以前的重复记录都在里面,现在我删除了重复项),现不想再用粘贴复制的方式再添加最新数据到SHEET2里边,想用VBA,在今后SHEET1中记流水帐时(同步对数据库进行更新,数据库没有此名称的行自动加在最后、有此品名的在SHEET1录入时(我现用VLOOKUP进行引用,并对单价进行修改或不修改),若修改想对SHEET2中的此名称后面的“单价”自动进行修改)。先看能否实现自动添加、修改。查找引用后面再用VBA解决。

第1个回答  2010-08-30
这个就是不同工作表的关联数据同步问题
假设VLOOKUP中查找条件为A列
在SHEET1中加入代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Anycell As Range, Onecell As Range
With Worksheets("Sheet2")
For Each Anycell In Target
Set Onecell = .Columns("a").Find(Cells(Anycell.Row, "a"))
If Onecell Is Nothing Then
.Cells(.Range("a65536").End(xlUp) + 1, Anycell.Column) = Anycell.Value
Else
.Cells(Onecell.Row, Anycell.Column) = Anycell.Value
End If
Next
End With
End Sub

代码说明:
1、用工作表的CHANGE事件来保证SHEET1所有的数据变更在SHEET2得到同步
2、用FOR EACH 遍历变更区域,保证在一次复制、删除几个单元格数据都得到数据更新
3、IF词句用来判断是否为新录入的信息
4、还有点比较关键,因提问没有具体说明,没有在代码里写进来,就是在SHEET1中用VLOOKUP查找时要在该工作表中删除原来的数据,那么SHEET2中的数据在此代码下也会删除,必须在SHEET1的代码过程中加入判断一个单元格数值的语句,当条件成立时才执行代码,不需同步时改变[A20]的值,如:
IF [A20]="进行数据同步" THEN
...代码...
END IF
第2个回答  2010-08-30
这个问题可以用多种方法解决.要不HI我在线交谈,我来帮你.本回答被提问者采纳
第3个回答  2010-08-30
如果没有引用公式会出错.办法是:
表1 b1=if(iserror(vlookup(a1,sheet2!A:B,2,false)),"",vlookup(a1,sheet2!A:B,2,false))
第4个回答  2010-08-30
我也有此困惑啊

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网