Extraindo uma lista de valores da coluna A, onde a coluna B contém um valor específico

1

Da seguinte tabela:

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

Eu quero extrair uma lista / string de todos os IDs com um 'Erro'. Em outras palavras, uma célula que se parece com isso:

004, 006, 009

Obrigado antecipadamente.

    
por huey 17.08.2016 / 04:02

2 respostas

0

Você pode usar o suplemento gratuito do Microsoft Excel Power Query (do Excel 2010) para filtrar e agregar seus IDs com erro.

Você pode transformar seus dados na interface do usuário. No entanto, você precisará modificar algumas etapas diretamente no Editor Avançado.

Aqui estão dois scripts (você pode colá-lo no editor avançado. Certifique-se de que a origem da sua tabela seja chamada de "Tabela1"):

O primeiro vai te dar esta saída: 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"

O segundo irá separar IDs pares e ímpares em duas filas simples:
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"

Experimente o Power Query! É IMO a inovação mais poderosa do Excel nos últimos dois anos (ao lado do Power Pivot).

    
por 01.09.2016 / 09:00
0

OK, eu descobri como criar uma coluna de todas as respostas corretas: cole isto em C1:

= IFERROR (ÍNDICE (A $ 2: A $ 10, PEQUENO (SE ($ B $ 2: $ B $ 10="Erro", LINHA (A $ 2: A $ 10) -ROW (A $ 2) +1), ROWS ( A $ 2: A2))), "")

Em seguida, arraste para C10 para ver todos os resultados, ou seja,

3
6
9

Ele não concatia o resultado, mas isso é bom o suficiente para mim por enquanto.

No entanto, não posso trabalhar como fazer duas condições, por exemplo, células na coluna B correspondem a "Erro" e valores na coluna A são números pares - alguma idéia?

    
por 19.08.2016 / 02:50