2014-09-01 85 views
0

vba初学者在这里。查找或找到多个值和多个返回值

我有2个工作表,在工作表1(sht1),我有索引号的2列(A列&列U) 什么,我需要做的是比较索引号的列表中sht1列u反对在工作表2中的列B(sht2)并从那里检索相同数据行中的同一行sht2列I & M并将这两个值连接在一起输入到sht1列V

然而,如果sht1中的值。 U列无法找到,我想使用来自同一行的sht1.Column A的索引号进行类似的搜索。

我非常难过,至于如何去做。再次,我试图做到上面没有应用activecell.select但是卡住,因为工作表1和工作表2中的行数不同,因此我不能使用for...next

+0

截图任何机会?一幅画描绘了千言万语! – Captain 2014-09-01 09:35:03

+0

这是否必须是VBA?这可以在单元格中的公式中完成......查找在工作表函数中很好......如果它必须是VBA,则可以在VBA中使用工作表函数(例如'MATCH')(例如'Application .WorksheetFunction.Match') - 比尝试编写自己的查找要快 – Captain 2014-09-01 10:50:49

回答

0

作为一个公式:

=INDEX('Sht2'!I:I,IFERROR(MATCH(U2,'Sht2'!B:B,0),MATCH(A2,'Sht2'!B:B,0))) & INDEX('Sht2'!M:M,IFERROR(MATCH(U2,'Sht2'!B:B,0),MATCH(A2,'Sht2'!B:B,0))) 

作为一个功能,

  • 循环遍历sht1你行
  • 呼叫Application.WorksheetFunction.Match代替MATCHU索引值
  • 如果是错误,请重复A索引值
    • 为了赶上了错误的检查,使用类似: foundRowNum=0
      On Error Resume Next
      foundRowNum=Application.WorksheetFunction.Match("lookdccfup",ActiveWorkbook.Sheets("Sht2").Range("B:B"),0)
      On Error Goto 0 If foundRowNum = 0 Then ...
  • 使用生成的行索引引用sht2.Cells(xxx,9) & sht2.Cells(xxx,11)