Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
要将多个值从索引数组中获取到excel中的单个单元格中吗_Excel_Excel Formula - Fatal编程技术网

要将多个值从索引数组中获取到excel中的单个单元格中吗

要将多个值从索引数组中获取到excel中的单个单元格中吗,excel,excel-formula,Excel,Excel Formula,我试图找到一种方法,从一个数组中获取多个值以显示在一个单元格中 比如说,我有下面两列 a 1 b 2 C1 d 3 E2 我希望所有的值形成第一列,其中第二列是1 vlookup和index with match都只提供第一个匹配实例,有没有办法用函数实现这一点,还是必须用VBA在宏中创建 谢谢考虑到您的数据在范围A1:B5内,单元格C1包含您要查找的号码 在单元格D1中输入以下数组公式,并根据需要向下拖动/复制到行 =IFERROR(INDEX($A$1:$A$5, SMALL(IF($C$1

我试图找到一种方法,从一个数组中获取多个值以显示在一个单元格中

比如说,我有下面两列

a 1

b 2

C1

d 3

E2

我希望所有的值形成第一列,其中第二列是1

vlookup和index with match都只提供第一个匹配实例,有没有办法用函数实现这一点,还是必须用VBA在宏中创建


谢谢

考虑到您的数据在范围
A1:B5
内,
单元格C1
包含您要查找的号码

在单元格D1中输入以下数组公式,并根据需要向下拖动/复制到行

=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来提交上述公式


如果希望所有结果显示在一个单元格中,可以使用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中输入此
=getValues(B1:B5,1)


使用辅助列仅使用公式即可实现此功能

公式:

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)
=LEFT(查找(2,1/(D:D0),D:D),LEN(查找(2,1/(D:D0),D:D))-2)

这本质上与带有匹配的索引相同,它仍然只返回一个值,如果它是所需的值,则返回ony。我要寻找的是这样一种方法,即使用此数据集,如果搜索的值为2,则返回be。@MarcL-如果向下拖动公式,它将给出所需的结果。@MarcL-还是希望所有结果都在同一个单元格中?我需要所有结果都在一个单元格中,其想法是基于一个通用的次要项目创建一个名称的合并列表。在本例中,每个教师的学生列表,因此该列表可以在透视表中作为一行使用。除非您有Excel 2016,否则仅使用工作表公式无法在单个单元格中显示结果。谢谢,非常有用的代码,虽然我希望避免vba路径,因为我想在以后将其转换为google表单,并且至少大多数内置函数不需要重新编程!是的,我知道如何在Excel和Access中广泛使用VBA编辑器-I程序。对于一个公式,你可以这样使用:
=CONCATENATE(如果(B1=1,A1&“,”),如果(B2=1,A2&“,”),如果(B3=1,A3&“,”),如果(B4=1,A4&“,”),如果(B5=1,A5)”,
,但这项工作……不太可行。不幸的是,实时数据超过1000行,对于嵌套的代码来说太大了。是的,看起来VBA是解决问题的方法。这是一个真正的实际问题。