想要在Excel中从索引数组中获取多个值到单个单元格中
我正在试图find一种方法来从一个数组中获取多个值来显示在一个单元格中
举例来说,我有两列如下
一个1
b 2
c 1
d 3
e 2
我希望所有的值形成第一列第二列是1
vlookup和索引与匹配都只提供了第一个匹配的实例,有没有办法做到这一点的function,或者它必须创build一个macros与VBA?
谢谢
如果你想在一个单元格中显示所有的结果,你可以使用这个VBA公式:
'r is the range of cells that you have a value to look for 'v is the value you are looking for Function getValues(r As Range, v As Variant) Dim c As Range getValues = "" For Each c In r If c.Value = v Then If getValues = "" Then 'Offset(0,-1) will give you value from previous coulmn getValues = c.Offset(0, -1).Value Else getValues = getValues & "," & c.Offset(0, -1).Value End If End If Next c End Function
使用示例:在单元格C1中inputthis =getValues(B1:B5,1)
考虑到你的数据在A1:B5
范围内,而Cell C1
包含你正在寻找的数字。
在Cell D1
input以下数组公式,然后向下拖动/复制直到所需的行。
=IFERROR(INDEX($A$1:$A$5, SMALL(IF($C$1=$B$1:$B$5, ROW($B$1:$B$5)-MIN(ROW($B$1:$B$5))+1, ""), ROW(A1))), "")
作为一个数组公式,你必须通过按Ctrl + Shift + Enter来提交上面的公式。
单独使用公式可以使用助手列。
公式:
在D1
:
=""
在D2
向下:
=IF(B2=$B$1,D1&A2&", ",D1)
在C1
:
=LEFT(LOOKUP(2,1/(D:D<>0),D:D),LEN(LOOKUP(2,1/(D:D<>0),D:D))-2)