Excel – 从列中返回多个匹配值,水平排列在一行中

我有一个Excel公式,这应该工作,但返回#VALUE,我不明白为什么。

我有这张桌子:

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

我想检查列A中的匹配值,如“苹果”,“橙子”等,并将列B中的所有对应值返回一行:

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

  ABCD 11 | Apples | 2 | 5 | 7 | 12 | Oranges | 1 | 4 | #NUM| 

这是公式:

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

我希望这个公式可以帮助你..你需要按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是要获取值的位置。

列“c”是空的

 COL ABCDEFGH 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 ..不客气。

要避免#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))),"")