2014-09-01 81 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)