我需要一个数组公式或VBA代码,它可以像查找一样工作,但会返回所有可能的值,而不仅仅是第一个值。VLOOKUP返回所有可能的值(不唯一)
如果查找值对应5个唯一值,我需要代码显示所有5个值。
我们可以假设查找值在A列下行,查找范围是列F:G(列G中有5个唯一值)。
我需要一个数组公式或VBA代码,它可以像查找一样工作,但会返回所有可能的值,而不仅仅是第一个值。VLOOKUP返回所有可能的值(不唯一)
如果查找值对应5个唯一值,我需要代码显示所有5个值。
我们可以假设查找值在A列下行,查找范围是列F:G(列G中有5个唯一值)。
给这个用户定义函数一试...
Function CustomVLookup(ByVal Lookup_Val As Range, Table_Array As Range, ColIndex As Integer) As String
Dim x, dict
Dim i As Long
x = Table_Array.Value
Set dict = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(x, 1)
If x(i, 1) = Lookup_Val.Value Then
dict.Item(x(i, ColIndex)) = ""
End If
Next i
If dict.Count > 0 Then
CustomVLookup = Join(dict.keys, ", ")
Else
CustomVLookup = ""
End If
End Function
,然后用它的表像下面的...
=CustomVLookup(A2,F2:G25,2)
其中A2是包含查找值的单元格,F2:G25是表格阵列,2是列索引,它是2,即在这种情况下的列G。
编辑:上述函数将返回属于查找值的所有唯一值。如果你想返回所有不唯一的值,你需要一个不同的方法。让我知道如果是这样的话。
您如何期待这些值被返回? - 在1个单元格内连接,还是作为数组?你到目前为止尝试过哪些代码? – Greedo
作为数组返回。 我已严格尝试索引/匹配的数组公式。 – urdearboy
我已经完成了公式和VBA代码。使用公式,这将是非常困难的,它会带来局限性,您需要使用VBA解决方案。看看它,你会发现一些东西,不幸的是,我不能只是在这里为你写代码,因为这不是一个写我的代码论坛,而是一个问题解答一个 – Ibo