Excel retornando #VALUE! erro ao mudar para a fórmula de matriz

0

Eu tenho quatro sub-fórmulas concatenadas em uma fórmula maior:

=(IF(INDIRECT("Lawmakers2017!F"&ROW())=0,(IFERROR(IF(FIND(".",INDIRECT("Lawmakers2017!D"&ROW()))=2,INDIRECT("Lawmakers2017!E"&ROW()),INDIRECT("Lawmakers2017!D"&ROW())),INDIRECT("Lawmakers2017!D"&ROW()))),INDIRECT("Lawmakers2017!F"&ROW()))&" "&INDIRECT("Lawmakers2017!H"&ROW())&" "&INDIRECT("Lawmakers2017!I"&ROW())&" ("&INDIRECT("Lawmakers2017!BH"&ROW())&")")

A fórmula funciona bem, mas quando pressiono Ctrl + Deslocamento + Enter para ser executado como uma matriz, recebo uma #VALUE! erro que não consigo explicar.

Quando eu quebro a fórmula em fórmulas individuais sendo concatenadas, cada uma delas também retorna seu valor, mesmo quando eu a converto em uma fórmula de matriz.

Até agora, consegui rastrear o erro para a primeira sub-fórmula:

=(IF(INDIRECT("Lawmakers2017!F"&ROW())=0,(IFERROR(IF(FIND(".",INDIRECT("Lawmakers2017!D"&ROW()))=2,INDIRECT("Lawmakers2017!E"&ROW()),INDIRECT("Lawmakers2017!D"&ROW())),INDIRECT("Lawmakers2017!D"&ROW()))),INDIRECT("Lawmakers2017!F"&ROW())))

Tanto o [value_if_true] quanto o [value_if_false] podem ser transformados em fórmulas de matriz sem um problema, mas quando eu os uso como condições em uma instrução IF, não posso transformar essa instrução IF em uma matriz. Mesmo se eu acabar com eles e simplesmente usar 1 e 0 a, ainda recebo #VALUE! .

Alguma idéia de como corrigir isso?

    
por bdb484 04.01.2017 / 22:30

1 resposta

1

Eu estava tendo o mesmo problema. A fórmula "Row ()" na instrução parece estar causando o "#VALUE!" erro como uma fórmula de matriz dentro da instrução "IF ()". Depois de avaliar "ROW ()", o número da linha é automaticamente cercado por "{}" e transferido para a fórmula "INDIRECT (...)", que parece não gostar.

Encontrei uma maneira de resolver esse problema substituindo a instrução "ROW ()" na fórmula original por uma referência a uma célula com o número da linha de que preciso. Por exemplo, sua fórmula pode ser atualizada para:

=(IF(INDIRECT("Lawmakers2017!F"&A1)=0,(IFERROR(IF(FIND(".",INDIRECT("Lawmakers2017!D"&A1))=2,INDIRECT("Lawmakers2017!E"&A1),INDIRECT("Lawmakers2017!D"&A1)),INDIRECT("Lawmakers2017!D"&A1))),INDIRECT("Lawmakers2017!F"&A1)))

... onde a célula A1 tem o número da linha necessário. Você poderia colocar a fórmula "ROW ()" em uma coluna adjacente na mesma linha da fórmula original e fazer referência a ela.

    
por 08.05.2017 / 17:55