Como fazer corretamente a IFNA na fórmula de matriz?

2

Plano de fundo

Eu tenho um problema em que quero referenciar um intervalo nomeado e exibir seus valores. O intervalo é uma lista de valores, mas não sei de antemão quantos elementos estão na lista. Vamos dizer que há entre 1 e 8 valores na lista.

Minha maneira de fazer isso é usar uma fórmula de matriz em um intervalo longo de 8 e usar IFNA () para mascarar a saída # N / A. É bem aceitável que eu tenha algum espaço vazio na saída, mas exibir # N / A não parece tão profissional. O ISNA não funciona e eu suspeito que seja por causa da fórmula de matriz mudando o comportamento do ISNA. Exemplo abaixo na imagem.

Limitaçõesnasolução

OsdadosserãousadosemTabelasDinâmicasemumestágioposterior,entãosimplesmentemascararosdadoscomooinvisívelnãofará-eurealmentenãoqueroobternenhumvalor#N/A.Cadeiavaziaéboaembora;stringvaziatambémnãoéumarespostacorreta,maspelomenosfalhaumpoucomaisgraciosamente.

Asoluçãotemqueserrelativamentefácildemanterparaoutraspessoas,jáqueestoudesenvolvendoomodeloparaalgunscolegaseelespodemquererfazermaisalteraçõesemumestágioposterior.Portanto,euqueroevitarfórmulasmuitolongaseusoextensivodogerenciadordenomes.

Pergunta

Qualéamaneira"correta" de simplesmente copiar a matriz "intervalo de tamanho variável sem obter N / A?

... onde "apropriado" significa fórum simples e compacto que é fácil de manter e não contém dados ocultos.

    
por LudvigH 16.03.2017 / 10:15

3 respostas

1

Use INDEX em vez disso, coloque isso na primeira célula da saída e copie o número desejado de linhas:

=IFERROR(INDEX(rng_1,ROW(1:1)),"")

O ROW (1: 1) irá iterar quando for copiado puxando o próximo na linha. Quando acabar, ele lançará um erro e "" será colocado em seu lugar.

    
por 16.03.2017 / 14:27
0

What is the proper way to simply "array copy" a range of variable size without getting N/A ?

Não acho que exista um, mas talvez alguns outros métodos funcionem para o seu problema, como a formatação condicional da coluna com o array ou o uso de uma fórmula sem matriz.

Formataçãocondicional:

Formatecondicionalmenteumacoluna/intervaloparaalteraraformataçãodotextodacéluladeerroparabrancoouoqueforcombinadocomacordasuacélula.

Exemplodefórmula:

Useumafórmulaquenãosejadematrizefaçacomqueafórmulamanipuleoerro.

=IFERROR(IF(INDEX(Pets,ROWS($J$1:J1),COLUMNS($J$1:J1))="","",INDEX(Pets,ROWS($J$1:J1),COLUMNS($J$1:J1))),"")
    
por 16.03.2017 / 11:13
0

Com a ajuda da resposta de Scott Craner, decidi pelo seguinte:

Deve ser um pouco menos propenso a erros, pois o comando ROWS faz referência à mesma área em que a saída é gravada. Dessa forma, não se deve inserir linhas destruindo a fórmula muito mal, sem perceber.

Não estou contente com esta solução, mas acho que terá que ser feito ...

    
por 17.03.2017 / 19:31