想要在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 D1input以下数组公式,然后向下拖动/复制直到所需的行。

 =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)