Excel 从较大列表中的数据创建较小的列表

Excel 从较大列表中的数据创建较小的列表,excel,excel-formula,excel-2010,Excel,Excel Formula,Excel 2010,我需要一些帮助来使用Excel中较大列表中包含的信息创建列表。例如,在单元格A1:A15中,我有一个人的名字。在单元格B1:B15中,我有一个下拉框,指示通过/失败。我只对那些失败的人感兴趣,那么有没有办法创建一个较小的列表,根据B1:15单元格中是否有失败的名称来包含他们的姓名?提前感谢您的帮助。使用此公式,在E2中说: =INDEX($A$1:$A$15,SMALL(IF($B$1:$B$15="Fail",ROW($B$1:$B$15)),ROW()-ROW($E$2)+1)) 按CTR

我需要一些帮助来使用Excel中较大列表中包含的信息创建列表。例如,在单元格A1:A15中,我有一个人的名字。在单元格B1:B15中,我有一个下拉框,指示通过/失败。我只对那些失败的人感兴趣,那么有没有办法创建一个较小的列表,根据B1:15单元格中是否有失败的名称来包含他们的姓名?提前感谢您的帮助。

使用此公式,在
E2
中说:

=INDEX($A$1:$A$15,SMALL(IF($B$1:$B$15="Fail",ROW($B$1:$B$15)),ROW()-ROW($E$2)+1))
按CTRL+SHIFT+ENTER对其进行求值并向下拖动

另一种方法是过滤列
B
中的
Fail
值,并仅复制可见行

尝试以下小宏:

Sub SmallerList()
    K = 1
    For Each r In Range("B1:B15")
        If r.Value = "Fail" Then
            Range("C" & K).Value = r.Offset(0, -1).Value
            K = K + 1
        End If
    Next r
End Sub

非常感谢你的帮助,工作得很有魅力!你给我的配方有点问题。我忘了提到我有多个列,每个名称都有通过/失败。因此,我需要一个公式,当一个人没有通过任何测试时,它将返回相同的列表。因此,如果Name1有五个测试,分别是pass、pass、pass、fail、fail,我希望他们的名字出现在一个列表中,对于通过了每个测试的人,他们将被排除在列表之外。再次感谢您的帮助。请使用以下内容:
=INDEX($A$1:$A$15,SMALL(如果($B$1:$B$15=“Fail”)+($C$1:$C$15=“Fail”)+($D$1:$D$15=“Fail”)、ROW($B$1:$B$15”)、ROW()-ROW($E$2)+1))
使用CTRL+SHIFT+ENTERTotal life saver,再次感谢您的帮助。