【问题标题】:Create list of row names based on search criteria根据搜索条件创建行名列表
【发布时间】:2018-09-25 14:46:44
【问题描述】:

我有以下 Excel 电子表格:

     A            B     C        D      E            F            G        H
1                 Q1     Q2      Q3     Q4   Search criteria:     60     Asset 2
2   Asset 1       15     85      90     70                               Asset 3
3   Asset 2       40     80      45     60                               Asset 3
4   Asset 3       30     60      55     60                               Asset 5                       
5   Asset 4       12     72      25     15
6   Asset 5       60     48      27     98
7 

Cells A1:E6 中,我有不同的资产,它们在Q1-Q4 季度的表现。
Column H 中,我想要一个与Cell G1 中的搜索条件匹配的所有资产的列表。
在这种情况下,搜索条件是60,可以在Cells A1:E6 中找到Assets 235

如您所见,搜索条件可能连续存在多次(如在Row 4 中)。因此,我希望资产在列表中列出两次(如 Asset 3)。

您对可以创建此列表的公式有任何想法吗?

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

    在 H1 试试这个

    =INDEX(A:A,AGGREGATE(15,7,ROW($B$2:$E$6)/($B$2:$E$6=$G$1),ROW(1:1)))
    

    然后抄下来。


    如果您使用的是旧版本的 Excel,则可以使用 SMALL 的数组版本来完成:

    =INDEX(A:A,SMALL(IF($B$2:$E$6=$G$1,ROW($B$2:$E$6)),ROW(1:1)))
    

    作为数组公式,退出编辑模式时需要使用 Ctrl-Shift-Enter 确认,而不是 Enter。

    【讨论】:

    • 嗨,斯科特,感谢您的回答。如果我使用的是 MS Excel 2007,是否还有没有 AGGREGATE 函数的解决方案。
    • 酷。感谢您的额外帮助。
    • 嗨,斯科特,如果数组不在单元格 A1:E6 中,是否有任何技巧可以修改公式。例如,我将数组放入单元格 C5:G10。因此,我还将您的公式更改为: =INDEX($C$5:$C$10,SMALL(IF($D$5:$G$10=$I$5,ROW($D$5:$G$10)),ROW( $C5:$G5))) 但现在我只得到#NUM!错误?
    • 首先$C$5:$C$10 应该只是C:C 接下来第二个ROW($C5:$G5) 应该从ROW(1:1) 开始看我上面的公式。这是一个计数器,不是真正的范围引用,它需要从 1 开始并且是相对的,因此它会随着向下复制而增加。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多