从 A 列中提取值列表,其中 B 列包含特定值

从 A 列中提取值列表,其中 B 列包含特定值

从下表可以看出:

ID     Status
001    Done
002    Done
003    Done
004    Error
005    Done
006    Error
007    Done
008    Done
009    Error

我想提取所有带有“错误”的 ID 的列表/字符串。换句话说,一个如下所示的单元格:

004, 006, 009

提前致谢。

答案1

您可以使用免费的 Microsoft Excel 插件Power Query(来自 Excel 2010)过滤并汇总有错误的 ID。

您可以通过 UI 转换数据。但是,您需要直接在高级编辑器中修改一些步骤。

这里有两个脚本(您可以将其粘贴到高级编辑器中。确保您的表格源称为“Table1”):

第一个会给你这个输出:004、006、009

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", type text}, {"Status", type text}}),
    #"Filtered Rows" = Table.SelectRows(#"Changed Type", each ([Status] = "Error")),
    #"Removed Other Columns" = Table.SelectColumns(#"Filtered Rows",{"ID"}),
    #"Transposed Table" = Table.Transpose(#"Removed Other Columns"),
    #"List ID" = Table.ToList(#"Transposed Table", Combiner.CombineTextByDelimiter(", "))
in
    #"List ID"

第二个将在两个单行上分离偶数和奇数 ID:
009
004、006

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", type text}, {"Status", type text}}),
    #"Filtered Rows" = Table.SelectRows(#"Changed Type", each ([Status] = "Error")),
    #"Added Custom" = Table.AddColumn(#"Filtered Rows", "IsEven", each if Number.IsEven(Number.From([ID])) = true then "even" else "uneven"),

    #"Filtered Even" = Table.SelectRows(#"Added Custom", each ([IsEven] = "even")),
    #"Removed Other Columns Even" = Table.SelectColumns(#"Filtered Even",{"ID"}),
    #"Transposed Table Even" = Table.Transpose(#"Removed Other Columns Even"),
    #"List Even" = Table.ToList(#"Transposed Table Even", Combiner.CombineTextByDelimiter(", ")),
    #"Table Even" =Table.FromValue(#"List Even"),

    #"Filtered Uneven" = Table.SelectRows(#"Added Custom", each ([IsEven] = "uneven")),
    #"Removed Other Columns Uneven" = Table.SelectColumns(#"Filtered Uneven",{"ID"}),
    #"Transposed Table Uneven" = Table.Transpose(#"Removed Other Columns Uneven"),
    #"List Uneven" = Table.ToList(#"Transposed Table Uneven", Combiner.CombineTextByDelimiter(", ")),
    #"Table Uneven" =Table.FromValue(#"List Uneven"),

    #"Appended Query" = Table.Combine({#"Table Uneven", #"Table Even"})
in
    #"Appended Query"

试试 Power Query!在我看来,这是过去几年 Excel 中最强大的创新(除 Power Pivot 外)。

答案2

好的,我已经知道如何创建一个柱子所有正确答案:将其粘贴到 C1 中:

=IFERROR(INDEX(A$2:A$10,SMALL(IF($B$2:$B$10="错误",ROW(A$2:A$10)-ROW(A$2)+1),ROWS(A$2:A2))),"")

然后向下拖到 C10 即可查看所有结果,即

3
6
9

它没有连接结果,但是现在对我来说已经足够了。

但是,我不知道该怎么做条件,例如,B 列中的单元格匹配“错误”A 列中的值是偶数-有什么想法吗?

相关内容