Excel - 从列中水平返回一行中的多个匹配值

时间:2014-10-17 11:38:47

标签: excel indexing match lookup

我有一个excel公式,应该可以工作,但返回#VALUE,我无法找出原因。

我有这张桌子:

       A        B
1 |          |     |
2 | Oranges  |  1  |
3 | Apples   |  2  |
4 | Grapes   |  3  |
5 | Oranges  |  4  |
6 | Apples   |  5  |
7 | Grapes   |  6  |
8 | Apples   |  7  |

我想检查A列中的匹配值,如“Apples”,“Oranges”等,并在一行中返回B列中的所有相应值:

输出应该是这样的,但我只得到#VALUE:

       A         B     C     D  
11 | Apples   |  2  |  5  |  7  |
12 | Oranges  |  1  |  4  | #NUM|

这是公式:

  

= INDEX($ B $ 2:$ B $ 8,小(IF($ A $ 11 = $ A $ 2:$ A $ 8,ROW($ A $ 2:$ A $ 8)-ROW($ A $ 2)+1) ,COLUMN(A1)))

2 个答案:

答案 0 :(得分:4)

我希望这个公式可以帮助你...你需要按Ctrl + shift + enter来使公式正常工作,你需要按名称订购PRODUCT列以使公式正常工作。

=IF(COLUMN()-4<=COUNTIF($A$2:$A$8,$D2),INDEX($B$2:$B$8,MATCH($D2,$A$2:$A$8,0)+COLUMN()-5),"")

-4引用了您要查找值的列,而-5是您要获取值的位置。

专栏&#34; c&#34;是空的

COL    A         B          C         D           E       F        G      H
    PRODUCT  DESCRIPTION         uniquevalues  descr1   descr2  descr3  descr4
    oranges      1                 oranges        1       2     
    oranges      2                 apples         3       4        5    
    grapes       6                 grapes         6       7     
    grapes       7                      
    apples       3                      
    apples       4                      
    apples       5                      

我希望现在还为时不晚:P ..你是受欢迎的。

答案 1 :(得分:0)

为避免#NUM错误,请使用此修改后的公式

=IFERROR(INDEX($B$2:$B$8,SMALL(IF($A$11=$A$2:$A$8,ROW($A$2:$A$8)-ROW($A$2)+1),COLUMN(A1))),"")