试一下这一个
不过我有个疑问:工作表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的上面
在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的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))
在工作表2的B2单元格输入=LOOKUP(A2,Sheet1!A$2:A$4,Sheet1!B$2:B$4),其它类似。