Fórmula do Excel: divida os números das unidades de medida -

Índice

Fórmula genérica

=MAX(ISNUMBER(VALUE(MID(A1,(1,2,3,4,5,6,7,8,9),1)))*(1,2,3,4,5,6,7,8,9))+1

Resumo

Para dividir um número de um valor de unidade, você pode usar uma fórmula baseada em várias funções: MAX, ISNUMBER, VALUE e MID. No exemplo mostrado, a fórmula em C5 é:

=MAX(ISNUMBER(VALUE(MID(B5,(1,2,3,4,5,6,7,8,9),1)))*(1,2,3,4,5,6,7,8,9))+1

Observação: esta é uma fórmula experimental que usa uma constante de matriz codificada, definida aqui para referência e comentários. Testado apenas casualmente, então tome cuidado ao usar ou adaptar.

Explicação

Às vezes, você encontra dados que misturam unidades diretamente com números (ou seja, 8 km, 12v, 7,5 horas). Infelizmente, o Excel tratará os números neste formato como texto, e você não poderá realizar operações matemáticas em tais valores.

Para separar um número de um valor unitário, você precisa determinar a posição do último número. Se você adicionar 1 a essa posição, terá o início do texto da unidade. Essa fórmula usa esse conceito para descobrir onde começa a unidade de medida.

No exemplo mostrado, a fórmula em C5 é:

=MAX(ISNUMBER(VALUE(MID(B5,(1,2,3,4,5,6,7,8,9),1)))*(1,2,3,4,5,6,7,8,9))+1

Esta fórmula usa a função MID para extrair os primeiros 9 valores em B5, um caractere por vez. O resultado é uma matriz como esta:

("8","0","v","","","","","","")

Em seguida, usamos a função VALUE para converter números em formato de texto em números reais. O resultado é:

(8,0,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!)

Executamos esta matriz por meio de ISNUMBER para obter:

(TRUE,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE)

Em seguida, multiplique isso por outra matriz com 9 números para obter:

(1,2,0,0,0,0,0,0,0)

Então usamos MAX para obter o maior valor, que é a posição do "último número".

Finalmente, adicionamos 1 à posição para obter a posição de "início da unidade".

Finalmente, usamos esta posição com as funções ESQUERDA e DIREITA padrão para separar os números das unidades:

=VALUE(LEFT(B5,C5-1)) // number =TRIM(RIGHT(B5,LEN(B5)-C5+1)) // unit

Observe que a constante de matriz de número codificada é um hack por conveniência e só manipulará valores brutos de até 9 caracteres de comprimento.

Bons links

Inspiração das fórmulas de Rick Rothstein no MrExcel

Artigos interessantes...