2015-08-14 63 views
0

我想在excel vba中编写一个自定义函数,该函数在返回多个范围的单元格中查找单元格值匹配值并将它们合并到一个单元格中。 它返回一个错误值#VALUE在excel vba中自定义函数查找返回多个匹配值并将它们合并到一个单元格中的单元格值

我想让用户使用这个功能,因为写一个子来做的工作正常。

Function LookUpMoreThanOneResult(LookUpFor As Range, LookUpAt As Range, col As Integer) As Range 


Dim Findings As Range 


For Each LookUpFor In LookUpFor.Cells 

     For Each LookUpAt In LookUpAt.Cells 

      If LookUpFor.Value = LookUpAt.Value Then 

      Findings.Value = Findings.Value & vbCrLf & LookUpAt.Offset(0, col).Value 
      End If 


     Next LookUpAt 

    Next LookUpFor 

LookUpMoreThanOneResult = Findings 

End Function 

'below is the sub that works fine 

Sub look() 

Worksheets(1).Activate 

Dim ref As Range 

Dim arr As Range 
Dim va As Range 

Set ref = Range("j2:j7595") 
Set arr = Worksheets(2).Range("d2:d371") 

Dim r As Range 
Dim a As Range 


For Each r In ref.Cells 

     For Each a In arr.Cells 

      If r.Value = a.Value Then 
      r.Offset(0, 11).Value = r.Offset(0, 11).Value & vbCrLf & a.Offset(0, 6).Value 
      End If 


     Next a 

    Next r 

End Sub 
+0

我猜''ReturnedValueRange'不是一个单元格,而是一些你想要提取一个与匹配单元格(?)具有相同行的单元格的范围。 –

回答

0

这就是答案,在这里我不应该重复循环的LookUpFor细胞,和函数的返回值应该是字符串。 所以它现在好起来了,用户可以使用它。

Function LookUpMoreThanOneResult(LookUpFor As Range, LookUpAt As Range, col As Integer) As String 

Dim R As Range 

     For Each R In LookUpAt 

      If LookUpFor.Value = R.Value Then 

      LookUpMoreThanOneResult = LookUpMoreThanOneResult & vbCrLf & R.Offset(0, col).Value 
      End If 

     Next R 


End Function 
相关问题