EXCEL2007 VBA编程 如何实现逐行多对对查找

sheet1每一列都有很多信息,比如:姓名,任务完成日期,完成工作内容等。现在需要编写个VBA程序,在sheet1中“对第一行单行”查找姓名、任务完成日期,并将符合查找条件的工作内容复制到sheet2相应单元格,然后对“下一行查找同样的信息,并将符合条件的工作内容复制到上述单元格的右边”,以此类推。如果没有,则将单元格空着。也就是“多对多”的查找。没法用VLOOKUP是因为符合查找条件的返回数据不止一个,且数据范围太大,并且这只是其中一个小循环,所以只能用VBA,求大佬指教。图中左边为sheet1原表,sheet2输出结果在右边(为了方便观察放在了一张图里,实际上是两个工作表)
excel2007

这个不需要VBA呀,用公式就可以搞定的

如下:

sheet1表结构如下:

sheet2表结构如下:

B2里输入的公式为

=IF(ISERROR(MATCH(A2 & B1,Sheet1!A2:A9 & Sheet1!B2:B9,0)),"",INDEX(Sheet1!C2:C9,MATCH(A2 & B1,Sheet1!A2:A9 & Sheet1!B2:B9,0)))

【注】在B2里复制粘贴以上公式后要同时按下CTRL+SHEFT+ENTER组合键

当你改变A2和B1的值时,B2里就会跳出相应的完成内容

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-11-15
Sub 多条件查找输出()

Dim s1, s2, t1, i, t2

s1 = Sheet1.Range("a" & Cells.Rows.Count).End(3).Row

t1 = Sheet2.Range("a" & Cells.Rows.Count).End(3).Row

For t2 = 1 To t1 Step 2

    i = 3

    For s2 = 1 To s1

        If Sheet2.Cells(t2, 2) = Sheet1.Cells(s2, 2) And Sheet2.Cells(t2 + 1, 2) = Sheet1.Cells(s2, 1) Then

            Sheet2.Cells(t2 + 1, i) = Sheet1.Cells(s2, 3)

            i = i + 1

        End If

    Next s2

Next t2

msgbox "查找输入完毕!"

End Sub
我按以下这种条件格式进行设定的VBA编程

本回答被提问者采纳
相似回答