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

Posted

技术标签:

【中文标题】Excel - 从一列中水平返回一行中的多个匹配值【英文标题】:Excel - Return multiple matching values from a column, horizontally in one row 【发布时间】:2014-12-12 23:46:00 【问题描述】:

我有一个 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, SMALL(IF($A$11=$A$2:$A$8, ROW($A$2:$A$8)-ROW($A$2)+1) , 列(A1)))

【问题讨论】:

这是一个数组公式。要将公式作为数组公式输入,请在单元格中键入公式,然后同时按 CTRL SHIFT 和 ENTER 键,而不是直接按 ENTER。 这就是解决方案!非常感谢!您可以将其作为答案,我会接受。 【参考方案1】:

我希望这个公式对您有所帮助.. 您需要按 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    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.. 不客气。

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于Excel - 从一列中水平返回一行中的多个匹配值的主要内容,如果未能解决你的问题,请参考以下文章

Excel VBA:从一列中的字符串中查找和删除多个值

连接两个表并从一列返回多个匹配项的 SQL 查询?

如何从一列中查找每个值并使用“;”返回电子邮件地址分隔器

返回值的公式,其中一列中的第一个单词与另一列的最后四位匹配

Excel vba将公式从一列自动填充到Excel中的最后一列

根据另一列的位置从一组列中返回值