Excel - função array para remover espaços

1

Eu tenho uma coluna de itens de texto que podem conter espaços (células vazias) entre os itens. Em outra planilha, estou tentando usar uma fórmula de matriz sobre o intervalo existente para filtrar esses espaços vazios.

Aqui está a fórmula:

{=IFERROR(INDEX(Input_Page!$C$2:$C$61,SMALL(IF(ISTEXT(Input_Page!$C$2:$C$61),ROW(Input_Page!$C$2:$C$61),""),ROW(Input_Page!C2))),"")}

O que foi inspirado por este site.

Em uma pasta de trabalho em branco, isso funciona como esperado, no entanto, quando tento usar a fórmula em uma pasta de trabalho existente, ela coloca células contendo '0' na lista gerada pela minha matriz. Tanto a coluna de entrada como a coluna de saída de geração são formatadas como texto. Eu preciso que essas colunas vazias não sejam exibidas na minha região de saída.

região de entrada
regra de saída

Qualquer ajuda ou conselho seria bem apreciado!

    
por Benji Fuse 29.01.2018 / 16:38

2 respostas

1

Esta pergunta foi feita antes, e uma resposta muito detalhada é dada aqui .

Essa resposta inclui soluções de fórmulas manuais, VBA e matriz. Este último é referenciado de este site , mas para ir direto ao ponto, a fórmula dada lá (ligeiramente modificada para ajustar seus dados) é:

=INDEX($B$1:$B$21, SMALL(IF(ISBLANK($B$1:$B$21), "", ROW($B$1:$B$21)-MIN(ROW($B$1:$B$21))+1), ROW(A1)))

A saída resultante é mostrada na coluna C na tabela abaixo. Se você quiser evitar o # NÚM! erros, coloque a fórmula acima em IFERROR (), que dará os resultados na coluna D:

=IFERROR(INDEX($B$1:$B$21, SMALL(IF(ISBLANK($B$1:$B$21), "", ROW($B$1:$B$21)-MIN(ROW($B$1:$B$21))+1), ROW(A1))),"")

    
por 29.01.2018 / 17:43
0

Você pode tentar agrupar tudo em uma função IF,

=IF( original formula = "", "", original formula )

Assim, se for igual a branco, em vez de inserir 0, ele retornará em branco.

{=IF(IFERROR(INDEX(Input_Page!$C$2:$C$61,SMALL(IF(ISTEXT(Input_Page!$C$2:$C$61),ROW(Input_Page!$C$2:$C$61),""),ROW(Input_Page!C2))),"")="","",IFERROR(INDEX(Input_Page!$C$2:$C$61,SMALL(IF(ISTEXT(Input_Page!$C$2:$C$61),ROW(Input_Page!$C$2:$C$61),""),ROW(Input_Page!C2))),"")}

OR

Se o valor real não for importante, apenas a sugestão visual, você poderá criar um formato numérico personalizado, de modo que um 0 seja exibido como um espaço em branco.

usando ##;##;""

    
por 29.01.2018 / 16:52