excel中,用VBA,如何根据条件,将已经存在的另一个工作表数据自动调出

例如,我有一个工作表1,字段为:编号,名称,面积三个,下面有事先录好有数据。然后,我还有另一个工作表2,字段为:编号,名称,面积三个,不过下面数据为空,我想作的是:当我在工作表2中的A2单元格(固定的)中,输入工作表1中已经存在的编号字段下面的数据时,如编号为1(当然编号有重复,不只有一个,有很多编号等于1),那么我希望所有编号等于1的行,对应的名称,面积数据在另外两列自动列出(保证名称与面积一一对应),请大侠帮忙,很有挑战哦!
taohongjie的回答,有些问题,一是第二列、第三列的数据当一个编号输入后,再输另一个编号,后边两列数据应该先清空再更新,否则有时会加在一起;二是我输入完a2数据后,点其它单元格,表格会不动,或是很慢

试一下这一个
不过我有个疑问:工作表2的A2中的字段是名称,为什么要在里面输入编号来查找
sheet2中的结果数据从和第三行开始输出。
一定要将以下代码复制到sheet2的代码窗口才行,不明白的地方可以继续问我。
Private Sub Worksheet_Change(ByVal Target As Range)
j = 3
For i = 2 To 100 '假设表一的数据有100行
If Sheet1.Cells(i, 1) = Sheet2.Cells(2, 2) Then
Sheet2.Cells(j, 2) = Sheet1.Cells(i, 2)
Sheet2.Cells(j, 3) = Sheet1.Cells(i, 3)
j = j + 1
End If
Next i
End Sub
补充:
更新会很慢不知道是什么原因,计算速度应该是是很快的,除非你的表格超大。在我这儿是没有问题;按说不会出现两次的结果相加的情况。可用以下语句先清空表格:
i=3
do until sheet2.cells(i,1)=""
for k=1 to 3
sheet2.cells(i,k)=""
next k
i=i+1
loop
将代码放在j=3的上面
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-10-29
在B列输入以下公式:
=IF([Book1.xlsx]Sheet1!$A:$A=$A2,[Book1.xlsx]Sheet1!$B:$B,"")
C列输入以下公式:
=IF([Book1.xlsx]Sheet1!$A:$A=$A2,[Book1.xlsx]Sheet1!$C:$C,"")

下拉填充,必须保持公式不变,"=$A2"一定要保持不变!

然后在A2中输入编号,B列和C列中,将会出现book1工作表同编号的名称和面积!
缺点是,编号相同的行,才会显示名称和面积!否则都是空项!
第2个回答  2008-10-29
把公式分别复制到工作表2的B2和C2单元格回车再下拉复制你要的位置.然后把表1A列的编号复制在表2的A列就行了.注:两表在同一工作薄,工表未命名,如果命名用表名替换SHEET.
=if(iserror(vlookup(A2,SHEET1!a:D,2,false)),"",vlookup(A2,SHEET1!a:D,2,false))
=if(iserror(vlookup(A2,SHEET1!a:D,3,false)),"",vlookup(A2,SHEET1!a:D,3,false))
第3个回答  2008-10-29
在工作表2的B2单元格输入=LOOKUP(A2,Sheet1!A$2:A$4,Sheet1!B$2:B$4),其它类似。
相似回答