在excel中提取给定起始值的列表的一部分

时间:2015-05-20 19:56:49

标签: excel

我想提取一个列表的一部分,给出通过索引/匹配组合或vlookup函数找到的起始值。但是,因此仅返回初始值,但列表中的后续值也是有意义的,并且应遵循此初始找到的值。有没有办法组合返回子数组的函数?提前感谢您的帮助。最诚挚的问候,奥利弗

2 个答案:

答案 0 :(得分:0)

假设我们有以下数据:

enter image description here

我们想要英国人, VLOOKUP()只会返回 William。如果我们想要的不仅仅是 William < / em>,然后在 C1 中输入:

<强> UK

并在 C2 中输入数组公式:

=IFERROR(INDEX($B$2:$B$22, SMALL(IF(C$1=$A$2:$A$22, ROW($A$2:$A$22)-MIN(ROW($A$2:$A$22))+1, ""), ROW(A1))),"")

并复制下来:

enter image description here

必须使用 Ctrl + Shift + 输入输入

数组公式,而不仅仅是 Enter key。

答案 1 :(得分:0)

1。增加行/列计数选项

1a上。起始值,子列表长度

让我们假设这个样本数据和结果格式:

 A          B                 C      D
---------------------------------------------
1|John      Start Value       Amy    Amy
2|Jane      Sub-List Length   3      Amber
3|Amy                                Chris
4|Amber                 
5|Chris                 
6|Dan                   
7|Bob                               

您可以使用以下公式并自动填充来实现此目的:

=IFERROR(INDEX($A:$A,(MATCH($C$1,$A:$A,0))+IF(ROWS($1:1)<=$C$2,ROWS($1:1)-1,#VALUE!)),"")       

<小时/>

1b中。起始值,结束值

样本数据和结果格式:

 A          B             C      D
---------------------------------------------
1|John      Start Value   Amy    Amy
2|Jane      End Value     Dan    Amber
3|Amy                            Chris
4|Amber                          Dan
5|Chris                 
6|Dan                   
7|Bob                               

使用此公式并自动填充:

=IFERROR(INDEX($A:$A,(MATCH($C$1,$A:$A,0))+IF(ROWS($1:1)<=(MATCH($C$2,$A:$A,0)-MATCH($C$1,$A:$A,0)+1),ROWS($1:1)-1,#VALUE!)),"")    

1c上。起始值,列表结尾

<小时/> 样本数据和结果格式:

 A          B             C      D
---------------------------------------------
1|John      Start Value   Chris  Chris
2|Jane                           Dan
3|Amy                            Bob
4|Amber                              
5|Chris                 
6|Dan                   
7|Bob                               

使用此公式并自动填充:

=IFERROR(INDEX($A:$A,(MATCH($C$1,$A:$A,0))+IF(ROWS($1:1)<=(COUNTA($A:$A)-MATCH($C$1,$A:$A,0)+1),ROWS($1:1)-1,#VALUE!)),"")

<小时/> 注意:对于选项1a - 1c,如果您希望获得水平列表结果,请将ROWS($1:1)替换为COLUMNS($A:A)并将自动填充

2。使用预定义数组:

注意:这些选项要求您选择希望值所在的范围,然后使用 ctrl + shift + < kbd>输入输入数据。

<小时/>

2a上。垂直子列表,固定长度:

样本数据和结果格式,固定长度为4

 A          B             C      D
---------------------------------------------
1|John      Start Value   Amy    Amy 
2|Jane                           Amber
3|Amy                            Chris
4|Amber                          Dan 
5|Chris                 
6|Dan                   
7|Bob

选择单元格D1:D4并输入以下公式:

=INDEX($A:$A,MATCH($C$1,$A:$A,0)+TRANSPOSE({0,1,2,3}))

然后使用 ctrl + shift + 输入

<小时/>

2B。水平子列表,固定长度:

样本数据和结果格式,固定长度为4

 A          B             C      D      E       F      G
----------------------------------------------------------
1|John      Start Value   Amy    Amy    Amber   Chris  Dan
2|Jane                           
3|Amy                            
4|Amber                           
5|Chris                 
6|Dan                   
7|Bob

与没有TRANSPOSE的上一个公式相同并选择单元格D1:G1

=INDEX($A:$A,MATCH($C$1,$A:$A,0)+{0,1,2,3})

再次,使用 ctrl + shift + 输入

<小时/> 注意:要增加长度,请向数组添加其他值{0,1,2,3, ...}