Comportamento incomum das fórmulas do Excel

1

Consegui fazer o seguinte funcionar:

=IFERROR(INDEX(CUSIP2,SUMPRODUCT(ISNUMBER(SEARCH(CUSIP2,O2))*ROW($2:$5158))),"")

O que isto faz é verificar o conteúdo de uma célula em uma lista, e se uma palavra na lista aparecer em qualquer lugar na célula, isso me dá a palavra que é. Ótimo! Idealmente, também me daria um espaço em branco se não houver correspondências na célula. É aqui que estou com problemas.

Quando há uma correspondência, funciona perfeitamente. Sem um fósforo, ele lançará uma palavra aleatória em vez de dar um espaço em branco. Por exemplo, está me dando SWPC12374 na célula "fio de saída para o CLIENTE no BANCO - entrada de contrapartida não lançada no SISTEMA"

Agora, o mistério se aprofunda. As palavras erradas são sempre diferentes. As palavras erradas lançadas correspondem diretamente a onde estão na lista. Por exemplo, [WORD 1] é lançado na primeira célula em que tenho a equação e deve estar em branco. [PALAVRA 2] é lançado na segunda célula onde tenho a equação e também deve estar em branco. Etc. [WORD 1] e [WORD 2] são as duas primeiras entradas na lista CUSIP2 e as outras entradas incorretas são as entradas correspondentes na lista CUSIP2.

Como alternativa, eles também estão na mesma linha. Portanto, a primeira equação ocorre na segunda linha e o primeiro termo na lista ocorre na segunda linha.

Agora, quando eu investigar com o solucionador de fórmulas, ele termina nitidamente com ÍNDICE (CUSIP2,0) - então, lança a palavra incorreta, se o erro não o pegar, e felizmente coloca a palavra errada.

Estou enlouquecendo tentando rastrear esse erro e não consigo entender por que o excel está fazendo isso. Por favor ajude. Meu google-fu falhou em mim (se eu soubesse os termos apropriados para procurar por isso)

    
por Selkie 08.03.2017 / 23:57

1 resposta

0

O Excel INDEX não gosta de 0 como um número de índice. Aqui está um exemplo que corresponde ao seu descrption:

Name 'Cups2'    INDEX(cups2,0)  INDEX(cups2,1)
hi              hi              hi
go              go              hi
now             now             hi
three           three           hi
five            five            hi
gal             gal             hi

Você pode editar seus dados para que a primeira entrada no intervalo CUSPID2 seja ""? Em seguida, você pode modificar a fórmula para retornar a primeira entrada quando o índice for 0:

=INDEX(CUSIP2,MAX(1,SUMPRODUCT(ISNUMBER(SEARCH(CUSIP2,O2))*ROW($2:$5158))))
    
por 09.03.2017 / 01:05