MS Excel: MIN e FIND / SEARCH

0

Estou tentando descobrir exatamente o que o Excel está fazendo com essas duas funções.

Eu tenho muitas linhas de strings em uma única coluna. Eu quero puxar o primeiro numérico nessas strings. O primeiro número pode ser 0,1,2,3 ... 9 e o comprimento total da string varia. Eu quero encontrar o primeiro número e devolvê-lo e tudo depois dele. Eu encontrei o seguinte código no google enquanto pesquisava como encontrar o primeiro numérico em uma string, mas eu não entendo como ele funciona. As únicas alterações que fiz foram adicionadas uma ação de falha à instrução IF.

=MIN(IF(ISNUMBER(FIND({1,2,3,4,5,6,7,8,9,0},A1))=TRUE,FIND({1,2,3,4,5,6,7,8,9,0},A1),"N/A"))

Ao ler isso, ele diz o seguinte: Há algum número na matriz {1,2,3,4,5,6,7,8,9,0} encontrado na minha string? Se houver, então ISNUMBER() = TRUE passará e o código executará a segunda função FIND() . Em seguida, ele passa os resultados da segunda função FIND() (ou seja, as posições de todos os números na sequência) para a função MIN() que leva o mínimo (ou seja, a primeira posição).

Isso funciona corretamente, mas o que eu não entendo é que, se eu fizer isso sem a instrução IF, isso me dará um erro #VALUE . Em outras palavras, se eu fizer isso

=MIN(FIND({1,2,3,4,5,6,7,8,9,0},A1))

Eu recebo #VALUE na célula de saída. Por quê? Acabei de tirar a declaração IF até onde eu posso ver.

Alguém pode explicar o que estou perdendo aqui. É a maneira pela qual o Excel passa informações da função IF() ?

    
por Nukesub 03.04.2016 / 22:50

1 resposta

0

Min está fornecendo o mínimo de números na sua string A1 , então se A1 contiver letras e números (por exemplo 123text0 ) Find sem If e isnumeric() colocarão #value no lugar dos caracteres e número no lugar dos dígitos.

MIN(IF(ISNUMBER(FIND({1,2,3,4,5,6,7,8,9,0},A1))=TRUE,FIND({1,2,3,4,5,6,7,8,9,0},A1),"N/A")) está colocando N/A em vez de #value e Min ignorará o texto N/A , mas não poderá ignorar o erro #value .

If() está testando o Find() para números, portanto, se isnumeric for true , ele gravará os dígitos, se não, ele gravará N/A Min(1,2,3,"N/A","N/A"..)=1 , mas quando você remover If o Min(1,2,3,#value,#value..)=#value .

    
por 03.04.2016 / 23:29